大道至简

学必求其心得,业必贵于专精。

0%

consul部署

一、hosts配置加入harbor仓库地址

1
2
3
4
192.168.147.35  alpha-pack.51iwifi.com
192.168.195.3 k8s-alpha-node2
192.168.195.70 dev-harbor.51iwifi.com
192.168.195.2 alpha-harbor.51iwifi.com

二、docker地址修改

1
vi /etc/docker/daemon.json

三、nfs搭建,master节点执行即可

路径:/k8s,文件
1).安装NFS服务

1
2
env http_proxy=http://172.200.96.179:3128  yum install  -y  nfs-utils
env http_proxy=http://172.200.96.179:3128 yum install -y rpcbind

2).设置共享文件夹

1
2
mkdir -p /nfs/data/
chmod 755 /nfs/data

3).配置文件修改

1
2
3
4
vim /etc/exports加入以下内容:
/nfs/ *(async,insecure,no_root_squash,no_subtree_check,rw)
/nfs/data/ *(async,insecure,no_root_squash,no_subtree_check,rw)
使配置生效:exportfs -r

4).启动服务

1
2
3
4
systemctl start rpcbind 
systemctl start nfs
systemctl enable rpcbind # 设置开机启动
systemctl enable nfs-server.service # 设置开机启动

5).把dev-harbor.51iwifi.com/k8s-depend/quay.io/external_storage/nfs-client-provisioner:latest镜像加载到各个节点上
6).kubectl create -f cluster-admin.rbac.yaml 创建权限(以下为cluster-admin.rbac.yaml内容)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-app: dcm-rbac
name: k8s-admin
namespace: kube-system

---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: k8s-admin-crb
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: k8s-admin
namespace: kube-system

7).kubectl create -f nfs-client-provisioner.yaml创建nfs-client-provisioner(以下为nfs-client-provisioner.yaml内容)
kind: Deployment
apiVersion: apps/v1
metadata:
name: nfs-client-provisioner
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
app: nfs-client-provisioner
strategy:
type: Recreate
template:
metadata:
labels:
app: nfs-client-provisioner
spec:
serviceAccountName: k8s-admin
containers:
- name: nfs-client-provisioner
image: dev-harbor.51iwifi.com/k8s-depend/quay.io/external_storage/nfs-client-provisioner:latest
imagePullPolicy: IfNotPresent
volumeMounts:
- name: nfs-client-root
mountPath: /persistentvolumes
env:
- name: PROVISIONER_NAME
value: fuseim.pri/ifs
- name: NFS_SERVER
value: 172.20.131.251
- name: NFS_PATH
value: /nfs/data
volumes:
- name: nfs-client-root
nfs:
server: 172.20.131.251
path: /nfs/data

8).kubectl create -f nfs-client-class.yaml 创建storageclass(以下为nfs-client-class.yaml内容)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: managed-nfs-storage
provisioner: fuseim.pri/ifs
9).创建pvc使用对应nfs-client-provisioner验证nfs是否配置成功
kubectl create -f nfs-client-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-client-pvc
namespace: kube-system
spec:
accessModes:
- ReadWriteMany
storageClassName: managed-nfs-storage
resources:
requests:
storage: 100Mi

. 查看pvc 是否自动关联上pv

1
kubectl delete pvc nfs-client-pvc -n kube-system 验证结束后删除pvc

四、consul pod创建

1
helm install consul .

五、consul配置导出

1
kubectl exec -it consul-0 consul kv export > test`date +%y%m%d`.json

六、consul配置导入

1
2
3
kubectl cp testvideo.json consul-0:/
kubectl exec -it consul-0 sh
consul kv import @testvideo.json