Kubernetes 配置Pod初始化

2022-06-10 13:56 更新

配置 Pod 初始化

本文介紹在應(yīng)用容器運(yùn)行前,怎樣利用 Init 容器初始化 Pod。

在開(kāi)始之前

你必須擁有一個(gè) Kubernetes 的集群,同時(shí)你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個(gè)節(jié)點(diǎn)的集群上運(yùn)行本教程,且這些節(jié)點(diǎn)不作為控制平面主機(jī)。 如果你還沒(méi)有集群,你可以通過(guò) Minikube 構(gòu)建一個(gè)你自己的集群,或者你可以使用下面任意一個(gè) Kubernetes 工具構(gòu)建:

要檢查版本,請(qǐng)輸入 ?kubectl version?。

創(chuàng)建一個(gè)包含 Init 容器的 Pod 

本例中你將創(chuàng)建一個(gè)包含一個(gè)應(yīng)用容器和一個(gè) Init 容器的 Pod。Init 容器在應(yīng)用容器啟動(dòng)前運(yùn)行完成。

下面是 Pod 的配置文件:

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:1.28
    command:
    - wget
    - "-O"
    - "/work-dir/index.html"
    - http://info.cern.ch
    volumeMounts:
    - name: workdir
      mountPath: "/work-dir"
  dnsPolicy: Default
  volumes:
  - name: workdir
    emptyDir: {}

配置文件中,你可以看到應(yīng)用容器和 Init 容器共享了一個(gè)卷。

Init 容器將共享卷掛載到了 ?/work-dir? 目錄,應(yīng)用容器將共享卷掛載到了 ?/usr/share/nginx/html? 目錄。 Init 容器執(zhí)行完下面的命令就終止:

wget -O /work-dir/index.html http://info.cern.ch

請(qǐng)注意 Init 容器在 nginx 服務(wù)器的根目錄寫(xiě)入 ?index.html?。

創(chuàng)建 Pod:

kubectl create -f https://k8s.io/examples/pods/init-containers.yaml

檢查 nginx 容器運(yùn)行正常:

kubectl get pod init-demo

結(jié)果表明 nginx 容器運(yùn)行正常:

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

通過(guò) shell 進(jìn)入 init-demo Pod 中的 nginx 容器:

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

在 shell 中,發(fā)送個(gè) GET 請(qǐng)求到 nginx 服務(wù)器:

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

結(jié)果表明 nginx 正在為 Init 容器編寫(xiě)的 web 頁(yè)面服務(wù):

<html><head></head><body><header>
<title>http://info.cern.ch</title>
</header>

<h1>http://info.cern.ch - home of the first website</h1>
  ...
<li><a  rel="external nofollow" target="_blank" >Browse the first website</a></li>
  ...


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)