demoyuw / k8s

微服務Kubernetes與Docker開發實務班
18 stars 25 forks source link

關於ppt 的autoscaling #3

Open yysun0924 opened 5 years ago

yysun0924 commented 5 years ago

老師您好,我是昨天上課的學生,我試著依ppt的步驟來做,雖然會auto scaling,但新增的pods status是Pening 查看原因是 Insufficient cpu,想請問老師知道為什麼會有這個情形嗎?謝謝

1

deploy 新的內容 2 3

為php-apache這個deployment加上autoscaling 且用kubectl get all查看,可以發現多了一個autoscaling/php-apache

4

5

一直call 測試pod做壓測,讓pod 能autoscaling 6

cpu衝高 7

pod有增長到4個沒錯,但是新增的pods status是Pening 8

查看狀況,是說Insufficient cpu,我在想,是不是因為master-node也是 worker,所以才會建不起新的pod? 9

用kubectl edit deploy php-apache 查看deploy的yaml 11

把access的程式停掉,又回到一個php-apache pod 10

demoyuw commented 5 years ago

這問題是CPU資源不足,所以造成Scaling的pod所需資源,造成無法建立。

  1. 把環境內的其他deployment 跟pod刪除,例如 nginx-pod-gcp-volume。

  2. 建立php-apache時,resource.request拿掉,不要限制最小啟動值。 kubectl run php-apache --image=k8s.gcr.io/hpa-example --expose --port=80

如果還是不行,再跟我說,我增加VM CPU規格。

yysun0924 commented 5 years ago

了解,另外請教老師,既然CPU資源不足會造成scaling的失敗,因為像這個例子,一直Access,CPU跑到了323%。所以是不是在production環境,通常會把K8S的Master node和Working node分開呢?或是說在有限的金錢下,我還是需要把master node和worker node放在同一台Server,那有什麼方式可以讓master node在scaling時,不受到影響呢? 謝謝

demoyuw commented 5 years ago

Production 環境 Master 跟Worker node 就會建議分開放。Work node開資源較高的(ex: vCPU, Memory),而Master node 規格只需開運行k8s service跟etcd所需資源即可,資訊使用量波動不大。角色分開放置,能夠降低同時一起停止服務的風險。

Production 環境 pods建立在worker node上,網路IO 流量也不會經過Master node,所以Master node 也不運行任何application pods,資源使用量固定。