k8s-Pod中容器的初始化

1. 概述

POD的spac下 containers 定义了常规运行的容器,在initContainers中定义了用于初始化的容器(可以是一个也可以是多个)。pod启动时先将initContainers中的容器执行一次。
如果初始化失败仍然按容器重启策略执行。

2. 测试

2.1 yml文件

说明:
container中定义了一个nginx容器。initContainers中定义了一个busybox容器用于初始化nginx容器。
具体初始化方案如下:
1)nginx和busybox共同挂着一个空目录,nginx中指向web家目录。
2)初始化时,busybox给nginx写入一个首页

创建init-test.yml文件,内容如下:

apiVersion: v1
kind: Pod
metadata:
  labels:
    app: init-demo
  name: init-demo
  namespace: test
spec:
  containers:
  - name: nginx
    image:  harborcto.xxx.com.cn/public/nginx  #公司内网镜像打个码,改成公网即可。
    ports:
    - containerPort: 80
    volumeMounts:
    - name: workdir
      mountPath: /usr/share/nginx/html
  initContainers:
  - name: install
    image: harborcto.xxx.com.cn/public/busybox #公司内网镜像打个码,改成公网即可。
    command:
    - /bin/sh
    - "-c"
    - echo "刘备" > /work-dir/index.html
    volumeMounts:
    - name: workdir
      mountPath: "/work-dir"
  dnsPolicy: Default
  volumes:
  - name: workdir
    emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
  name: init-demo
  namespace: test
  labels:
    app: init-demo
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    nodePort: 30588
  selector:
    app: init-demo

2.2 启动和测试

[root@DoM01 test]# kubectl create -f init-test.yml
[root@DoM01 test]# kubectl get pod -n test
NAME             READY   STATUS    RESTARTS   AGE
init-demo        1/1     Running   0          10m

访问web页面,可见我们写在index里的“刘备”


在这里插入图片描述

posted on 2021-08-15 21:40  运维开发玄德公  阅读(25)  评论(0编辑  收藏  举报  来源

导航