一个关于InitContainer的小实验

Pod的配置文件如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

apiVersion: v1
kind: Pod
metadata:
  name: init-demo
  labels:
    name: init-demo
spec:
  containers:
    - name: nginx
      image: nginx
      resources:
        limits:
          memory: "128Mi"
          cpu: "500m"
      ports:
        - containerPort: 80
      volumeMounts:
        - name: workdir
          mountPath: /usr/share/nginx/html
  initContainers:
    - name: install
      image: busybox
      command:
        - wget
        - "-O"
        - "/work-dir/index.html"
        - https://kuboard.cn
      volumeMounts:
        - name: workdir
          mountPath: "/work-dir"
  dnsPolicy: Default
  volumes:
    - name: workdir
      emptyDir: {}

该段配置中,Pod中初始化容器和应用程序容器共享一个数据卷。初始化容器将该共享数据卷挂载到/work-dir路径下,应用程序容器将共享数据卷挂载到/usr/share/nginx/html路径下。

初始化容器执行如下指令,执行该直接会将wget的结果写入应用程序容器Nginx服务器对应的html根路径下得index.html。

1
2
3

wget -O /work-dir/index.html https://kuboard.cn

创建Pod,获取该Pod的集群Ip,然后使用curl进行测试。

1
2
3

curl http://10.244.1.2