0

私はサイズ2の単一ノードプールを持つGKEクラスタを持っています.3番目のノードを追加すると、その3番目のノードにはポッドは一切ありません。ここでKubernetesは利用可能なノードにポッドを広げていません

は、元の2ノードのノードプールです:

$ kubectl get node 
NAME        STATUS ROLES  AGE  VERSION 
gke-cluster0-pool-d59e9506-b7nb Ready  <none> 13m  v1.8.3-gke.0 
gke-cluster0-pool-d59e9506-vp6t Ready  <none> 18m  v1.8.3-gke.0 

そして、ここではその元のノードプールで実行されているポッドは、以下のとおりです。

$ kubectl get po -o wide --all-namespaces 
NAMESPACE  NAME           READY  STATUS  RESTARTS AGE  IP   NODE 
default  attachment-proxy-659bdc84d-ckdq9    1/1  Running  0   10m  10.0.38.3 gke-cluster0-pool-d59e9506-vp6t 
default  elasticsearch-0        1/1  Running  0   4m  10.0.39.11 gke-cluster0-pool-d59e9506-b7nb 
default  front-webapp-646bc49675-86jj6    1/1  Running  0   10m  10.0.38.10 gke-cluster0-pool-d59e9506-vp6t 
default  kafka-0          1/1  Running  3   4m  10.0.39.9 gke-cluster0-pool-d59e9506-b7nb 
default  mailgun-http-98f8d997c-hhfdc     1/1  Running  0   4m  10.0.38.17 gke-cluster0-pool-d59e9506-vp6t 
default  stamps-5b6fc489bc-6xtqz      2/2  Running  3   10m  10.0.38.13 gke-cluster0-pool-d59e9506-vp6t 
default  user-elasticsearch-6b6dd7fc8-b55xx   1/1  Running  0   10m  10.0.38.4 gke-cluster0-pool-d59e9506-vp6t 
default  user-http-analytics-6bdd49bd98-p5pd5   1/1  Running  0   4m  10.0.39.8 gke-cluster0-pool-d59e9506-b7nb 
default  user-http-graphql-67884c678c-7dcdq   1/1  Running  0   4m  10.0.39.7 gke-cluster0-pool-d59e9506-b7nb 
default  user-service-5cbb8cfb4f-t6zhv    1/1  Running  0   4m  10.0.38.15 gke-cluster0-pool-d59e9506-vp6t 
default  user-streams-0        1/1  Running  0   4m  10.0.39.10 gke-cluster0-pool-d59e9506-b7nb 
default  user-streams-elasticsearch-c64b64d6f-2nrtl 1/1  Running  3   10m  10.0.38.6 gke-cluster0-pool-d59e9506-vp6t 
default  zookeeper-0         1/1  Running  0   4m  10.0.39.12 gke-cluster0-pool-d59e9506-b7nb 
kube-lego  kube-lego-7799f6b457-skkrc     1/1  Running  0   10m  10.0.38.5 gke-cluster0-pool-d59e9506-vp6t 
kube-system event-exporter-v0.1.7-7cb7c5d4bf-vr52v  2/2  Running  0   10m  10.0.38.7 gke-cluster0-pool-d59e9506-vp6t 
kube-system fluentd-gcp-v2.0.9-648rh      2/2  Running  0   14m  10.0.38.2 gke-cluster0-pool-d59e9506-vp6t 
kube-system fluentd-gcp-v2.0.9-fqjz6      2/2  Running  0   9m  10.0.39.2 gke-cluster0-pool-d59e9506-b7nb 
kube-system heapster-v1.4.3-6fc45b6cc4-8cl72    3/3  Running  0   4m  10.0.39.6 gke-cluster0-pool-d59e9506-b7nb 
kube-system k8s-snapshots-5699c68696-h8r75    1/1  Running  0   4m  10.0.38.16 gke-cluster0-pool-d59e9506-vp6t 
kube-system kube-dns-778977457c-b48w5     3/3  Running  0   4m  10.0.39.5 gke-cluster0-pool-d59e9506-b7nb 
kube-system kube-dns-778977457c-sw672     3/3  Running  0   10m  10.0.38.9 gke-cluster0-pool-d59e9506-vp6t 
kube-system kube-dns-autoscaler-7db47cb9b7-tjt4l   1/1  Running  0   10m  10.0.38.11 gke-cluster0-pool-d59e9506-vp6t 
kube-system kube-proxy-gke-cluster0-pool-d59e9506-b7nb 1/1  Running  0   9m  10.128.0.4 gke-cluster0-pool-d59e9506-b7nb 
kube-system kube-proxy-gke-cluster0-pool-d59e9506-vp6t 1/1  Running  0   14m  10.128.0.2 gke-cluster0-pool-d59e9506-vp6t 
kube-system kubernetes-dashboard-76c679977c-mwqlv  1/1  Running  0   10m  10.0.38.8 gke-cluster0-pool-d59e9506-vp6t 
kube-system l7-default-backend-6497bcdb4d-wkx28   1/1  Running  0   10m  10.0.38.12 gke-cluster0-pool-d59e9506-vp6t 
kube-system nginx-ingress-controller-78d546664f-gf6mx 1/1  Running  0   4m  10.0.39.3 gke-cluster0-pool-d59e9506-b7nb 
kube-system tiller-deploy-5458cb4cc-26x26    1/1  Running  0   4m  10.0.39.4 gke-cluster0-pool-d59e9506-b7nb 

