zoukankan      html  css  js  c++  java
  • 【Kubernetes】副本的扩容与缩容

    环境

    1. kubernetes 1.20.2
    2. Spring Boot 2.5.0-M1

    目标

    现在我们有一个副本控制器 rc,可以很方便地实现扩容与缩容操作。

    缩容

    replicas 没有写,默认为 1。
    selector 没有写,默认和 Pod 的标签一致。

    缩容 rc.yaml

    apiVersion: v1
    kind: ReplicationController
    metadata:
      name: rc-demo
    spec:
      template:
        metadata:
          labels:
            app: myapp
        spec:
          containers:
            - name: pod-demo
              image: jiangbo920827/spring-demo:actuator
              ports:
                - containerPort: 8080
    
    

    查看缩容 Pod

    [root@master kubernetes]# kubectl get pod -o wide
    NAME            READY   STATUS    RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
    rc-demo-7dnrc   1/1     Running   0          17s   10.244.1.78   node1   <none>           <none>
    

    查看缩容 rc

    [root@master kubernetes]# kubectl get rc
    NAME      DESIRED   CURRENT   READY   AGE
    rc-demo   1         1         1       15h
    

    扩容

    扩容 rc.yaml

    apiVersion: v1
    kind: ReplicationController
    metadata:
      name: rc-demo
    spec:
      replicas: 3
      template:
        metadata:
          labels:
            app: myapp
        spec:
          containers:
            - name: pod-demo
              image: jiangbo920827/spring-demo:actuator
              ports:
                - containerPort: 8080
    
    

    查看扩容 Pod

    [root@master kubernetes]# kubectl get pod  -o wide
    NAME            READY   STATUS    RESTARTS   AGE     IP            NODE    NOMINATED NODE   READINESS GATES
    rc-demo-7dnrc   1/1     Running   0          3m55s   10.244.1.78   node1   <none>           <none>
    rc-demo-rcn7s   1/1     Running   0          23s     10.244.1.79   node1   <none>           <none>
    rc-demo-xww8g   1/1     Running   0          23s     10.244.1.80   node1   <none>           <none>
    

    查看扩容 rc

    [root@master kubernetes]# kubectl get -f rc.yaml -o wide
    NAME      DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES                               SELECTOR
    rc-demo   3         3         3       15h   pod-demo     jiangbo920827/spring-demo:actuator   app=myapp
    

    命令扩容和缩容

    [root@master kubernetes]# kubectl get pod -o wide
    NAME            READY   STATUS    RESTARTS   AGE     IP            NODE    NOMINATED NODE   READINESS GATES
    rc-demo-7dnrc   1/1     Running   0          7m53s   10.244.1.78   node1   <none>           <none>
    rc-demo-rcn7s   1/1     Running   0          4m21s   10.244.1.79   node1   <none>           <none>
    rc-demo-xww8g   1/1     Running   0          4m21s   10.244.1.80   node1   <none>           <none>
    [root@master kubernetes]# kubectl scale --replicas=1 rc rc-demo
    replicationcontroller/rc-demo scaled
    
    [root@master kubernetes]# kubectl get pod -o wide
    NAME            READY   STATUS    RESTARTS   AGE     IP            NODE    NOMINATED NODE   READINESS GATES
    rc-demo-7dnrc   1/1     Running   0          9m31s   10.244.1.78   node1   <none>           <none>
    
    [root@master kubernetes]# kubectl scale --replicas=3 rc rc-demo
    replicationcontroller/rc-demo scaled
    
    [root@master kubernetes]# kubectl get pod -o wide
    NAME            READY   STATUS    RESTARTS   AGE     IP            NODE    NOMINATED NODE   READINESS GATES
    rc-demo-7dnrc   1/1     Running   0          9m54s   10.244.1.78   node1   <none>           <none>
    rc-demo-7kl4t   1/1     Running   0          14s     10.244.2.41   node2   <none>           <none>
    rc-demo-nl5pq   1/1     Running   0          14s     10.244.1.81   node1   <none>           <none>
    
    

    通过命令,可以很方便地进行扩容和缩容操作。
    但是在操作的过程中,发现 Pod 的 IP 变化了,而且所在节点服务器也有可能发生变化。
    如果是在这几个 Pod 的前面增加负载均衡器,那么就不得不修改配置的 IP 地址。
    实际上,在 Pod 重启后(和容器的重启区分),是新的一个 Pod,k8s 在设计上,Pod 应该是短暂的,随时可以替换的。
    所以不应该依赖 Pod 所在的 IP。

    总结

    介绍了通过副本控制器很容易地进行扩容和缩容操作。同时也发现了一个问题,Pod 的 IP 地址是不固定的,给我们的访问增加了很大的难度。

    附录

  • 相关阅读:
    基于jQuery的六大表单向导插件
    oracle行转列(动态行转不定列)
    PLSql自动替换---辅助写代码
    ExcelReport第一篇:使用ExcelReport导出Excel
    改HTML5里的input标签的required属性的提示为英文的
    spring boot:用redis+lua实现表单接口的幂等性(spring boot 2.2.0)
    linux(centos8):centos8.1安装(详细过程/图解)(vmware fusion/CentOS-8.1.1911-x86_64)
    linux(centos8):配置docker的cgroup driver为systemd
    linux(centos8):禁用selinux(临时关闭/永久关闭)
    linux(centos8):firewalld对于请求会选择哪个zone处理?
  • 原文地址:https://www.cnblogs.com/jiangbo44/p/14349028.html
Copyright © 2011-2022 走看看