![](/img/trans.png)
[英]Automate the deployment of a .war application on a Payara-Full Pod in a Kubernetes cluster
[英]Pod deployment issue and query over Kubernetes cluster
我創建了一個 k8s 集群和網絡,使用 1 個主節點和 2 個節點。 然而,在 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
節點加入master的結果
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]#
豆莢文件:
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 的副本。
如果您的兩個節點都能夠運行該 pod(查看kube-scheduler ),那么具有 2 個或更多副本的部署應該可以工作,因為您有兩個節點。
最后一件事 - 你可以使用Taints 和 Tolerations 。 最簡單的方法是污染您的node1
以不允許在其上安裝 shceduling pod(來自文檔的示例):
kubectl taint nodes node1 key:NoSchedule-
Pod 恰好是容器的一個副本(很少有多個緊密耦合的容器)。 它將僅在一個節點上運行。
你幾乎不想直接使用 Pod; 相反,更喜歡更高級別的 controller object。 大多數情況下,您將使用Deployment ,您可以告訴您想要它,例如在集群中某處運行的 Pod 的 3 個副本。 如果您實際上需要在每個節點上運行一個副本(通常這只需要基礎設施類型的 Pod),那就是 DaemonSet 的model 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.