配置Pod初始化
這個(gè)章節(jié)展示了如何使用一個(gè)初始化容器初始化一個(gè)Pod在應(yīng)用程序容器運(yùn)行之前。
創(chuàng)建一個(gè)Pod包含一個(gè)初始化容器
在本次實(shí)驗(yàn)中創(chuàng)建一個(gè)Pod包含一個(gè)應(yīng)用程序容器和一個(gè)初始化容器。這個(gè)初始化容器在應(yīng)用容器啟動(dòng)之前運(yùn)行完成。
下面是這個(gè)Pod的配置文件:
apiVersion: v1
kind: Pod
metadata:
name: init-demo
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: workdir
mountPath: /usr/share/nginx/html
# These containers are run during pod initialization
initContainers:
- name: install
image: busybox
command:
- wget
- "-O"
- "/work-dir/index.html"
- http://kubernetes.io
volumeMounts:
- name: workdir
mountPath: "/work-dir"
dnsPolicy: Default
volumes:
- name: workdir
emptyDir: {}
在這個(gè)配置文件,可以看到這個(gè)Pod的初始化容器和應(yīng)用程序容器共享一個(gè)Volume。
初始化容器掛載共享卷在/work-dir,應(yīng)用程序容器掛載共享卷在/usr/share/nginx/html。這個(gè)初始化容器運(yùn)行下面的命令然后退出:
wget -O /work-dir/index.html http://kubernetes.io
注意 這個(gè)初始化容器在nginx服務(wù)根目錄下面寫(xiě)入一個(gè)index.html文件。
創(chuàng)建一個(gè)Pod:
kubectl create -f init.yaml
驗(yàn)證nginx容器是否運(yùn)行:
kubectl get pod init-demo
輸出展示nginx容器正在運(yùn)行:
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 43m
使用shell進(jìn)入到運(yùn)行的nginx容器里面:
kubectl exec -it init-demo -- /bin/bash
在shell里面,發(fā)送一個(gè)GET請(qǐng)求給nginx服務(wù):
root@nginx:~# apt-get update
root@nginx:~# apt-get install curl
root@nginx:~# curl localhost
輸出展示了nginx服務(wù)的站點(diǎn)頁(yè)面:
<!Doctype html>
<html id="home">
<head>
...
"url": "http://kubernetes.io/"}</script>
</head>
<body>
...
<p>Kubernetes is open source giving you the freedom to take advantage ...</p>
...