Linux企业运维##Kubernetes(二)Pod管理

Linux企业运维##Kubernetes(二)Pod管理,第1张

Linux企业运维##Kubernetes(二)Pod管理

目录

一、Pod简介

二、Pod管理

1.Pod创建与使用

2.Pod扩容与缩容

3.Pod中镜像的滚动更新

4.设定暴露端口


一、Pod简介

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

二、Pod管理 1.Pod创建与使用

(1)先启动harbor仓库,因为集群创建pod时需要从私有仓库中拉取镜像,检查test1的harbor仓库是否启动

(2)test2集群Master端查看集群内各节点均处于就绪状态

(3)启动容器创建Pod应用,(当前版本的k8s)使用这种方式不可以指定Pod内副本个数,只能生成一个容器,使用describe参数可以查看指定Pod中容器的详细属性信息 

kubectl run demo1 --image=myapp:v1   ##创建Pod应用

kubectl describe pod demo1           ##查看指定Pod中容器的详细属性信息

kubectl get pod -o wide查看Pod资源的额外信息如容器分配到的ip、调度到集群中的哪一台主机上, curl访问查询到的ip可以看到生成容器所使用的镜像的默认发布页面

(4)删除Pod,创建deployment控制器,这种方式可以使用-replicas参数指定创建副本的个数,集群会自动创建Pod,此时查看pod信息可以看到pod中有4个随机调度生成的容器副本

kubectl delete pod demo1   ##删除

kubectl create deployment demo --image=myapp:v1 --replicas=4 ##创建deployment控制器,指定创建副本的个数为4

2.Pod扩容与缩容

(1)使用scale参数将已有pod中的容器副本数目扩容到指定数量6

kubectl scale deployment demo --replicas=6

(2)使用scale参数将已有pod中的容器副本数目缩容到指定数量3,缩容时是把最新创建的容器副本删掉,保留运行时间最长的容器副本

kubectl scale deployment demo --replicas=3

3.Pod中镜像的滚动更新

(1)使用deployment控制器更新pod中容器副本的镜像版本,可以看到原来的容器副本被删掉,创建了新镜像版本的容器副本

kubectl set image deployment demo myapp=myapp:v2

(2)查看Pod资源的额外信息得到容器分配到的ip, curl访问查询到的ip,从镜像默认发布页面可以看出生成容器所使用的镜像版本成功更新 

(3)查看集群中所有已存在的资源可以发现,原来的RS副本控制器不会删掉,会创建新的RS控制器,这样便于镜像版本回滚,当pod中镜像回滚到原来的版本时,原来的控制器又会再次运行

kubectl get all

(4)使用deployment控制器回滚pod中容器副本的镜像版本,查看Pod资源的额外信息得到容器分配到的ip, curl访问查询到的ip可以看到生成容器所使用的镜像版本已回滚,原来的RS控制器再次运行,同理新的RS控制器不会删掉

kubectl rollout undo deployment demo --to-revision=1

4.设定暴露端口

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

自动分配一个仅集群内部可以访问的虚拟IP暴露deployment控制器创建service,设定暴露端口,此时k8s集群会为pod自动分配一个仅集群内部可以访问的虚拟IP即vip,访问这一vip会轮询pod中的几个容器副本,实现自动负载均衡

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

kubectl expose deployment demo --port=80 --target-port=80

kubectl describe svc demo  ##查看service详细信息

使用test2节点curl此虚拟ip,可看到已实现负载均衡(随机访问节点中的一个) 

NodePort:在ClusterIP基础上为Service在每台机器上绑定一个端口,这样就可以通过  NodeIP:NodePort 来访问该服务类型暴露端口,让外部客户端访问Pod

修改service的type为NodePort

kubectl edit svc dem

 

此时在宿主机访问集群内任意节点ip的30325端口,都可访问到pod,且实现了负载均衡

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5704491.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存