Kubernetes 2 (Pod管理、资源清单)

本文介绍了如何在Kubernetes中进行Pod的基本操作,包括创建、部署Deployment(处理扩容、更新和回滚)、配置资源清单,以及高级技巧如设定监听端口、锁定IP、限制资源和重启策略。通过实例演示了yaml资源清单的编写和应用。
摘要由CSDN通过智能技术生成

一、pod基本操作

简介:
Pod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群中运行的一个进程,每个pod都有一个唯一的ip。一个pod类似一个豌豆荚,包含一个或多个容器(通常是docker),多个容器间共享IPC、Network和UTC namespace。
在这里插入图片描述
kubectl常用命令

kubectl run demo --image=myapp:v1		%创建新的pod,叫demo
kubectl get node						%查看k8s的所有node节点
kubectl get pods                        %列出所有运行的Pod信息
kubectl get pods -o wide                %列出Pod以及运行Pod节点信息
kubectl describe pod demo				%查看demo的详细信息
kubectl  get all						%查看所有资源信息
kubectl get ns                          %查询命名空间中的资源

首先确保k8s部署成功
请添加图片描述
运行容器镜像:myapp:v1,创建Pod应用
请添加图片描述
列出Pod信息
请添加图片描述
查看demo的详细信息,此pod被分配到的ip如下
请添加图片描述
表示pod创建成功
请添加图片描述
集群内部任意节点可以访问Pod,但集群外部无法直接访问
请添加图片描述
在系统的目录下查看分配的网络信息,可以看到mater主机(server2)是0网段,
请添加图片描述
server3是1网段
请添加图片描述
server4是2网段
请添加图片描述
删除名叫demo的pod
请添加图片描述

二、部署Deployment(pod 扩容、更新、回滚)

创建一个名为demo 的deployment,–replicas=2,副本数为2
请添加图片描述
查看pod的标签
请添加图片描述
可以看到Deployment控制器
请添加图片描述
删除其中一个Pod,由于–replicas=2,集群会自动创建Pod
请添加图片描述
service是一个抽象概念,定义了一个服务的多个pod逻辑合集和访问pod的策略,一般把service称为微服务。
创建service: kubectl expose deployment nginx --port=80 --target-port=80;
此时pod客户端可以通过service的名称访问后端的两个Pod,ClusterIP: 默认类型,自动分配一个仅集群内部可以访问的虚拟IP,访问该虚拟ip,可以看到后端负载均衡
请添加图片描述
kubectl describe svc demo:查看demo这个服务的虚拟ip和两个后端
请添加图片描述
此时pod副本数为2
请添加图片描述
Pod扩容,从2个副本变为6个副本
请添加图片描述
可以看到有六个后端服务
请添加图片描述
查看Pod节点的详细信息
请添加图片描述
Pod缩容
请添加图片描述
可以看到,缩容时,最新创建pod的会被最先删除
请添加图片描述
更新pod镜像,镜像从myapp:v1更新为myapp:v2
请添加图片描述
访问更新之后的pod的IP,可以看到v2版本
请添加图片描述
镜像更新之后,发现之前的副本信息也保存着,但是开启的副本数量是0,这是为了便于回滚
请添加图片描述
kubectl rollout history deployment nginx :查看历史版本
kubectl rollout undo deployment nginx --to-revision=1 :回滚版本
请添加图片描述
可以看到版本变回了v1
请添加图片描述
查看rs(replicasets信息)信息,说明版本更新和回退会在这两个rs中变化
请添加图片描述

三、资源清单

在k8s中,一般使用yaml格式的文件来创建我们期望产生的pod,该yaml文件称为资源清单,可以减少命令行的使用,减少错误,可重复性好,可以规范化部署。
apiVersion: group/version :指明api资源属于哪个群组和版本,同一个组可以有多个版本
kubectl api-versions :查询命令
请添加图片描述
kubectl delete deployment nginx :彻底删除pod
请添加图片描述
创建一个pod,输出为yaml文件,可以看到yaml文件编写的要求;
请添加图片描述

