sách gpt4 ai đã đi

kubernetes - Kubernetes-滚动更新可以杀死旧的pod而不产生新的pod

In lại 作者:行者123 更新时间:2023-12-04 10:14:32 28 4
mua khóa gpt4 Nike

我目前正在使用Deployments管理我的K8S集群中的Pod。

我的某些部署需要2个Pod /副本,一些部署需要3个Pod /副本,而有些部署只需要1个Pod /副本。我遇到的问题是只有一个 pods /副本的那个。

我的YAML文件是:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: user-management-backend-deployment
spec:
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 2
selector:
matchLabels:
name: user-management-backend
template:
metadata:
labels:
name: user-management-backend
spec:
containers:
- name: user-management-backend
image: proj_csdp/user-management_backend:3.1.8
imagePullPolicy: IfNotPresent
cổng:
- containerPort: 8080
livenessProbe:
httpGet:
port: 8080
path: /user_management/health
initialDelaySeconds: 300
timeoutSeconds: 30
readinessProbe:
httpGet:
port: 8080
path: /user_management/health
initialDelaySeconds: 10
timeoutSeconds: 5
volumeMounts:
- name: nfs
mountPath: "/vault"
khối lượng:
- name: nfs
nfs:
server: kube-nfs
path: "/kubenfs/vault"
readOnly: true

我有一个运行良好的旧版本。
# kubectl get po | grep user-management-backend-deployment
user-management-backend-deployment-3264073543-mrrvl 1/1 Running 0 4d

现在我要更新图像:
# kubectl set image deployment user-management-backend-deployment user-management-backend=proj_csdp/user-management_backend:3.2.0

现在,根据RollingUpdate设计,K8S应该在保持旧的Pod正常工作的同时启动新Pod,只有在新的Pod准备好进行通信时,才应删除旧Pod。但是我看到的是,旧的Pod立即被删除,而新的Pod被创建,然后花一些时间开始进行流量处理,这意味着我必须减少流量。
# kubectl get po | grep user-management-backend-deployment
user-management-backend-deployment-3264073543-l93m9 0/1 ContainerCreating 0 1s

# kubectl get po | grep user-management-backend-deployment
user-management-backend-deployment-3264073543-l93m9 1/1 Running 0 33s

我使用了 maxSurge: 2maxUnavailable: 1,但这似乎不起作用。

任何想法为什么这不起作用?

1 Câu trả lời

它似乎是maxUnavailable: 1;通过设置该值,我可以轻松重现您的体验,并通过将其设置为maxUnavailable: 0来轻松实现正确的体验

这是我的“伪证明”,表明调度程序如何实现您遇到的行为:

因为是replicas: 1,所以k8s的期望状态恰好是Ready中的一个Pod。在滚动更新操作(这是您要求的策略)期间,它将创建一个新的Pod,使总数达到2。但是您授予k8s许可,使一个Pod保持不可用状态,并指示它保持所需的数量。 Pod为1。因此,它满足了所有这些约束:1 Pod,RU策略允许的所需计数,处于不可用状态。

通过将maxUnavailable设置为零,您可以正确地将k8定向为从不让任何Pod不可用,即使这意味着在短时间内将pod超过replica的数量激增

关于kubernetes - Kubernetes-滚动更新可以杀死旧的pod而不产生新的pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46369100/

28 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com