【问题标题】:Kubernetes: how to scale my podsKubernetes:如何扩展我的 pod
【发布时间】:2016-11-15 15:22:57
【问题描述】:

我是 Kubernetes 新手。我尝试扩展我的豆荚。首先我启动了 3 个 pod:

./cluster/kubectl.sh run my-nginx --image=nginx --replicas=3 --port=80

开始有 3 个吊舱。首先,我尝试使用复制控制器来扩大/缩小规模,但这并不存在。现在好像是一个replicaSet。

./cluster/kubectl.sh get rs
NAME                  DESIRED   CURRENT   AGE
my-nginx-2494149703   3         3         9h

我尝试更改我的副本集中描述的副本数量:

./cluster/kubectl.sh scale --replicas=5 rs/my-nginx-2494149703
replicaset "my-nginx-2494149703" scaled

但我仍然看到我的 3 个原始豆荚

./cluster/kubectl.sh get pods
NAME                        READY     STATUS    RESTARTS   AGE
my-nginx-2494149703-04xrd   1/1       Running   0          9h
my-nginx-2494149703-h3krk   1/1       Running   0          9h
my-nginx-2494149703-hnayu   1/1       Running   0          9h

我希望看到 5 个豆荚。

./cluster/kubectl.sh describe rs/my-nginx-2494149703
Name:       my-nginx-2494149703
Namespace:  default
Image(s):   nginx
Selector:   pod-template-hash=2494149703,run=my-nginx
Labels:     pod-template-hash=2494149703
        run=my-nginx
Replicas:   3 current / 3 desired
Pods Status:    3 Running / 0 Waiting / 0 Succeeded / 0 Failed

为什么不扩大规模?我是否还必须更改部署中的某些内容?

当我在放大后描述我的 rs 时,我看到了这样的内容: (这里我尝试从一个正在运行的 pod 扩展到 3 个正在运行的 pod)。但它仍然是一个正在运行的吊舱。其他2个立即启动并杀死

  34s       34s     1   {replicaset-controller }            Normal      SuccessfulCreate    Created pod: my-nginx-1908062973-lylsz
  34s       34s     1   {replicaset-controller }            Normal      SuccessfulCreate    Created pod: my-nginx-1908062973-5rv8u
  34s       34s     1   {replicaset-controller }            Normal      SuccessfulDelete    Deleted pod: my-nginx-1908062973-lylsz
  34s       34s     1   {replicaset-controller }            Normal      SuccessfulDelete    Deleted pod: my-nginx-1908062973-5rv8u

【问题讨论】:

  • 实际上,您似乎做对了一切。如果发生了奇怪的事情,请查看事件(kubectl.sh 获取事件)
  • 我添加了一些我在阅读我的 rs 描述时看到的事件
  • 扩展部署工作。我读到建议扩展您的部署。但是好的,通常它必须工作
  • 是的,在我的配置中,规模部署和规模 rs 都可以工作......您是否尝试过规模部署?结果一样吗?
  • 正如我所说,扩展部署工作,扩展 rs 不:/

标签: kubernetes


【解决方案1】:

这对我有用

kubectl scale --replicas=<expected_replica_num> deployment <deployment_label_name>

例子

# kubectl scale --replicas=3 deployment xyz

