zookeeper和k8s_k8s部署有状态服务zookeeper示例

该博客详细介绍了如何在Kubernetes(k8s)环境中使用StatefulSet部署有状态服务Zookeeper。通过StatefulSet,每个Zookeeper实例拥有唯一的hostname和稳定的网络标识,确保了服务的有序性和一致性。博客中提到了配置文件的设置,包括Zookeeper的配置修改和使用Pod内置变量动态替换IP。此外,还展示了如何通过ConfigMap和自定义脚本来动态更新配置并启动Zookeeper服务。
摘要由CSDN通过智能技术生成

我们先不考虑配置文件的前提下:

apiVersion: apps/v1

kind: StatefulSet #####固定hostname,有状态的服务使用这个 statefalset有个问题,就是如果那个pod不是running状态,这个主机名是无法解析的,这样就构成了一个死循环,我sed替换主机名的时候由于pod还不是running状态,她只能获取自己的主机名。无法获取别人的主机名,所以在zookeeper中换成了换成了ip

metadata:

name: zookeeper

spec:

serviceName: zookeeper ####所以生成的3个pod的名字叫zookeeper-0,zookeeper-1,zookeeper-2

replicas: 3

revisionHistoryLimit: 10

selector: ##statefulset必须有的

matchLabels:

app: zookeeper

template:

metadata:

labels:

app: zookeeper

spec:

volumes:

- name: volume-logs

hostPath:

path: /var/log/zookeeper

containers:

- name: zookeeper

image: harbor.test.com/middleware/zookeeper:3.4.10

imagePullPolicy: IfNotPresent

livenessProbe:

tcpSocket:

port: 2181

initialDelaySeconds: 30

timeoutSeconds: 3

periodSeconds: 5

successThreshold: 1

failureThreshold: 2

ports:

- containerPort: 2181

protocol: TCP

- containerPort: 2888

protocol: TCP

- containerPort: 3888

protocol: TCP

env:

- name: SERVICE_NAME

value: "zookeeper"

- name: MY_POD_NAME #声明k8s自带的变量,这样在pod创建之后,在其中可以直接echo ${MY_POD_NAME}得到hostname

valueFrom:

fieldRef:

fieldPath: metadata.name

volumeMounts:

- name: volume-logs

mountPath: /var/log/zookeeper

nodeSelector:

zookeeper: enable

---

apiVersion: v1

kind: Service

metadata:

name: zookeeper #我的cluster名字为这个,在任意一个生成的pod中可以ping zookeeper,相当于zookeeper为生成的3个pod的cluster_name,会发现每次ping出的地址不一定相同,nslookup zookeeper得到的是3个pod的pod ip,共3条记录。

spec:

ports:

- port: 2181

selector:

app: zookeeper

clusterIP: None #此句必须加上

[root@host5 src]# kubectl get pod --all-namespaces -o wide

NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES

default zookeeper-0 1/1 Running 0 12m 192.168.55.69 host3

default zookeeper-1 1/1 Running 0 12m 192.168.31.93 host4

default zookeeper-2 1/1 Running 0 12m 192.168.55.70 host3

bash-4.3# nslookup zookeeper

nslookup: can't resolve '(null)': Name does not resolve

Name: zookeeper

Address 1: 192.168.55.70 zo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值