微服务——安装cephfs+consul集群
参考:k8s部署consul集群 | 虫子个人博客基本内容同参考连接一致,只是在consul.yaml中略微改动。参考文档中存储是挂载的nfs,我这里是用的cephfs,修改内容如下:volumeClaimTemplates:- metadata:name: consulnamespace: cephfsannotations:volume.beta.kubernetes.io/storage-c
基本内容同参考连接一致,只是在consul.yaml中略微改动。参考文档中存储是挂载的nfs,我这里是用的cephfs,修改内容如下:
volumeClaimTemplates:
- metadata:
name: consul
namespace: cephfs
annotations:
volume.beta.kubernetes.io/storage-class: "cephfs" //这里根据自己部署的storageclass命名实际填写
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
我这里的cephfs是namespace是在cephfs下,具体原因可能和cephfs-provisioner创建的位置有关,我尝试过虽然sc没有namespace(ns)约束,但是在其他namespace下部署pvc是不能动态创建pv的,需要将pvc部署在和cephfs-provisioner同一个ns下才可以运行正常,是不是在其他的ns下在部署一个cephfs-provisioner就可以部署pvc了,还没有尝试,这块没太搞明白。现在用cephfs的业务都在cehpfs的ns下,临时使用。
中间我还尝试存储挂载ceph pvc,发现ceph不支持accessModes:ReadWriteMany,它只支持[ReadWriteOnce],只有cephfs支持[ReadWriteMany],如果将StatefulSet部署存储改为accessModes:ReadWriteOnce,会发现pod无法建立。
----------------------------------------------------------------------------------------------------
在最近测试中发现上述部署完全按照链接的文档设置有些问题,3个server节点不停的选举leader导致数据无法同步,没法使用,根据这种情况我又做了一下修改。
1、删除configmap(consul-config)资源
2、修改consul.yaml文件
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: consul
namespace: cephfs
labels:
app: consul
component: server
spec:
serviceName: consul
replicas: 3
selector:
matchLabels:
app: consul
component: server
template:
metadata:
labels:
app: consul
component: server
spec:
volumes:
- name: host-time
hostPath:
path: /etc/localtime
containers:
- name: consul
image: consul:1.10.4
imagePullPolicy: IfNotPresent
args:
- "agent"
- "-server"
- "-bootstrap-expect=3"
- "-bind=$(PODIP)" //这里我没有用-advertise
//参考:advertise_addr: 更改我们向群集中其他节点通告的地址。默认情况下,会使用-bind参数指定的地址.
- "-client=0.0.0.0"
- "-datacenter=shellyun"
- "-data-dir=/consul/data"
- "-domain=cluster.local"
- "-disable-host-node-id"
- "-retry-join=consul-0.consul.$(NAMESPACE).svc.cluster.local"
- "-retry-join=consul-1.consul.$(NAMESPACE).svc.cluster.local"
- "-retry-join=consul-2.consul.$(NAMESPACE).svc.cluster.local"
- "-ui"
volumeMounts:
- name: consul
mountPath: /consul/data
- name: host-time
mountPath: /etc/localtime
env:
- name: PODIP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
ports:
- containerPort: 8500
name: http
- containerPort: 8300
name: server
- containerPort: 8301
name: serflan
- containerPort: 8302
name: serfwan
- containerPort: 8400
name: cli-port
- containerPort: 8600
name: consuldns
volumeClaimTemplates:
- metadata:
name: consul
namespace: cephfs
annotations:
volume.beta.kubernetes.io/storage-class: "cephfs"
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
更多推荐
所有评论(0)