【发布时间】:2020-06-01 23:11:12
【问题描述】:
我有一个如下的部署模板。但是 prestop 钩子根本没有被执行。 这里的想法是在 Pod 终止之前将 zookeeper 节点设置为离线。
我正在运行 kubectl rollout 来重新启动 pod。而旧 pod 是在它终止时 prestop 不运行。有人可以检查一下有什么问题吗?
在成功停止的情况下,它的 prestop 基本上是如何执行的?我需要这个功能,因为这里涉及到 zookeeper,并且 api 连接到 zookeeper 以发送请求。
apiVersion: apps/v1
kind: Deployment
metadata:
name: abcd
labels:
app: abcd
spec:
replicas: 1
selector:
matchLabels:
app: abcd
template:
metadata:
labels:
app: abcd
spec:
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
# terminationGracePeriodSeconds: 1
containers:
- name: se
image: "xxx"
lifecycle:
preStop:
exec:
command: ["zookeepercli","--servers","zk-hs", "-c", "set", "$HOSTNAME", "offline"]
ports:
- containerPort: 2345
- name: pe-1
image: "xxx"
lifecycle:
preStop:
exec:
command: ["zookeepercli","--servers","zk-hs", "-c", "set", "$HOSTNAME", "offline"]
ports:
- containerPort: 2313
【问题讨论】:
-
可以在终止时分享日志吗? @user2511126
-
我查看了 kubectl describe pod,但它只显示(原因:正在杀死)消息:停止 se 并停止 pe-1
-
你好,你用的是什么k8s版本?
-
客户端版本:version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:" 2019-08-19T11:13:54Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"} 服务器版本: version.Info{Major:"1", Minor:"17 ", GitVersion:"v1.17.4", GitCommit:"8d8aa39598534325ad77120c120a22b3a990b5ea", GitTreeState:"clean", BuildDate:"2020-03-12T20:55:23Z", GoVersion:"go1.13.8", 编译器:"gc",平台:“linux/amd64”}
-
preStop 挂钩不使用环境变量。我搬到了 bash 脚本,现在可以工作了
标签: docker kubernetes