文章目录
一、yaml
kubectl apply -f etcd.yaml
nfs添加新的目录后,记得加上权限和重启nfs服务
apiVersion: v1
kind: PersistentVolume
metadata:
name: etcd2-pv-1
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
storageClassName: etcd2-storage
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
path: /www/data/etcd/data1
server: 192.168.7.2
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: etcd2-pv-2
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
storageClassName: etcd2-storage
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
path: /www/data/etcd/data2
server: 192.168.7.2
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: etcd2-pv-3
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
storageClassName: etcd2-storage
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
path: /www/data/etcd/data3
server: 192.168.7.2
---
apiVersion: v1
kind: ConfigMap
metadata:
name: etcd2-config-map
data:
ALLOW_NONE_AUTHENTICATION: "yes" # 运训不用密码登陆
ETCD_LISTEN_PEER_URLS: "http://0.0.0.0:2380" # 用于监听伙伴通讯的URL列表
ETCD_LISTEN_CLIENT_URLS: "http://0.0.0.0:2379" # 用于监听客户端通讯的URL列表
ETCD_INITIAL_CLUSTER_TOKEN: "etcd-cluster" # 在启动期间用于 etcd 集群的初始化集群记号
ETCD_INITIAL_CLUSTER_STATE: new # 初始化集群状态
ETCD_INITIAL_CLUSTER: "etcd2-0=http://etcd2-0.etcd2-hs:2380,etcd2-1=http://etcd2-1.etcd2-hs:2380,etcd2-2=http://etcd2-2.etcd2-hs:2380"
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: etcd2
spec:
selector:
matchLabels:
app: etcd2
serviceName: "etcd2-hs"
replicas: 3
template:
metadata:
labels:
app: etcd2
spec:
terminationGracePeriodSeconds: 3
containers:
- name: etcd2
image: bitnami/etcd:latest
imagePullPolicy: IfNotPresent
envFrom:
- configMapRef:
name: etcd2-config-map
env:
- name: ETCD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: ETCD_INITIAL_ADVERTISE_PEER_URLS
value: "http://$(ETCD_NAME).etcd2-hs:2380"
- name: ETCD_ADVERTISE_CLIENT_URLS
value: "http://$(ETCD_NAME).etcd2-hs:2379"
volumeMounts:
- name: etcd-persistent-storage
mountPath: /bitnami/etcd
volumeClaimTemplates:
- metadata:
name: etcd-persistent-storage
spec:
storageClassName: etcd2-storage
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
---
# headless 无头服务(提供域名供StatefulSet内部pod访问使用)
apiVersion: v1
kind: Service
metadata:
name: etcd2-hs
spec:
ports:
- port: 2380
name: "2380"
targetPort: 2380
- port: 2379
name: "2379"
targetPort: 2379
clusterIP: None
selector:
app: etcd2