kubernetes-deployment - 将服务分发到所有节点
问题描述
我有一个 2 个工作节点 kube 集群,并且我的部署副本为 2,如下所示的部署所示
最初,部署分布在每个节点上。但是一个节点出现故障,另一个节点每次部署有 2 个 pod。这是正确和预期的。但是当关闭的节点启动并运行时。我希望分发部署。我怎样才能做到这一点。
apiVersion: apps/v1
kind: Deployment
metadata:
name: kub-homenet-deployment
spec:
replicas: 2
selector:
matchLabels:
app: kub-homenet
template:
metadata:
labels:
app: kub-homenet
spec:
containers:
- name: kub-homenet
image: naveeenzone/img-kub-homenet:latest
volumeMounts:
- mountPath: /app
name: nfs-vol
securityContext:
fsGroup: 1000
volumes:
- name: nfs-vol
persistentVolumeClaim:
claimName: nfs-pvc
解决方案
apiVersion: apps/v1
kind: Deployment
metadata:
name: kub-starnet-deployment
spec:
replicas: 2
selector:
matchLabels:
app: kub-starnet
template:
metadata:
labels:
app: kub-starnet
spec:
topologySpreadConstraints:
- maxSkew: 1
topologyKey: node
whenUnsatisfiable: ScheduleAnyway
containers:
- name: kub-starnet
image: naveeenzone/img-kub-starnet:latest
volumeMounts:
- mountPath: /app
name: nfs-vol
securityContext:
fsGroup: 1000
volumes:
- name: nfs-vol
persistentVolumeClaim:
claimName: nfs-pvc
我应用了上述更改,两个 pod 仅在一个节点上运行,而不是两个。
节点信息:
kubectl get nodes
kubmst01.homenet.n4softsol.ca Ready master 162d v1.18.1
kubwrk01.homenet.n4softsol.ca Ready <none> 161d v1.18.1
kubwrk02.homenet.n4softsol.ca Ready <none> 161d v1.18.1
kubectl get pods --all-namespaces -o wide| grep star
default kub-starnet-deployment-77fd84df46-gwpjf 1/1 Running 0 38m 10.10.97.177 kubwrk02.homenet.n4softsol.ca <none> <none>
default kub-starnet-deployment-77fd84df46-wtsgf 1/1 Running 0 38m 10.10.97.178 kubwrk02.homenet.n4softsol.ca <none> <none>
推荐阅读
- c++ - 列表析构函数导致线程本地单例类崩溃
- firebase - Firebase 模拟器拒绝读取
- java - 高频 Udp 多播发送:一段时间后 java.net.SocketException
- excel - 向表中添加值的三种方式查找
- jenkins - jenkins:通过 groovy 脚本以编程方式在 jenkins 管道中配置 github 项目
- c++ - 阻止变量在一系列值之间滚动(Arduino C++ 和操纵杆)
- json - 如果我们将数据作为请求正文而不是 url 参数传递,如何在 struts 拦截器中获取数据
- python - Jinja2 模板中的彩色文本取决于 Python 中的条件
- ios - 由于IP更改,PJSIP ios在获得nonce后未尝试重新注册
- swift - Swift 包管理器 - 框架分发