それから私は、ノードプールに別のノードを追加します。

gcloud container clusters resize cluster0 --node-pool pool --size 3 

第添加し、準備された:

0何が起こっているか

$ kubectl get po -o wide --all-namespaces 
NAMESPACE  NAME           READY  STATUS  RESTARTS AGE  IP   NODE 
default  attachment-proxy-659bdc84d-ckdq9    1/1  Running  0   17m  10.0.38.3 gke-cluster0-pool-d59e9506-vp6t 
default  elasticsearch-0        1/1  Running  0   10m  10.0.39.11 gke-cluster0-pool-d59e9506-b7nb 
default  front-webapp-646bc49675-86jj6    1/1  Running  0   17m  10.0.38.10 gke-cluster0-pool-d59e9506-vp6t 
default  kafka-0          1/1  Running  3   11m  10.0.39.9 gke-cluster0-pool-d59e9506-b7nb 
default  mailgun-http-98f8d997c-hhfdc     1/1  Running  0   10m  10.0.38.17 gke-cluster0-pool-d59e9506-vp6t 
default  stamps-5b6fc489bc-6xtqz      2/2  Running  3   16m  10.0.38.13 gke-cluster0-pool-d59e9506-vp6t 
default  user-elasticsearch-6b6dd7fc8-b55xx   1/1  Running  0   17m  10.0.38.4 gke-cluster0-pool-d59e9506-vp6t 
default  user-http-analytics-6bdd49bd98-p5pd5   1/1  Running  0   10m  10.0.39.8 gke-cluster0-pool-d59e9506-b7nb 
default  user-http-graphql-67884c678c-7dcdq   1/1  Running  0   10m  10.0.39.7 gke-cluster0-pool-d59e9506-b7nb 
default  user-service-5cbb8cfb4f-t6zhv    1/1  Running  0   10m  10.0.38.15 gke-cluster0-pool-d59e9506-vp6t 
default  user-streams-0        1/1  Running  0   10m  10.0.39.10 gke-cluster0-pool-d59e9506-b7nb 
default  user-streams-elasticsearch-c64b64d6f-2nrtl 1/1  Running  3   17m  10.0.38.6 gke-cluster0-pool-d59e9506-vp6t 
default  zookeeper-0         1/1  Running  0   10m  10.0.39.12 gke-cluster0-pool-d59e9506-b7nb 
kube-lego  kube-lego-7799f6b457-skkrc     1/1  Running  0   17m  10.0.38.5 gke-cluster0-pool-d59e9506-vp6t 
kube-system event-exporter-v0.1.7-7cb7c5d4bf-vr52v  2/2  Running  0   17m  10.0.38.7 gke-cluster0-pool-d59e9506-vp6t 
kube-system fluentd-gcp-v2.0.9-648rh      2/2  Running  0   20m  10.0.38.2 gke-cluster0-pool-d59e9506-vp6t 
kube-system fluentd-gcp-v2.0.9-8tb4n      2/2  Running  0   4m  10.0.40.2 gke-cluster0-pool-d59e9506-1rzm 
kube-system fluentd-gcp-v2.0.9-fqjz6      2/2  Running  0   15m  10.0.39.2 gke-cluster0-pool-d59e9506-b7nb 
kube-system heapster-v1.4.3-6fc45b6cc4-8cl72    3/3  Running  0   11m  10.0.39.6 gke-cluster0-pool-d59e9506-b7nb 
kube-system k8s-snapshots-5699c68696-h8r75    1/1  Running  0   10m  10.0.38.16 gke-cluster0-pool-d59e9506-vp6t 
kube-system kube-dns-778977457c-b48w5     3/3  Running  0   11m  10.0.39.5 gke-cluster0-pool-d59e9506-b7nb 
kube-system kube-dns-778977457c-sw672     3/3  Running  0   17m  10.0.38.9 gke-cluster0-pool-d59e9506-vp6t 
kube-system kube-dns-autoscaler-7db47cb9b7-tjt4l   1/1  Running  0   17m  10.0.38.11 gke-cluster0-pool-d59e9506-vp6t 
kube-system kube-proxy-gke-cluster0-pool-d59e9506-1rzm 1/1  Running  0   4m  10.128.0.3 gke-cluster0-pool-d59e9506-1rzm 
kube-system kube-proxy-gke-cluster0-pool-d59e9506-b7nb 1/1  Running  0   15m  10.128.0.4 gke-cluster0-pool-d59e9506-b7nb 
kube-system kube-proxy-gke-cluster0-pool-d59e9506-vp6t 1/1  Running  0   20m  10.128.0.2 gke-cluster0-pool-d59e9506-vp6t 
kube-system kubernetes-dashboard-76c679977c-mwqlv  1/1  Running  0   17m  10.0.38.8 gke-cluster0-pool-d59e9506-vp6t 
kube-system l7-default-backend-6497bcdb4d-wkx28   1/1  Running  0   17m  10.0.38.12 gke-cluster0-pool-d59e9506-vp6t 
kube-system nginx-ingress-controller-78d546664f-gf6mx 1/1  Running  0   11m  10.0.39.3 gke-cluster0-pool-d59e9506-b7nb 
kube-system tiller-deploy-5458cb4cc-26x26    1/1  Running  0   11m  10.0.39.4 gke-cluster0-pool-d59e9506-b7nb 