【讨论】:

    【解决方案2】:

    TL;DR:您需要扩展部署而不是直接扩展副本集。

    如果您尝试扩展副本集,那么它将(在很短的时间内)新的计数为 5。但部署控制器将看到副本集的当前计数为 5,因为它知道它应该是 3,它会将其重置回 3。通过手动修改为您创建的副本集,您正在与系统控制器进行斗争(它是不倦的,并且几乎总是会比您更持久)。

    【讨论】:

    • 我看不到我的 RC(只有 RS)。这正常吗?
    • 我现在如何创建自动缩放器?也有部署?
    • 部署将创建一个副本集(rs),不是一个复制控制器(rc)。所以只能看到kubectl get rs 的输出。
    • 您要使用哪种自动缩放器?
    • 尝试在您的副本集上启用自动缩放将使您处于与手动缩放副本集相同的情况——除了现在您将有两个控制器争用而不是与控制器争用。使用 kubectl autoscale deployment 在部署上启用自动缩放是向您的 nginx pod 添加水平 pod 自动缩放的正确方法。
    【解决方案3】:

    kubectl run my-nginx --image=nginx --replicas=3 --port=80 在这个kubectl run 中将创建一个部署作业来管理创建的容器。
    部署--> ReplicaSet-->Pod 这就是 Kubernetes 的工作原理。
    如果您更改底层 对象,其更高级别 对象将撤消您的更改。您必须更改顶级 对象。

    【讨论】:

      【解决方案4】:

      将其缩小到零,然后缩小到您需要的 pod 数量(猜想它等于 3)

      kubectl scale deployment <deployment-name> --replicas=0 -n <namespace>
      kubectl scale deployment <deployment-name> --replicas=3 -n <namespace>
      

      【讨论】:

        【解决方案5】:

        不确定这是否是我开始使用 kubernetes 的最佳方式,但我通过更新我的 yaml 文件来做到这一点

        # app.yaml
        apiVersion: apps/v1
        ...
        spec:
          replicas: <new value>
        

        并运行$ kubectl scale -f app.yaml --replicas=&lt;new value&gt;

        您可以通过运行$ kubectl get pods 来验证您的新副本数量

        就我而言,我也有兴趣在谷歌云上缩减我的虚拟机。我用$ gcloud container clusters resize appName --size=1 --zone "my-zone" 做到了这一点

        【讨论】:

          【解决方案6】:

          下面的例子展示了你应该如何扩大/缩小你的“pods/resource/deployments”。

          k8smaster@k8smaster:~/debashish$ more createdeb_deployment1.yaml 
          
          
          --- 
          apiVersion: apps/v1beta2
          kind: Deployment
          metadata: 
            name: debdeploy-webserver
          spec: 
            replicas: 1
            selector: 
              matchLabels: 
                app: debdeploy1webserver
            template: 
              metadata: 
                labels: 
                  app: debdeploy1webserver
              spec: 
                containers: 
                  - 
                    image: "docker.io/debu3645/debapachewebserver:v1"
                    name: deb-deploy1-container 
                    ports: 
                      - 
                        containerPort: 6060
          

          已创建部署 -->

          **kubectl -n debns1 create -f createdeb_deployment1.yaml**
          
          
          
          
          k8smaster@k8smaster:~/debashish$ `kubectl scale --replicas=5 **deployment**/debdeploy-webserver -n debns1`
          

          (扩大 5 个部署)

          k8smaster@k8smaster:~/debashish$ kubectl get pods -n debns1
          
          
          NAME                                   READY   STATUS    RESTARTS   AGE
          debdeploy-webserver-7cf4fb74c5-8wvzx   1/1     Running   0          16s
          debdeploy-webserver-7cf4fb74c5-jrf6v   1/1     Running   0          16s
          debdeploy-webserver-7cf4fb74c5-m9fpw   1/1     Running   0          16s
          debdeploy-webserver-7cf4fb74c5-q9n7r   1/1     Running   0          16s
          debdeploy-webserver-7cf4fb74c5-ttw6p   1/1     Running   1          19h
          resourcepod-deb1                       1/1     Running   5          6d18h
          
          
          
          
          k8smaster@k8smaster:~/debashish$ **kubectl get ep -n debns1**
          
          
          
          NAME                ENDPOINTS                                                     AGE
          frontend-svc-deb    192.168.1.10:80,192.168.1.11:80,192.168.1.12:80 + 2 more...   18h
          frontend-svc1-deb   192.168.1.8:80                                                14d
          frontend-svc2-deb   192.168.1.8:80                                                5d19h
          
          
          
          
          k8smaster@k8smaster:~/debashish$ **kubectl scale --replicas=2** deployment/debdeploy-webserver -n debns1 
          

          从 5 缩小到 2

          deployment.extensions/debdeploy-webserver 扩展

          k8smaster@k8smaster:~/debashish$ **kubectl get pods -n debns1**
          
          
          NAME                                   READY   STATUS        RESTARTS   AGE
          debdeploy-webserver-7cf4fb74c5-8wvzx   1/1     Terminating   0          35m
          debdeploy-webserver-7cf4fb74c5-jrf6v   1/1     Terminating   0          35m
          debdeploy-webserver-7cf4fb74c5-m9fpw   1/1     Terminating   0          35m
          debdeploy-webserver-7cf4fb74c5-q9n7r   1/1     Running       0          35m
          debdeploy-webserver-7cf4fb74c5-ttw6p   1/1     Running       1          19h
          resourcepod-deb1                       1/1     Running       5          6d19h
          
          
          k8smaster@k8smaster:~/debashish$ **kubectl get pods -n debns1**
          
          
          NAME                                   READY   STATUS    RESTARTS   AGE
          debdeploy-webserver-7cf4fb74c5-q9n7r   1/1     Running   0          37m
          debdeploy-webserver-7cf4fb74c5-ttw6p   1/1     Running   1          19h
          resourcepod-deb1                       1/1     Running   5          6d19h
          
          k8smaster@k8smaster:~/debashish$ kubectl **scale --current-replicas=4 --replicas=2** deployment/debdeploy-webserver -n debns1  (Check the current no. of deployments. If current replication is 4, then bring it down to 2, else dont do anything)
          
          
          error: Expected replicas to be 4, was 2
          
          
          k8smaster@k8smaster:~/debashish$ **kubectl scale --current-replicas=3 --replicas=10 deployment/debdeploy-webserver -n debns1**
          
          
          error: Expected replicas to be 3, was 2
          
          
          k8smaster@k8smaster:~/debashish$ **kubectl scale --current-replicas=2 --replicas=10 deployment/debdeploy-webserver -n debns1**
          

          deployment.extensions/debdeploy-webserver 扩展

          k8smaster@k8smaster:~/debashish$ **kubectl get pods -n debns1**
          
          
              NAME                                   READY   STATUS              RESTARTS   AGE
              debdeploy-webserver-7cf4fb74c5-46bxg   1/1     Running             0          6s
              debdeploy-webserver-7cf4fb74c5-d6qsx   0/1     ContainerCreating   0          6s
              debdeploy-webserver-7cf4fb74c5-fdq6v   1/1     Running             0          6s
              debdeploy-webserver-7cf4fb74c5-gd87t   1/1     Running             0          6s
              debdeploy-webserver-7cf4fb74c5-kqdbj   0/1     ContainerCreating   0          6s
              debdeploy-webserver-7cf4fb74c5-q9n7r   1/1     Running             0          47m
              debdeploy-webserver-7cf4fb74c5-qjvm6   1/1     Running             0          6s
              debdeploy-webserver-7cf4fb74c5-skxq4   0/1     ContainerCreating   0          6s
              debdeploy-webserver-7cf4fb74c5-ttw6p   1/1     Running             1          19h
              debdeploy-webserver-7cf4fb74c5-wlc7q   0/1     ContainerCreating   0          6s
              resourcepod-deb1                       1/1     Running             5          6d19h
          

          【讨论】:

          • 这个答案的格式需要改进。使用代码格式将命令/代码与您的答案的其余部分区分开来
          猜你喜欢
          • 2018-07-05
          • 2020-04-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-03
          • 2018-10-14
          • 2019-07-01
          相关资源
          最近更新 更多