k8s环境Pod中容器的初始化

image.png

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里的“刘备”


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容