美文网首页k8s
三、Kubernetes快速入门

三、Kubernetes快速入门

作者: jan29 | 来源:发表于2021-11-15 17:57 被阅读0次

    1、pod管理

    1.1创建pod

    [root@master ~]# kubectl run nginx-pod --port=80 --restart=Always --image=nginx:1.14-alpine
    

    1.2查看pod

    [root@master ~]# kubectl get pod
    [root@master ~]# kubectl describe pod nginx-pod  #查看pod详细描述
    

    1.3删除pod

    [root@master ~]# kubectl delete po nginx-pod
    

    通过自主式的创建pod的方式存在以下问题
    1、pod一旦挂掉,就会影响业务
    2、自主式pod只能创建单个,没有副本机制
    3、即使创建多个pod,共同提供服务,也没有办法自动重建

    所以我们要使用通过pod控制器去管理pod

    2、控制器管理(deployment)

    2.1通过控制器去创建pod

    以deployment为例

    [root@master ~]# kubectl create deploy nginx-deploy --replicas=2 --port=80  --image=nginx:1.14-alpine
    

    2.2查看deployment

    [root@master ~]# kubectl get deploy nginx-deploy
    NAME           READY   UP-TO-DATE   AVAILABLE   AGE
    nginx-deploy   3/3     3            3           30m
    

    3、伸缩控制

    当业务需求量大的时候,需要扩容pod;当需求量小的时候需要去缩容pod

    [root@master ~]# kubectl scale --replicas=5 deploy nginx-deploy
    [root@master ~]# kubectl scale --replicas=3 deploy nginx-deploy
    

    4、滚动更新

    在业务不中断的前提下去更新pod

    [root@master ~]# kubectl describe deploy nginx-deploy | grep Image  #查看当前镜像
        Image:        nginx:1.14-alpine  
    [root@master ~]# kubectl set image deploy nginx-deploy nginx=nginx:1.17-alpine  
    [root@master ~]# kubectl rollout status deploy nginx-deploy  #查看滚动更新状态
    Waiting for deployment "nginx-deploy" rollout to finish: 1 out of 3 new replicas have been updated...
    ......
    deployment "nginx-deploy" successfully rolled out
    

    使用发现有问题,需要去回滚

    [root@master ~]# kubectl rollout undo deploy nginx-deploy   #回退到上一个版本
    [root@master ~]# kubectl rollout undo deploy --to-revision=2  #回退到第二个版本
    [root@master ~]# kubectl describe deploy nginx-deploy | grep Image  #查看当前镜像
        Image:        nginx:1.15-alpine
    [root@master ~]# kubectl rollout history deploy nginx-deploy #查看历史版本
    

    5、Service管理

    需要最终把业务发布到互联网当中,就需要前端service,将pod进行代理

    [root@master ~]# kubectl expose --name=nginx-svc --port=32222 --target-port=80 deploy nginx-deploy   #service前端端口为32222 后端为80 默认使用ClusterIP
    [root@master ~]# kubectl get svc  #查看serviceIP地址以及端口
    NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)     AGE
    kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP     8h
    nginx-svc    ClusterIP   10.107.131.111   <none>        32222/TCP   3s
    [root@master ~]# curl 10.107.131.111:32222  #集群内访问
    <!DOCTYPE html>
    ........
    </html>
    

    这种方式只能在集群中进行访问,无法将业务发布出去
    通过edit修改pod类型,将业务发布出去

    [root@master ~]# kubectl edit svc nginx-svc  #修改service类型为NodePort
    apiVersion: v1
    kind: Service
    spec:
      type: NodePort
    [root@master ~]# kubectl get svc #查看Seriver端口
    NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE
    kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP           8h
    nginx-svc    NodePort    10.107.131.111   <none>        32222:30497/TCP   3m27s
    

    访问资源


    image.png

    6、删除资源

    [root@master ~]# kubectl delete deploy nginx-deploy
    deployment.apps "nginx-deploy" deleted
    [root@master ~]# kubectl delete svc nginx-svc
    service "nginx-svc" deleted
    

    相关文章

      网友评论

        本文标题:三、Kubernetes快速入门

        本文链接:https://www.haomeiwen.com/subject/truqtrtx.html