查看资源属性清单
kubectl explain pod kubectl explain pod.spec
在kubernetes中基本所有资源的一级属性都是一样的,主要包含5部分:
- apiVersion 版本,由kubernetes内部定义,版本号必须可以用 kubectl api-versions 查询到
- kind 类型,由kubernetes内部定义,版本号必须可以用 kubectl api-resources 查询到
- metadata 元数据,主要是资源标识和说明,常用的有name、namespace、labels等
- spec 描述,这是配置中最重要的一部分,里面是对各种资源配置的详细描述
- status 状态信息,里面的内容不需要定义,由kubernetes自动生成
在上面的属性中,spec是接下来研究的重点,继续看下它的常见子属性:
- containers <[]Object> 容器列表,用于定义容器的详细信息
- nodeName 根据nodeName的值将pod调度到指定的Node节点上
- nodeSelector
- hostNetwork 是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络
- volumes <[]Object> 存储卷,用于定义Pod上面挂在的存储信息
- restartPolicy 重启策略,表示Pod在遇到故障的时候的处理策略
- Always:总是从远程仓库拉取镜像(一直远程下载)
- ifNotPresent:本地有则使用本地镜像,本地没有则从远程仓库拉取镜像(本地有就本地 本地没远程下载)
- Never:只使用本地镜像,从不去远程仓库拉取,本地没有就报错 (一直使用本地)
默认值说明:
- 如果镜像tag为具体版本号, 默认策略是:IfNotPresent
- 如果镜像tag为:latest(最终版本) ,默认策略是always
busybox并不是一个程序,而是类似于一个工具类的集合,kubernetes集群启动管理后,它会自动关闭。解决方法就是让其一直在运行,这就用到了command配置。这里的命令是创建文件,并每个3s写入时间。
cat >pod-base.yaml<端口设置ports> /tmp/hello.txt; sleep 3; done;"] env: #不推荐使用env - name: 'user' value: '啊' EOF kubectl apply -f pod-base.yaml kubectl get pod -n dev ''' NAME READY STATUS RESTARTS AGE pod-base 2/2 Running 0 2m1s ''' ''' kubectl exec pod名 -n 命名空间 -it -c 容器名 在容器内部执行的命令 -it:交互模式 ''' kubectl exec pod-base -n dev -it -c busybox /bin/sh #打印环境变量$user=啊 echo $user 查看创建的文件 tail -f /tmp/hello.txt #退出容器:ctrl+p+q or 输入exit回车
本小节来介绍容器的端口设置,也就是containers的ports选项。
首先看下ports支持的子选项:
kubectl explain pod.spec.containers.ports KIND: Pod VERSION: v1 RESOURCE: ports <[]Object> FIELDS: name资源配额# 端口名称,如果指定,必须保证name在pod中是唯一的 containerPort # 容器要监听的端口(0 # 容器要在主机上公开的端口,如果设置,主机上只能运行容器的一个副本(一般省略) hostIP # 要将外部端口绑定到的主机IP(一般省略) protocol # 端口协议。必须是UDP、TCP或SCTP。默认为“TCP”。
在这对cpu和memory的单位做一个说明:
- cpu:core数,可以为整数或小数
- memory: 内存大小,可以使用Gi、Mi、G、M等形式
apiVersion: v1
kind: Pod
metadata:
name: pod-resources
namespace: dev
spec:
containers:
- name: nginx
image: nginx:1.17.1
resources: # 资源配额
limits: # 限制资源(上限)
cpu: "2" # CPU限制,单位是core数
memory: "10Gi" # 内存限制
requests: # 请求资源(下限)
cpu: "1" # CPU限制,单位是core数
memory: "10Mi" # 内存限制



