kubernetes之創建初始化容器


簡介

此文講述在應用容器運行之前如何使用初始化容器。

備注:此文檔參考官方文檔,並加以自己的理解。如有誤導性的內容,請批評指正。

創建一個有初始化容器的Pod

創將一個Pod,該Pod中包含一個應用容器和初始化容器。在應用容器開始之前,初始化容器的初始化任務已經完成。文件名:init-containers.yaml

apiVersion: v1
kind: Pod
metadata:
  name: init-demo
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
    volumeMounts:
    - name: workdir
      mountPath: /usr/share/nginx/html
  # These containers are run during pod initialization
  initContainers:
  - name: install
    image: busybox
    command:
    - wget
    - "-O"
    - "/work-dir/index.html"
    - http://kubernetes.io
    volumeMounts:
    - name: workdir
      mountPath: "/work-dir"
  dnsPolicy: Default
  volumes:
  - name: workdir
    emptyDir: {}

在配置文件中,可以看出創建的Pod包含一個初始化容器和應用容器共享的Volume

初始化容器掛載了一個共享的Volume即:/work-dir,應用容器掛載的共享Volume/usr/share/nginx/html目錄下。初始化容器運行如下的命令

wget -O /work-dir/index.html http://kubernetes.io

初始化容器早 nginx server 的根目錄下寫入index.html文件。

創建Pod:

# kubectl apply -f /root/k8s-example/pods/init-containers.yaml

確認初始化容器已經運行:

# kubectl get pod init-demo

輸出結果顯示 nginx 容器已經正在運行

NAME        READY   STATUS    RESTARTS   AGE
init-demo   1/1     Running   0          17s

進入init-demoPod中正在運行的nginx容器的shell內:

# kubectl exec -it init-demo -- /bin/bash

在shell中發出GET請求:

root@nginx:~# apt-get update
root@nginx:~# apt-get install curl
root@nginx:~# curl localhost

輸出顯示nginx正在運行由init容器編寫的網頁:

<!Doctype html>
<html id="home">

<head>
...
"url": "http://kubernetes.io/"}</script>
</head>
<body>
  ...
  <p>Kubernetes is open source giving you the freedom to take advantage ...</p>
  ...

刪除Pod資源:

# kubectl delete pods init-demo


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM