清单介绍
在k8s中,一般使用yaml格式的文件来创建我们期望产生的pod,该yaml文件称为资源清单,可以减少命令行的使用,减少错误,可重复性好,可以规范化部署。
apiVersion: group/version :指明api资源属于哪个群组和版本,同一个组可以有多个版本
kubectl api-versions :查询版本命令
查看pod所有参数,带有required是必须存在的参数
生成了一个清单
apiVersion: v1 %指明api资源属于哪个群组和版本,同一个组可以有多个版本
kind: Pod %标记创建的资源类型,k8s主要支持以下资源类别(Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,Cronjob)
metadata: %元数据
name: pod-example %对象名称
spec: %定义目标资源的期望状态
containers:
- name: myapp %容器名字
image: myapp:v1 %指定镜像
使用清单
1.自主式Pod资源清单
镜像拉取策略
指定容器启动命令
查看详细信息
查看日志
查看合适的参数,stdin tty
进入交互式
进入busybox终端,-c 指定容器 ;-i 打开输入端口 ;-t 打开伪终端;
终端内访问localhost,看到的是pod中其他容器的发布页面nginx,这是因为pod中所有的副本共享一个ip
定义镜像拉取策略,有Always、Never、IfNotPresent三个值可选:
(1)Always:意思是每次都尝试重新拉取镜像;
(2)Never:表示仅适用本地镜像,本地有则使用本地镜像,不拉取;
(3)IfNotPresent:如果本地有镜像就使用本地镜像,没有就拉取在线镜像。
上面三个值都没设置的话,默认是Always。
2.设定监听端口
端口冲突
ports: 指定容器所在主机需要监听的端口号,会写到iptables策略中
- containerPort: 80
hostPort: 80 利用NAT把物理机的80端口映射到容器的80端口
因为在server2上有端口映射,所以外部主机只能访问server2,server1和3不行
3.使用清单锁定IP
hostNetwork: true :锁定pod为与主机共用ip,使用宿主机网络,读取应用资源清单重新创建pod
查看Pod信息可以看到pod的ip为其运行节点主机(server2)的ip;
(设置了hostNetwork值为true将无法在同一台宿主机上启动该容器的第二个副本)
直接在机器上监听80
4.限制CPU和内存
删除由资源清单生成的pod节点,继续修改文件,限制内存和cpu使用量,requests为最低限制,limit为最高限制
可以看到限制cpu和内存的信息
server2有两个CPU,但是现在设置为3个
一直是Pending,就会有问题
锁定pod节点
添加标签
因为没有一个节点有标签,所以处于pending
加个标签就可以
现在server2和server3都加上标签,被负载均衡了
如果一个节点有问题,会自动均衡到其他有标签的节点删除标签