158 lines
3.7 KiB
YAML
158 lines
3.7 KiB
YAML
apiVersion: v1
|
||
kind: Service
|
||
metadata:
|
||
name: zk-hs
|
||
labels:
|
||
app: zk
|
||
spec:
|
||
ports:
|
||
- port: 2888
|
||
name: server
|
||
- port: 3888
|
||
name: leader-election
|
||
clusterIP: None
|
||
selector:
|
||
app: zk
|
||
---
|
||
apiVersion: v1
|
||
kind: Service
|
||
metadata:
|
||
name: zk-cs
|
||
labels:
|
||
app: zk
|
||
spec:
|
||
type: NodePort
|
||
ports:
|
||
- port: 2182
|
||
name: client
|
||
targetPort: 2182
|
||
nodePort: 2182
|
||
selector:
|
||
app: zk
|
||
---
|
||
apiVersion: policy/v1beta1
|
||
kind: PodDisruptionBudget
|
||
metadata:
|
||
name: zk-pdb
|
||
spec:
|
||
selector:
|
||
matchLabels:
|
||
app: zk
|
||
maxUnavailable: 1
|
||
---
|
||
apiVersion: apps/v1
|
||
kind: StatefulSet
|
||
metadata:
|
||
name: zk
|
||
spec:
|
||
selector:
|
||
matchLabels:
|
||
app: zk
|
||
serviceName: zk-hs
|
||
replicas: 3 #创建三个pod
|
||
updateStrategy:
|
||
type: RollingUpdate
|
||
podManagementPolicy: Parallel
|
||
template:
|
||
metadata:
|
||
labels:
|
||
app: zk
|
||
spec:
|
||
nodeSelector: #进行label匹配,调度pod到目标节点
|
||
travis.io/schedule-only: "kafka"
|
||
tolerations:
|
||
- key: "travis.io/schedule-only"
|
||
operator: "Equal"
|
||
value: "kafka"
|
||
effect: "NoSchedule"
|
||
- key: "travis.io/schedule-only"
|
||
operator: "Equal"
|
||
value: "kafka"
|
||
effect: "NoExecute"
|
||
tolerationSeconds: 3600
|
||
- key: "travis.io/schedule-only"
|
||
operator: "Equal"
|
||
value: "kafka"
|
||
effect: "PreferNoSchedule"
|
||
affinity: #配置每个机器只能运行一个pod
|
||
podAntiAffinity:
|
||
requiredDuringSchedulingIgnoredDuringExecution:
|
||
- labelSelector:
|
||
matchExpressions:
|
||
- key: "app"
|
||
operator: In
|
||
values:
|
||
- zk
|
||
topologyKey: "kubernetes.io/hostname"
|
||
imagePullSecrets: # 指定自己的私有镜像秘钥
|
||
- name: registry-key
|
||
containers:
|
||
- name: kubernetes-zookeeper
|
||
securityContext:
|
||
runAsUser: 0
|
||
imagePullPolicy: Always
|
||
image: 192.168.40.153:9080/k8s/k8s.gcr.io/kubernetes-zookeeper:1.0-3.4.10
|
||
resources:
|
||
requests:
|
||
memory: "20Mi"
|
||
cpu: "0.1"
|
||
ports:
|
||
- containerPort: 2182
|
||
name: client
|
||
- containerPort: 2888
|
||
name: server
|
||
- containerPort: 3888
|
||
name: leader-election
|
||
command:
|
||
- sh
|
||
- -c
|
||
- "start-zookeeper \
|
||
--servers=3 \
|
||
--data_dir=/var/lib/zookeeper/data \
|
||
--data_log_dir=/var/lib/zookeeper/data/log \
|
||
--conf_dir=/opt/zookeeper/conf \
|
||
--client_port=2182 \
|
||
--election_port=3888 \
|
||
--server_port=2888 \
|
||
--tick_time=2000 \
|
||
--init_limit=10 \
|
||
--sync_limit=5 \
|
||
--heap=512M \
|
||
--max_client_cnxns=60 \
|
||
--snap_retain_count=3 \
|
||
--purge_interval=12 \
|
||
--max_session_timeout=40000 \
|
||
--min_session_timeout=4000 \
|
||
--log_level=INFO"
|
||
readinessProbe: # pod 健康监测
|
||
exec:
|
||
command:
|
||
- sh
|
||
- -c
|
||
- "zookeeper-ready 2182"
|
||
initialDelaySeconds: 10
|
||
timeoutSeconds: 5
|
||
livenessProbe:
|
||
exec:
|
||
command:
|
||
- sh
|
||
- -c
|
||
- "zookeeper-ready 2182"
|
||
initialDelaySeconds: 10
|
||
timeoutSeconds: 5
|
||
volumeMounts:
|
||
- name: datadir
|
||
mountPath: /var/lib/zookeeper
|
||
securityContext:
|
||
runAsUser: 1000
|
||
fsGroup: 1000
|
||
volumeClaimTemplates: #nfs 映射模版配置
|
||
- metadata:
|
||
name: datadir
|
||
spec:
|
||
accessModes: [ "ReadWriteMany" ]
|
||
storageClassName: nfs
|
||
resources:
|
||
requests:
|
||
storage: 10Gi
|