目录html
在不少应用场景中,应用在启动以前都须要进行以下初始化操做:nginx
kubernetes v1.3引入了一些alpha版本的新特性init container(在v1.5版本时被更新为beta版本),用于在启动应用容器以前 启动一个或多个“初始化”容器,完成应用容器所需的预置条件。init container与应用容器本质上是同样的,但它们是仅运行一次就结束的任务,而且必须在成功执行完成后,系统才能继续执行下一个容器。根据pod的重启策略,当init container执行失败,在设置了RestartPolicy=Never时,pod将自动启动失败;而设置RestartPolicy=Always时,Pod将会被系统自动重启。算法
下面以一个nginx应用为例,在启动nginx以前,经过初始化容器busybox为nginx建立一个index.html的主页文件。这里为init container和nginx设置了一个共享的volume,以供nginx访问init container设置的index.html文件:数据库
nginx-init-containers.yaml内容以下:api
apiVersion: v1 kind: Pod metadata: name: nginx annotations: spec: initContainers: - name: install image: busybox command: - wget - "-O" - "/work-dir/index.html" - "http://kubernetes.io" volumeMounts: - name: workdir mountPath: "/work-dir" containers: - name: workdir image: nginx ports: - containerPort: 80 volumeMounts: - name: workdir mountPath: /usr/share/nginx/html dnsPolicy: Default volumes: - name: workdir emptyDir: {}
简单的说明一下二者的区别:安全