NAME        STATUS ROLES  AGE  VERSION 
gke-cluster0-pool-d59e9506-1rzm Ready  <none> 3m  v1.8.3-gke.0 
gke-cluster0-pool-d59e9506-b7nb Ready  <none> 14m  v1.8.3-gke.0 
gke-cluster0-pool-d59e9506-vp6t Ready  <none> 19m  v1.8.3-gke.0 

しかし、DaemonSetに属するものを除くポッドのどれも追加したノード上に予定されていませんか?ポッドが追加されたノードに広がっていないのはなぜですか?私は、ポッドが3番目のノードに配布されることを期待していました。この第3のノードに作業負荷を分散させるにはどうすればよいですか?

技術的には、マニフェストリソース要求に関しては、アプリケーション全体が1つのノードに適合します。しかし、2番目のノードが追加されると、アプリケーションは2番目のノードに配布されます。だから私は、3番目のノードを追加すると、ポッドはそのノードにスケジュールされていると思います。しかし、それは私が見ているものではありません。 DaemonSetのみが3番目のノードにスケジュールされます。私は成長し、無駄にノードプールを縮小しようとしました。


更新

2つのプリエンプティブノードが再起動され、現在、すべてのポッドは1つのノード上にあります。どうしたの?増加するリソース要求がそれらを広める唯一の方法ですか?

答えて

1

これは予想される動作です。新しいポッドは空のノードにスケジュールされますが、実行中のポッドは自動的に移動されません。 kubernetesスケジューラは、ポッドの再スケジューリングについては一般的に保守的なので、理由なしには実行しません。ポッドはステートフル(DBのような)なので、kubernetesはポッドを殺して再スケジュールしたくありません。

あなたが探しているものを開発するプロジェクトがあります: https://github.com/kubernetes-incubator/descheduler 私はそれを使用していませんが、コミュニティから積極的に開発しています。

0

ここでは完全にn00bですが、Docker/Kubernetesについて学んでいます。問題を読んだら、定足数に問題があるようです。あなたは5つのノードを起動しようとしましたか? (n/2 + 1)KubernetesとDocker SwarmkitはどちらもRaftコンセンサスアルゴリズムを使用します。あなたはまた、ラフトをチェックしたいかもしれません。このビデオは実際にあなたの苦境に合っている場合に役立ちます。それはラフトとクォーラムについて語っています。 https://youtu.be/Qsv-q8WbIZY?t=2m58s

関連する問題