目錄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: {}
簡單的說明一下二者的區別:安全