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


文章目录

  • Linux企业运维——Kubernetes(二)Pod管理
  • 一、Pod简介
  • 二、Pod管理
  • 2.1、Pod创建与使用
  • 2.2、Pod扩容缩容
  • 2.3、Pod中镜像的滚动更新


一、Pod简介

Pod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群中运行的一个进程,每个pod都有一个唯一的ip。

一个pod类似一个豌豆荚,包含一个或多个容器(通常是docker),多个容器间共享IPC、Network和UTC namespace。

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_linux

二、Pod管理

一个pod有唯一的ip,pod中的副本共享这一个ip,共享一个ip不冲突,但不能在一个pod里启动同一容器的多个副本
(以下所有操作都是在集群的master端server2做)

2.1、Pod创建与使用

1、启动之前创建的k8s集群,这里注意一定要先启动仓库,因为集群创建pod时需要从私有仓库中拉取镜像,检查server1的harbor仓库是否启动

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_运维_02


2、server2集群Master端查看集群内各节点均处于就绪状态

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_容器_03


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

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_容器_04


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

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_linux_05


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

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_kubernetes_06


k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_docker_07


查看pod中容器的标签

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_kubernetes_08


6、删除pod中的某个容器副本后,RS副本控制器自动检测到容器副本数量不足,会重新拉起一个容器副本

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_docker_09


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

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

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_容器_10


k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_容器_11


查看service的详细属性信息可以看到其包含了两个访问后端

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_kubernetes_12


8、删除pod中的某个容器副本,RS副本控制器重新拉起一个容器副本,可以看到新建容器分配到的ip改变,此时再次查看service的详细属性信息可以看到其包含的两个访问后端的ip也自动进行了更新,我们可以将其理解为另一种形式的健康检测

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_docker_13


k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_容器_14

2.2、Pod扩容缩容

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

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_linux_15


2、查看service的详细属性信息可以看到service的虚拟vip及其所包含的6个访问后端

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_容器_16


3、访问service的虚拟vip会轮询pod中的多个容器副本,实现自动负载均衡

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_运维_17


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

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_容器_18

2.3、Pod中镜像的滚动更新

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

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_linux_19

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

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_容器_20


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

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_kubernetes_21


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

k8s 在pod添加subdomain在别的容器中Name or service not known k8s如何固定pod的ip_docker_22