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)(代码片段