k8spod管理与资源清单

Posted S4061222

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8spod管理与资源清单相关的知识,希望对你有一定的参考价值。

一、Pod管理

pod简介

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

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

实验环境:
保证harbor私有仓库启动状态,再启动k8s集群

1.创建pod节点

查看pod 信息

查看 pod 的信息(IP,NODE,…)
可以在系统的目录下查看到分配的网络信息(server2,3,4都可以看到)
cd /var/run/flannel/,cat subnet.env


curl 10.244.2.2 ##集群内部任意节点可以访问Pod,但集群外部无法直接访问

查看 pod 的详细信息
集群给 pod 分配的 ip 是 10.244.2.2 ,该地址在初始化集群时是定义过的;此时运行在 server4 上;每个节点上的网段是不同的;默认情况下 k8s 的 master 不参加调度,网段应该是 0 网段;

2.删除pod

自主式的 pod ,在删除时便会彻底删除;

3.创建指定数量的pod

创建2个副本
通过deployment 控制器运行的 pod 在删除之后,控制器会自动再次新建一个 pod ;


查看pod的详细信息和标签

kubectl get all
##all指所有已存在的资源,显示运行的Pod,Service,Deployment,和ReplicasSet的关键信息
删除后会重新创建1个

4.暴露端口

暴露deployment控制器创建的pod的端口信息:
此时 pod 客户端可以通过 service 的名称访问后端的两个 Pod(将指定端口80暴露,使得外部可以访问);
ClusterIP: 默认类型,自动分配一个仅集群内部可以访问的虚拟IP.

访问生成的ip地址10.109.46.171,整体负载均衡

查看svc(demo)节点信息.

后端节点Endpoints:必须能看到生成的IP地址才能访问成功


删除一个后,出现新的

查看svc(新demo)节点信息,后端节点Endpoints的IP也会发生变化
kubectl get pod -o wide可以看到都是运行在server4上的,查看pod信息,节点信息都是running而且都是ready即表示成功

5.Pod扩容

pod变成6个节点

查看svc节点信息,可以看到endpoints的IP地址也变为了6个

生成的6个pod节点也都是可以访问,实现负载均衡
整体负载均衡

6.pod缩容

pod变成2个节点


都在server3上(随机)

7.更新pod镜像

myapp:v1更新镜像为myapp:v2

kubectl get pod时,出现了terminationg状态,表示正在替换中



更新后以前的rs不会消失,为了回滚更新

查看版本迭代的历史信息,版本有1和2

访问更新之后的IP

8.回滚版本

myapp:v2-----v1

访问IP进行测试

查看rs信息,可以看到:
版本更新和回退会在这两个rs中变化

二、资源清单

使用命令行对pod节点进行操作,不高效;资源清单就好比shell脚本一样,按照清单执行命令,相比较命令行更加方便,也易于修改。

回收之前的pod,留下一个名demo的pod

1.建立自主式 pod 的清单文件

打开一个名demo的pod,利用已经有的deployment生成一个yaml文件(生成模板

编写自主式 pod 的清单文件,镜像为myapp:v1,pod名为pod-example

执行清单,并查看pod信息


同一个清单文件中,一个 pod,包含myapp容器和busyboxplus容器

应用pod.yaml文件,并查看信息,pod-example的pod中有两个容器处于READY状态

查看名为pod-example的pod的详细信息


进入busybox终端,-c指定容器 -i打开输入端口 -t打开伪终端
同一pod,多个容器,需要-c指定容器名称
终端内访问localhost

退出后可继续进入,pod节点会重启

删除pod节点后在创建,重启次数为0


删除pod.yaml节点

2.镜像拉取设定

设定参数的意思是表示当镜像不存在的时候会拉取;默认值是always
IfNotPresent:本地有则使用本地镜像,不拉取


查看pod的详细信息

直接创建,没有拉取动作

3.设定监听端口

指定容器所在主机需要监听的端口号80,设置了hostPort同一台主机无法启动该容器的相同副本,因为主机的端口号不能相同,只会写到iptables中


查看pod分配到了server4上,访问server4

server4上,发现iptables路由策略中写入80,但无端口无80

4.使用清单锁定IP

锁定为与主机共用ip:
hostNetwork: true

查看pod的ip, 发现已经变为了server4的IP

server4上查看到端口80

5.限制cpu和mem内存

requests为最低限制,limit为最高限制

查看pod的详细信息

可以看到有内存和cpu的限制

6.容器退出不重启–restart=Never


使用后退出,该节点显示已完成,且不会自动重启,状态处于0/1

默认是会重启服务的

7.帮助

kubectl explain pod ##查看pod所有参数,-required-带有required是必须存在的参数

8.锁定pod节点

锁定pod节点在server5上(server5不存在)

执行清单后,发现pod处于pending状态!


当调度到的主机名不存在时,此时就会失败

锁定pod节点在server4上

查看pode的信息,发现锁定成功,在server4上

以上是关于k8spod管理与资源清单的主要内容,如果未能解决你的问题,请参考以下文章

k8s核心资源之Pod概念及入门使用讲解&&资源清单yaml文件内容讲解与编写

解决未能加载文件或程序集“Newtonsoft.Json ...."或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)(代码片段

精选的Python框架,库,软件和资源的精选清单墙裂推荐收藏

k8spod生命周期与控制器

Sublime text3最全快捷键清单

Docker&Kubernetes ❀ Kubernetes集群实践与部署笔记知识点梳理