目录题
- 1. 环境设定
- 1.1 创建名为 vmware-nginx 的 Pod
- 2. 查看容器默认守护进程
- 2.1 查看容器所在节点
- 2.2 查看容器ID
- 2.3 查看容器中运行的进程信息
- 3. 修改容器默认守护进程
- 3.1 类比 Docker
- 3.2 修改 YAML 文件改变默认守护进程
- 参数说明
- 4. 验证
- 4.1 删除旧的 vmware-nginx.yaml 容器
- 4.2 创建新的 vmware-nginx.yaml 容器
- 4.3 查看容器守护进程
容器是一个运行中的进程。当一个Pod中运行了一个容器时,容器至少包含一个进程,那么这个进程是什么?
1. 环境设定
我们先创建一个 Nginx 容器,查看查看并修改该容器的默认守护进程。
1.1 创建名为 vmware-nginx 的 Pod
Pod 清单如下:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: vmware-nginx
name: vmware-nginx
namespace: 1-pod
spec:
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: vmware-nginx
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
使用声明式创建 Pod
kubectl apply -f vmware-nginx.yaml
2. 查看容器默认守护进程
2.1 查看容器所在节点
以 vmware-nginx.yaml 为例,用该 YAML 文件创建的pod运行的进程有哪些?我们先通过命令查看该pod在集群哪个节点上创建的。
kubectl -n 1-pod get pod -o wide
从输出结果可以看出,该容器运行在k8s-03节点上。
2.2 查看容器ID
SSH到k8s-03节点上,查看该容器具体的运行状态。在这里我们使用的容器运行时是Docker。
docker ps | grep vmware-nginx
从Docker运行状态可以看到,容器 vmware-nginx 有两个对应容器,一个为vmware-nginx,另一个是 Pause。
每个Pod 都会有对应的容器:pause。即每创建一个 Pod,里面会自动生成 pause容器,Pause 容器就是为解决 Pod 中的网络问题而生的。具体请关注之后的博文。
2.3 查看容器中运行的进程信息
docker top 23987e5d7ca9
可以看到,该容器运行的守护进程是 Nginx 。
我们也可以通过 docker history
命令查看 Nginx 进程在 Docker 中运行的过程
docker history nginx
当一个 Pod 中运行了一个容器时,容器中肯定包含一个进程,这个进程是什么?其默认进程是由容器镜像决定的,如果镜像是 nginx,那么 Pod 默认守护进程就是 nginx 守护进程。
3. 修改容器默认守护进程
3.1 类比 Docker
Docker正常运行一个容器,该容器的守护进程默认为 imge_name
docker run --name=c1 --restart=alawys image_name
在上面的命令后面加上 sleep 1000
,那么该容器将不在运行镜像文件默认的进程,而是改为 sleep 1000
并覆盖默认进程
docker run --name=c1 --restart=alawys image_name sleep 1000
同理,我们也可以在 YAML 中更改容器默认守护进程
3.2 修改 YAML 文件改变默认守护进程
spec:
containers:
- image: nginx
....
command: ["sh","-c","sleep 1000"]
参数说明
command:在容器中执行commad
值的命令,其值默认语法为["sh","-c",""]
。第三个""
中输入自定义的命令即可
4. 验证
使用修改后的 vmware-nginx.yaml 文件创建容器,然后查看该 Pod 在哪个节点上运行,再去容器所在节点上使用docker 命令查看具体进程。即重复第2小节内容。
4.1 删除旧的 vmware-nginx.yaml 容器
kubectl delete -f vmware-nginx.yaml
4.2 创建新的 vmware-nginx.yaml 容器
再次使用声明式创建已修改默认进程的 YAML 文件。
kubectl apply -f vmware-nginx.yaml
查看容器所在节点,还是在 k8s-03 上。
4.3 查看容器守护进程
docker ps | grep vmware-nginx
docker top 2632f63a6403
从输出可以看出,该 Nginx 容器的默认守护进程已经变为了 sleep 1000
,而不是 nginx
。