linux企业级运维----->kubernetes(2) Pod管理

目录

  • 一、Pod
    • 1、Pod相关概念
    • 2、pod相关命令
  • 二、Pod管理
    • 1、pod的创建与使用
    • 2、pod的扩容和缩容
    • 3、pod中镜像的滚动更新

一、Pod

1、Pod相关概念

什么是Pod?
Pod翻译成中文是豌豆荚的意思,它是kubernetes处理的最小调度单元
Pod由一个或者多个容器组成,这些容器共享运行环境、存
储卷和IP空间,pod中的容器总是被同时调度,它们有共同的运行环境,运行在同一个共享上下文中,一个pod相当于一个逻辑主机–比方说我们想要部署一个tomcat应用,如果不用容器,我们可能会部署到物理机,虚拟机或者云主机上,那么出现k8s之后,我们就可以把应用部署到pod中,所以pod充当的是一个逻辑主机的角色。

2、pod相关命令

命令 含义
kubectl get pod 列出命名空间中所有的pod
kubectl get pod -o wide 在详细信息中可以看到分配的ip
kubectl get all #查看所有resource
kubectl scale deployment 3 扩展或扩容deployment中Pod的数量为3
kubectl create deployment webserver 创建指定名称为webserver的depoyment
kubectl delete pod nginx 删除pod nginx
kubectl scale deployment webserver --replicas=6 扩展容器副本的数量
kubectl set image deployment webserver myapp=myapp:v2 镜像的滚动更新
kubectl rollout history deployment webserver 查看会滚历史可以看到有两个版本
kubectl rollout undo deployment webserver --to-revision=1 镜像的回滚

二、Pod管理

#server1中
docker-compose start#开启harbor仓库
#server2中
kubectl get  pod -n kube-system#集群master端查看集群内各节点处于就绪状态
export KUBECONFIG=/etc/kubernetes/admin.conf
vim .bash_profile
-----------------------
export KUBECONFIG=/etc/kubernetes/admin.conf
------------------------

linux企业级运维----->kubernetes(2) Pod管理_第1张图片linux企业级运维----->kubernetes(2) Pod管理_第2张图片

在这里插入图片描述

1、pod的创建与使用

#在真机中给server1中传
#server1中
docker load -i myapp.tar
docker tag ikubernetes/myapp:v1 reg.westos.org/library/myapp:v1
docker tag ikubernetes/myapp:v2 reg.westos.org/library/myapp:v2
docker push  reg.westos.org/library/myapp:v1
docker push  reg.westos.org/library/myapp:v2

linux企业级运维----->kubernetes(2) Pod管理_第3张图片在这里插入图片描述

#在server2中
#开启nginx实例,添加并运行pod
kubectl run nginx --image=nginx:latest#这种方法并不能指定pod内副本的个数只能生成一个容器
kubectl get pod -o wide#列出所有的pod并显示更详细的信息
curl 10.244.2.2
kubectl delete pod nginx#删除pod

linux企业级运维----->kubernetes(2) Pod管理_第4张图片

#创建deployment控制器,这种方式可以使用–replicas参数指定创建副本的个数,集群会自动创建Pod,此时查看pod信息可以看到pod中有两个随机调度生成的容器副本
kubectl create deployment webserver --image=myapp:v1#创建指定名称为webserver的deployment同时运行myapp镜像
kubectl get pod#查看创建成功
kubectl get pod -o wide#在详细信息中可以看到分配的ip
curl 10.244.1.2
curl 10.244.1.2/hostname.html
kubectl get all#查看所有resource
kubectl scale deployment webserver --replicas=3#扩展和减少时直接修改后边数字
kubectl get pod
kubectl get all#可以看到容器副本变为3个
#删除pod中的某个容器副本后,RS副本控制器自动检测到容器副本数量不足,会重新拉起一个容器副本维持3个的总数不变

![在这里插入图片描述](https://img-blog.csdnimg.cn/ac7baee9943c4f4c8d67a179c67c1033.pnglinux企业级运维----->kubernetes(2) Pod管理_第5张图片
linux企业级运维----->kubernetes(2) Pod管理_第6张图片
linux企业级运维----->kubernetes(2) Pod管理_第7张图片
linux企业级运维----->kubernetes(2) Pod管理_第8张图片

#暴露deploment控制器创建service,指定端口80对外暴露为80端口
#此时k8s集群会为pod自动分配一个仅集群内部可以访问的虚拟IP即vip,访问这一vip会轮询pod中的两个容器副本,实现自动负载均衡
kubectl expose deployment webserver --port=80 --target-port=80
kubectl get svc#查看svc
kubectl describe svc webserver#查看service的详细属性可以看到包含3个访问后端
curl 10.104.162.231/hostname.html#多次调用,显示结果不一样,实现负载均衡

在这里插入图片描述

linux企业级运维----->kubernetes(2) Pod管理_第9张图片linux企业级运维----->kubernetes(2) Pod管理_第10张图片

#删除pod中的某个容器副本可以看到rs控制器会重新拉取一个副本
kubectl get pod -o wide
kubectl delete pod webserver-555478bbb6-lsb9l
kubectl get pod -o wide

可以看到新建容器分配到的ip改变,此时再次查看service的详细属性信息可以看到其包含的三个访问后端的ip也自动进行了更新,我们可以将其理解为另一种形式的健康检测
linux企业级运维----->kubernetes(2) Pod管理_第11张图片

2、pod的扩容和缩容

kubectl get pod
#使用scale参数将已有pod中的容器副本数目扩容到指定数量
kubectl scale deployment webserver --replicas=6#原来为3个扩容为6个
kubectl get pod
kubectl scale deployment webserver --replicas=3#缩容为3个,可以看到优先缩容新创建的容器副本
kubectl get pod

linux企业级运维----->kubernetes(2) Pod管理_第12张图片linux企业级运维----->kubernetes(2) Pod管理_第13张图片

3、pod中镜像的滚动更新

kubectl set image deployment webserver myapp=myapp:v2
kubectl get pod
kubectl get pod -o wide
curl 10.244.2.8#版本更新为v2

使用deployment控制器更新pod中容器副本的镜像版本,原来的容器副本被删掉,创建了新镜像版本的容器副本linux企业级运维----->kubernetes(2) Pod管理_第14张图片

kubectl get all#查看所有信息
kubectl rollout history deployment webserver#查看会滚历史可以看到有两个版本
kubectl rollout undo deployment webserver --to-revision=1
kubectl get pod -o wide
curl 10.244.1.7
kubectl get rs

查看集群中所有已存在的资源可以发现,原来的RS副本控制器不会删掉,会创建新的RS控制器,这样便于镜像版本回滚,当pod中镜像回滚到原来的版本时,原来的控制器又会再次运行
linux企业级运维----->kubernetes(2) Pod管理_第15张图片

linux企业级运维----->kubernetes(2) Pod管理_第16张图片可以看到pod中的镜像回到原来的v1,新的rs也不会删掉
linux企业级运维----->kubernetes(2) Pod管理_第17张图片

你可能感兴趣的:(K8S,kubernetes,linux,运维)