kubernetes Pod管理

    科技2022-07-11  85

    pod管理

    Pod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群 中运行的一个进程,每个pod都有一个唯一的ip。一个pod类似一个豌豆荚,包含一个或多个容器(通常是docker),多个容器间 共享IPC、Network和UTC namespace。

    1.Pod命令 (https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands)

    创建pod任务(如果使用控制器建立的话删除时先删除控制器)

    # kubectl create deployment myapp --image=nginx 创建 # kubectl get pod 查看 # kubectl delete pod myapp-6d8d776547-4w4ph 删除 # kubectl delete deployment 名称 用控制器管理地pod删除 # kubectl describe pod 描述 # kubectl get pod -n kube-system -o wide 资源配置清单

     2.扩容与缩容(集群内部任意可以访问pod,外部不可以)

    # kubectl scale deployment myapp --replicas=10 扩容 # kubectl scale deployment myapp --replicas=5 缩容 # kubectl get pod -o wide

     

    service是一个抽象概念,定义了一个服务的多个pod逻辑合集和访问pod的策略, 一般把service称为微服务

    创建service

    # kubectl expose deployment nginx --port=80 --target-port=80 # kubectl describe svc nginx

    此时pod客户端可以通过service的名称访问后端的两个Pod

     ClusterIP: 默认类型,自动分配一个仅集群内部可以访问的虚拟IP

    测试:

    下载镜像busyboxplus

    # kubectl run demo --image=busyboxplus -it 运行busybox去测试 # curl 10.100.109.60 此vip使用 kubectl describe svc nginx 获取

    2.更新pod镜像

    为了方便观察我们这里使用myapp来测试进行版本更新以及回滚

    上传myapp的镜像到私有仓库,在我们服务端配置好daemo.json

    # kubectl set image deployment nginx nginx=myapp:v1 --record 更新将nginx更新为myapp镜像,并且记录 # kubectl rollout history deployment nginx 查看版本历史

    测试:

    # kubectl attach demo -it # curl 10.100.109.60

    版本更新

     

    版本回滚

    # kubectl rollout history deployment nginx 查看历史版本 # kubectl rollout undo deployment nginx --to-revision=6 将版本V2回退到V1

    以上pod只有在集群内部可以访问,如果集群外部需要访问需要打开NodeNort

    # kubectl edit svc nginx 接口type改为NodePort # kubectl expose deployment nginx --port=80 --target-port=80 -- type=NodePort 或者创建server时指定

    测试:在外部网络访问

    # curl 172.25.254.10:32193 # curl 172.25.254.11:32193

    Processed: 0.025, SQL: 8