![](/img/trans.png)
[英]nodejs & kubernetes : How to do a deployment rollout restart (nodejs)
[英]How to do controlled rollout using Kubernetes deployment
我们有 1000 个存储节点,需要按照以下顺序在每个 kubernetes 节点上部署应用程序映像,并希望在部署期间指定部署节点详细信息。 当我们执行 kubectl create 或 apply 部署命令时,有没有办法在命令行中指定节点详细信息?
此应用程序映像将被配置为在容器/POD 创建期间存储/节点特定的详细信息。
第 1 天 1 个节点,第 2 天 10 个节点,第 3 天 100 个节点等。
回答标题中的问题:
如何使用 Kubernetes 部署进行受控推出
您可以创建一个Deployment
,其清单中将包含特定字段,这些字段将配置 Kubernetes 处理它的方式。
使用podAntiAffinity
、 requiredDuringSchedulingIgnoredDuringExecution
等字段,您可以确保Pods
将 Pod 平均分配到集群Nodes
上。 您可以通过以下文档了解更多信息:
请记住以下推出时间表:
天 | REPLICAS_COUNT 个 |
---|---|
1 | 1 |
2 | 10 |
3 | 100 |
4 | 1000 |
您可以使用CI/CD
工具(例如 Jenkins)在特定计划中推出(更改) Deployment
的副本数量。
您可以创建一个带有deploy
阶段的 Jenkins 管道,您可以在其中使用它的调度程序(或延迟)放置您自己的命令。
可以与 Jenkins 一起使用的此类Deployment
示例如下:
cat << EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
selector:
matchLabels:
app: nginx
replicas: ${REPLICAS_COUNT}
template:
metadata:
labels:
app: nginx
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- nginx
topologyKey: "kubernetes.io/hostname"
containers:
- name: nginx
image: nginx
EOF
此Deployment
会将Pods
分配给尚未拥有此Deployment
的已运行副本的Nodes
(即 1 Pod
= 1 Node
)。 如果 Pod 的数量超过Nodes
的数量,它们将保留在Pending
Pods
中。
其他资源:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.