虚拟机级别的相关属性都是pod级别的:描述机器整体。
pod几个重要字段的含义和用法:
#NodeSelector:是一个供用户将pod与Node进行绑定的字段
apiVersion: v1
kind: Pod
...
spec:
nodeSelector:
disktype: ssd
#这样的配置意味pod永远自能运行在携带ssd标签的节点上。
NodeName:一旦Pod的这个字段被赋值,k8s会以为Pod已经经过调度了用于测试。
HostAliases:定义Pod的host文件。/etc/hosts里面的内容。
apiVersion: v1
kind: Pod
...
spec:
hostAliases:
- ip: "10.1.2.3"
hostnames:
- "foo.remote"
- "bar.remote"
...
#最后的效果
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
例子: shareProcessNamespace: true
# 在这个文件中,定义了两个容器:一个是nginx,一个开启了tty和stdin的的容器。其实等同于docker run中的 -it(-i:stdin -t:tty)
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
shareProcessNamespace: true
containers:
- name: nginx
image: nginx
- name: shell
image: busybox
stdin: true
tty: true
#创建
$ kubectl create -f nginx.yaml
#链接shell容器的tty
$ kubectl attach -it nginx -c shell
#查看进程。也就是在哟个pod上可以看到里面所有容器的进程。因为他们呢共享一个PID Namespace。
$ kubectl attach -it nginx -c shell
/ # ps ax
PID USER TIME COMMAND
1 root 0:00 /pause
8 root 0:00 nginx: master process nginx -g daemon off;
14 101 0:00 nginx: worker process
15 root 0:00 sh
21 root 0:00 ps ax
k8s项目对container的定义:image镜像,Command(启动命令),workingDir(容器的工作目录),Port(容器开发端口),volumeMounts(容器挂载的Volume)。
1.ImagePullPolicy字段:Always 镜像拉去策略。默认是每创建就拉去一次。
2.Lifecycle字段:容器状态发生变化时触发一系列”钩子“
apiVersion: v1
kind: Pod
metadata:
name: lifecycle-demo
spec:
containers:
- name: lifecycle-demo-container
image: nginx
lifecycle:
#容器启动后立即执行
postStart:
exec:
command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
#容器被杀死前
preStop:
exec:
command: ["/usr/sbin/nginx","-s","quit"]
总结:关于pod的状态以及含义