标签:names cto rmi sch containe 进入 机器 调整 root权限
搞清楚pv,pvc
pv = PersistentVolume 持久化存储控制器,面向集群而不是namespace。
pvc = PersistentVolumeClaim 对接pod与pv,
关系,官方说明
A PVC to PV binding is a one-to-one mapping, using a ClaimRef which is a bi-directional binding between the PersistentVolume and the PersistentVolumeClaim
大体意思如下:pvc与pv的绑定关系是一一对应的。注意!这里的一一对应是每个pvc只有一个pv,但pv可以对应多个pvc。这一点从Access Modes包含ReadWriteMany就可以看出来。
这篇文章只针对简单的“静态存储”,不包含“动态存储”部分。
pvc与pv对应问题。pvc会搜索pv,找到没有被绑定,资源要求又一致,如果添加了label,pvc又设置了matchLabel属性的时候,会自动绑定。 更具体的,会在NFS存储(复杂版本)中介绍。
$yum install nfs-utils -y
$systemctl enable rpcbind nfs
$systemctl start rpcbind nfs
$mkdir /data/nfs
$chown -R nfsnobody.nfsnobody /data/nfs
$vim /etc/export
/data/nfs 192.168.56.0/24(rw,async,all_squash)
/data/nfs/mysql 192.168.56.0/24(rw,async,no_root_squash,fsid=0) # 这里很重要,MYSQL会修改目录权限所以必须放宽ROOT权限
$systemctl restart nfs
cd $HOME
mkdir nfs
sudo mount -t nfs 192.168.56.4:/data/nfs nfs
创建给MySQL用的存储空间mysql-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
nfs:
path: /data/nfs/mysql
server: 192.168.56.4
$kubectl create -f mysql-pv.yaml
$kubectl get pv mysql-pv
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM REASON AGE
mysql-pv 5Gi RWO Recycle Available 3s
创建mysql-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pvc
namespace: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
$kubectl create -f mysql-pvc.yaml
NAME STATUS VOLUME CAPACITY ACCESSMODES AGE
pvc/mysql-pvc Bound mysql-pv 5Gi RWO 22s
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM REASON AGE
pv/mysql-pv 5Gi RWO Recycle Bound default/mysql-pvc 2m
修改mysql-rc.yaml(参见无脑系列-最小集群搭建)
apiVersion: v1
kind: ReplicationController
metadata:
name: mysql-rc
spec:
replicas: 1
selector:
app: mysql-pod
template:
metadata:
labels:
app: mysql-pod
spec:
containers:
- name: mysql
image: mysql:5.6
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123"
volumeMounts:
- mountPath: "/var/lib/mysql"
name: mysql-data
volumes:
- name: mysql-data
persistentVolumeClaim:
claimName: mysql-pvc
$kubectl create -f mysql-rc.yaml
$kubectl get rc mysql-rc
NAME DESIRED CURRENT READY AGE CONTAINER(S) IMAGE(S) SELECTOR
mysql-rc 1 1 1 16s mysql mysql:5.6 app=mysql-pod
至此,带持久化存储的MySQL实例已经运行在集群中。
一定要再验证一下的话进入NFS服务目录发现mysql数据已经出现在目录中
$cd /data/nfs/mysql && ls
auto.cnf ibdata1 ib_logfile0 ib_logfile1 mysql performance_schema
mysql-rc创建不成功,报告“changing ownership of ‘/var/lib/mysql/‘: Operation not permitted”
解答:请参考NFS的export部分,挂载给MySQL的目录,一定要加入no_root_squash,fsid=0。不然就会报告上面的错误
如果已经做了调整,请重启nfs服务,删除mysql-rc。重新创建
诊断技巧
mysql-rc创建不成功,xxxx代表运行时的编号
$kubectl describe pod mysql-rc-xxxx
$kubectl log mysql-rc-xxxx
查看pod所在机器、错误日志
进入pod所在Node,执行df命令查看挂载是否成功
标签:names cto rmi sch containe 进入 机器 调整 root权限
原文地址:https://www.cnblogs.com/smokelee/p/12444956.html