我使用1个主节点和2个节点创建了k8s集群和网络。但是,在pod(nginx)部署期间,部署仅在一个服务器(即node1)上发生,而不在其他服务器(即node2)上发生,结果显示为o / p之下
[root@controller Kubernetes]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 1/1 Running 0 10m 192.168.1.2 node1 <none> <none>
[root@controller Kubernetes]#
这意味着nginx仅部署在node1上,而不部署在node2上
节点加入主节点的结果
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
controller Ready master 142m v1.16.0 192.168.33.20 <none> CentOS Linux 7 (Core) 3.10.0-1062.1.1.el7.x86_64 docker://1.13.1
node1 Ready <none> 134m v1.16.0 192.168.33.10 <none> CentOS Linux 7 (Core) 3.10.0-1062.1.1.el7.x86_64 docker://1.13.1
node2 Ready <none> 46m v1.16.0 192.168.33.30 <none> CentOS Linux 7 (Core) 3.10.0-1062.1.1.el7.x86_64 docker://1.13.1
[root@controller Kubernetes]#
Pod文件:
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
name: nginx-web-application
spec:
containers:
- name: nginx-container
image: nginx
当我在命令下运行时,我想也看到node2上也发生了部署,请问一下为什么两个节点上都没有发生部署:
kubectl create -f pod.yml
最佳答案
您的设置将创建一个Pod,其中一个节点上有一个容器(该容器由kube-scheduler决定)。
如果要在每个节点上运行该Pod,请使用DaemonSet,以确保在每个节点上运行Pod的副本。
具有两个或更多副本的Deployment应该可以工作,因为如果两个节点都能够运行该pod,则您有两个节点(请参阅kube-scheduler)。
最后一件事-您可以使用Taints and Tolerations。最简单的方法是对node1
进行污染,以免在其上切开pod(例如来自文档的示例):
kubectl taint nodes node1 key:NoSchedule-
关于docker - Pod部署问题和Kubernetes集群上的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58183678/