apiVersion: v1		%指明api资源属于哪个群组和版本,同一个组可以有多个版本
kind: Pod			%标记创建的资源类型,k8s主要支持以下资源类别(Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,Cronjob)
metadata:			%元数据
  name: pod-example	%对象名称
spec:				%定义目标资源的期望状态
  containers:
  - name: myapp		%容器名字
    image: myapp:v1	%指定镜像

也可以通过如下指令,查看pod所有参数,带有required是必须存在的参数
请添加图片描述

二、使用步骤

1.自主式Pod资源清单

文件格式为.yaml,创建名为pod-example的pod,镜像为myapp:v1;
执行清单,并查看pod信息
请添加图片描述
在sesrver1已经将busyboxplus镜像上传至仓库
请添加图片描述
将刚才的pod.yaml删除;
继续编写资源清单,创建一个pod节点,其中包含myapp容器和busyboxplus容器,并为其分配伪终端
请添加图片描述
查看pod的详细信息
请添加图片描述
进入busybox终端,-c 指定容器 ;-i 打开输入端口 ;-t 打开伪终端;
终端内访问localhost,看到的是pod中myapp容器的发布页面,这是因为pod中所有的副本共享一个ip
请添加图片描述
退出后可继续进入,pod节点会重启;
ctrl+d退出终端,但是再次查看可以看到还是running状态;
请添加图片描述
删除后,继续修改资源清单;
定义镜像拉取策略,有Always、Never、IfNotPresent三个值可选:
(1)Always:意思是每次都尝试重新拉取镜像;
(2)Never:表示仅适用本地镜像,本地有则使用本地镜像,不拉取;
(3)IfNotPresent:如果本地有镜像就使用本地镜像,没有就拉取在线镜像。
上面三个值都没设置的话,默认是Always。
请添加图片描述
可以看到没有拉取动作
请添加图片描述
请添加图片描述

2.设定监听端口

ports: 指定容器所在主机需要监听的端口号,会写到iptables策略中
- containerPort: 80
hostPort: 80 利用NAT把物理机的80端口映射到容器的80端口
请添加图片描述
此时直接访问server3,就是访问所运行的容器
请添加图片描述
在server3上查看没有80端口,但是在路由策略里面有80
请添加图片描述

3.使用清单锁定IP

hostNetwork: true :锁定pod为与主机共用ip,使用宿主机网络,读取应用资源清单重新创建pod
请添加图片描述
查询帮助文档
请添加图片描述
查看Pod信息可以看到pod的ip为其运行节点主机(server4)的ip;
curl访问该ip,可以成功访问pod中容器副本的默认发布页面;
(设置了hostNetwork值为true将无法在同一台宿主机上启动该容器的第二个副本)
请添加图片描述
到server4上查看端口80
请添加图片描述

4.限制内存和CPU

删除由资源清单生成的pod节点,继续修改文件,限制内存和cpu使用量,requests为最低限制,limit为最高限制
请添加图片描述
可以看到限制cpu和内存的信息
请添加图片描述

5.restartPolicy重启策略

默认容器副本退出后(ctrl d ),会自动重启,加上参数–restart=Never实现退出后不重启
请添加图片描述
不加参数,且使用ctrl p q 退出后,容器继续running状态,可以使用attach连接上正在运行的容器
请添加图片描述

6.锁定pod节点

强制将pod调度到指定节点server5上
请添加图片描述
由于并没有创建server5节点,因此读取资源清单后重新创建的pod无法就绪,一直处于pending等待状态
请添加图片描述
删除已有的pod,继续编辑资源清单,设置强制将pod调度到指定节点server3上
请添加图片描述
设置成功
请添加图片描述
若是指定下载的仓库不是公开的就会报错,将westos设置为不公开
请添加图片描述
删除pod节点,重新修改文件
请添加图片描述
可以看到报错信息,镜像拉取失败
请添加图片描述
请添加图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值