linux企业级运维----->kubernetes(2) 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
------------------------

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述在这里插入图片描述

#在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

在这里插入图片描述

#创建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.png在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#暴露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#多次调用,显示结果不一样,实现负载均衡

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

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

可以看到新建容器分配到的ip改变,此时再次查看service的详细属性信息可以看到其包含的三个访问后端的ip也自动进行了更新,我们可以将其理解为另一种形式的健康检测
在这里插入图片描述

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

在这里插入图片描述在这里插入图片描述

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中容器副本的镜像版本,原来的容器副本被删掉,创建了新镜像版本的容器副本在这里插入图片描述

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中镜像回滚到原来的版本时,原来的控制器又会再次运行
在这里插入图片描述

在这里插入图片描述可以看到pod中的镜像回到原来的v1,新的rs也不会删掉
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值