文章目录
六、Kubernetes Workloads(Kubernetes 作业管理)
1.5 Pod模板
Pod 模板是包含在其他对象中的 Pod 规范,例如 ReplicaSet、 Jobs 和 DaemonSets。 控制器使用 Pod 模板来制作实际使用的 Pod。
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox
command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']
-
apiVersion 当前配置格式版本
-
kind 创建的资源类型,这里是Pod
-
metadata 是该资源的元数据,name是必须的数据项
-
spec 该Pod的规格说明
其他重要字段
1.5.1 NodeSeletor 是一个供用户将 Pod 与 Node 进行绑定的字段
例子
apiVersion: v1
kind: Pod
...
spec:
nodeSelector:
disktype: ssd
意味着这个 Pod 永远只能运行在携带了“disktype: ssd”标签(Label)的节点上;否则,它将调度失败。
kubectl label nodes <node-name> <label-key>=<label-value>
kubectl get nodes --show-labels
- NodeName 一旦 Pod 的这个字段被赋值,Kubernetes 项目就会被认为这个 Pod 已经经过了调度,调度的结果就是赋值的节点名字。
1.5.2 HostAliases 定义了 Pod 的 hosts 文件(比如 /etc/hosts)里的内容
例子
apiVersion: v1
kind: Pod
...
spec:
hostAliases:
- ip: "10.1.2.3"
hostnames:
- "foo.remote"
- "bar.remote"
...
pod启动后hosts文件
cat /etc/hosts
# Kubernetes-managed hosts file.
127.0.0.1 localhost
...
10.244.135.10 hostaliases-pod
10.1.2.3 foo.remote
10.1.2.3 bar.remote
1.5.3 shareProcessNamespace Pod 里的容器要共享 PID Namespace
例子
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
shareProcessNamespace: true
containers:
- name: nginx
image: nginx
- name: shell
image: busybox
stdin: true
tty: true
kubectl attach -it nginx -c shell
ps ax
-
hostNetwork: true 共享宿主机网络 namespace
-
hostIPC: true 共享宿主机IPC namespace
-
hostPID: true 共享宿主机PID namespace