国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【云原生 | Kubernetes 系列】K8s 實(shí)戰(zhàn) 如何給應(yīng)用注入數(shù)據(jù)

這篇具有很好參考價(jià)值的文章主要介紹了【云原生 | Kubernetes 系列】K8s 實(shí)戰(zhàn) 如何給應(yīng)用注入數(shù)據(jù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


前言

k8s args,云原生,kubernetes,云原生,docker

前面我們已經(jīng)一起學(xué)習(xí)了很多的東西了,本篇文章,我們將一起學(xué)習(xí),如何給應(yīng)用注入數(shù)據(jù),當(dāng)然,本篇文章不會講解全部知識點(diǎn),而是帶領(lǐng)大家,一起學(xué)習(xí)如何對我們的項(xiàng)目進(jìn)行相關(guān)的配置和設(shè)置。


一、為容器設(shè)置啟動時(shí)要執(zhí)行的命令和參數(shù)

1.1、創(chuàng)建 Pod 時(shí)設(shè)置命令及參數(shù)

創(chuàng)建 Pod 時(shí),可以為其下的容器設(shè)置啟動時(shí)要執(zhí)行的命令及其參數(shù)。如果要設(shè)置命令,就填寫在配置文件的 command 字段下,如果要設(shè)置命令的參數(shù),就填寫在配置文件的 args 字段下。一旦 Pod 創(chuàng)建完成,該命令及其參數(shù)就無法再進(jìn)行更改了。

如果在配置文件中設(shè)置了容器啟動時(shí)要執(zhí)行的命令及其參數(shù),那么容器鏡像中自帶的命令與參數(shù)將會被覆蓋而不再執(zhí)行。如果配置文件中只是設(shè)置了參數(shù),卻沒有設(shè)置其對應(yīng)的命令,那么容器鏡像中自帶的命令會使用該新參數(shù)作為其執(zhí)行時(shí)的參數(shù)。

在目錄 pods/commands.yaml 創(chuàng)建一個(gè)只包含單個(gè)容器的 Pod。在 Pod 配置文件中設(shè)置了一個(gè)命令與兩個(gè)參數(shù):

apiVersion: v1
kind: Pod
metadata:
  name: command-demo
  labels:
    purpose: demonstrate-command
spec:
  containers:
  - name: command-demo-container
    image: debian
    command: ["printenv"]
    args: ["HOSTNAME", "KUBERNETES_PORT"]
  restartPolicy: OnFailure
  1. 基于 YAML 文件創(chuàng)建一個(gè) Pod:
$ kubectl apply -f https://k8s.io/examples/pods/commands.yaml
  1. 獲取正在運(yùn)行的 Pods:
$ kubectl get pods

查詢結(jié)果顯示在 command-demo 這個(gè) Pod 下運(yùn)行的容器已經(jīng)啟動完成。

  1. 如果要獲取容器啟動時(shí)執(zhí)行命令的輸出結(jié)果,可以通過 Pod 的日志進(jìn)行查看:
$ kubectl logs command-demo

日志中顯示了 HOSTNAMEKUBERNETES_PORT 這兩個(gè)環(huán)境變量的值:

command-demo
tcp://10.3.240.1:443

1.2、使用環(huán)境變量來設(shè)置參數(shù)

在上面的示例中,我們直接將一串字符作為命令的參數(shù)。除此之外,我們還可以將環(huán)境變量作為命令的參數(shù)。

env:
- name: MESSAGE
  value: "hello world"
command: ["/bin/echo"]
args: ["$(MESSAGE)"]

這意味著可以將那些用來設(shè)置環(huán)境變量的方法應(yīng)用于設(shè)置命令的參數(shù),其中包括了 ConfigMaps 與 Secrets。

1.3、在 Shell 來執(zhí)行命令

需要在 Shell 腳本中運(yùn)行命令。 例如,要執(zhí)行的命令可能由多個(gè)命令組合而成,或者它就是一個(gè) Shell 腳本。 這時(shí),就可以通過如下方式在 Shell 中執(zhí)行命令:

command: ["/bin/sh"]
args: ["-c", "while true; do echo hello; sleep 10;done"]

二、為容器定義相互依賴的環(huán)境變量

當(dāng)創(chuàng)建一個(gè) Pod 時(shí),你可以為運(yùn)行在 Pod 中的容器設(shè)置相互依賴的環(huán)境變量。 設(shè)置相互依賴的環(huán)境變量,你就可以在配置清單文件的 env 的 value 中使用 $(VAR_NAME)。

在本練習(xí)中,你會創(chuàng)建一個(gè)單容器的 Pod。 此 Pod 的配置文件定義了一個(gè)已定義常用用法的相互依賴的環(huán)境變量。 下面是目錄 pods/inject/dependent-envars.yaml Pod 的配置清單:

apiVersion: v1
kind: Pod
metadata:
  name: dependent-envars-demo
spec:
  containers:
    - name: dependent-envars-demo
      args:
        - while true; do echo -en '\n'; printf UNCHANGED_REFERENCE=$UNCHANGED_REFERENCE'\n'; printf SERVICE_ADDRESS=$SERVICE_ADDRESS'\n';printf ESCAPED_REFERENCE=$ESCAPED_REFERENCE'\n'; sleep 30; done;
      command:
        - sh
        - -c
      image: busybox:1.28
      env:
        - name: SERVICE_PORT
          value: "80"
        - name: SERVICE_IP
          value: "172.17.0.1"
        - name: UNCHANGED_REFERENCE
          value: "$(PROTOCOL)://$(SERVICE_IP):$(SERVICE_PORT)"
        - name: PROTOCOL
          value: "https"
        - name: SERVICE_ADDRESS
          value: "$(PROTOCOL)://$(SERVICE_IP):$(SERVICE_PORT)"
        - name: ESCAPED_REFERENCE
          value: "$$(PROTOCOL)://$(SERVICE_IP):$(SERVICE_PORT)"
  1. 依據(jù)清單創(chuàng)建 Pod:
$ kubectl apply -f https://k8s.io/examples/pods/inject/dependent-envars.yaml

pod/dependent-envars-demo created

  1. 列出運(yùn)行的 Pod:
$ kubectl get pods dependent-envars-demo

NAME READY STATUS RESTARTS AGE
dependent-envars-demo 1/1 Running 0 9s

  1. 檢查 Pod 中運(yùn)行容器的日志:
$ kubectl logs pod/dependent-envars-demo

UNCHANGED_REFERENCE= ( P R O T O C O L ) : / / 172.17.0.1 : 80 S E R V I C E A D D R E S S = h t t p s : / / 172.17.0.1 : 80 E S C A P E D R E F E R E N C E = (PROTOCOL)://172.17.0.1:80 SERVICE_ADDRESS=https://172.17.0.1:80 ESCAPED_REFERENCE= (PROTOCOL)://172.17.0.1:80SERVICEA?DDRESS=https://172.17.0.1:80ESCAPEDR?EFERENCE=(PROTOCOL)??/172.17.0.1:80

如上所示,你已經(jīng)定義了 SERVICE_ADDRESS 的正確依賴引用, UNCHANGED_REFERENCE 的錯誤依賴引用, 并跳過了 ESCAPED_REFERENCE 的依賴引用。

如果環(huán)境變量被引用時(shí)已事先定義,則引用可以正確解析, 比如 SERVICE_ADDRESS 的例子。

當(dāng)環(huán)境變量未定義或僅包含部分變量時(shí),未定義的變量會被當(dāng)做普通字符串對待, 比如 UNCHANGED_REFERENCE 的例子。 注意,解析不正確的環(huán)境變量通常不會阻止容器啟動。

$(VAR_NAME) 這樣的語法可以用兩個(gè) $ 轉(zhuǎn)義,既:$$(VAR_NAME)。 無論引用的變量是否定義,轉(zhuǎn)義的引用永遠(yuǎn)不會展開。 這一點(diǎn)可以從上面 ESCAPED_REFERENCE 的例子得到印證。

三、為容器設(shè)置環(huán)境變量

創(chuàng)建 Pod 時(shí),可以為其下的容器設(shè)置環(huán)境變量。通過配置文件的 env 或者 envFrom 字段來設(shè)置環(huán)境變量。

本示例中,將創(chuàng)建一個(gè)只包含單個(gè)容器的 Pod。Pod 的配置文件中設(shè)置環(huán)境變量的名稱為 DEMO_GREETING, 其值為 “Hello from the environment”。

下面是目錄 pods/inject/envars.yaml Pod 的配置清單:

apiVersion: v1
kind: Pod
metadata:
  name: envar-demo
  labels:
    purpose: demonstrate-envars
spec:
  containers:
  - name: envar-demo-container
    image: gcr.io/google-samples/node-hello:1.0
    env:
    - name: DEMO_GREETING
      value: "Hello from the environment"
    - name: DEMO_FAREWELL
      value: "Such a sweet sorrow"
  1. 基于配置清單創(chuàng)建一個(gè) Pod:
$ kubectl apply -f https://k8s.io/examples/pods/inject/envars.yaml
  1. 獲取一下當(dāng)前正在運(yùn)行的 Pods 信息:
$ kubectl get pods -l purpose=demonstrate-envars

查詢結(jié)果應(yīng)為:

NAME READY STATUS RESTARTS AGE
envar-demo 1/1 Running 0 9s

  1. 列出 Pod 容器的環(huán)境變量:
$ kubectl exec envar-demo -- printenv

打印結(jié)果應(yīng)為:

NODE_VERSION=4.4.2
EXAMPLE_SERVICE_PORT_8080_TCP_ADDR=10.3.245.237
HOSTNAME=envar-demo

DEMO_GREETING=Hello from the environment
DEMO_FAREWELL=Such a sweet sorrow

3.1、在配置中使用環(huán)境變量

在 Pod 的配置中定義的環(huán)境變量可以在配置的其他地方使用, 例如可用在為 Pod 的容器設(shè)置的命令和參數(shù)中。 在下面的示例配置中,環(huán)境變量 GREETING ,HONORIFIC 和 NAME 分別設(shè)置為 Warm greetings to , The Most Honorable 和 Kubernetes。然后這些環(huán)境變量在傳遞給容器 env-print-demo 的 CLI 參數(shù)中使用。

apiVersion: v1
kind: Pod
metadata:
  name: print-greeting
spec:
  containers:
  - name: env-print-demo
    image: bash
    env:
    - name: GREETING
      value: "Warm greetings to"
    - name: HONORIFIC
      value: "The Most Honorable"
    - name: NAME
      value: "Kubernetes"
    command: ["echo"]
    args: ["$(GREETING) $(HONORIFIC) $(NAME)"]

創(chuàng)建后,命令 echo Warm greetings to The Most Honorable Kubernetes 將在容器中運(yùn)行。

總結(jié)

看到這里,我想各位看官,已經(jīng)針對容器設(shè)置啟動時(shí)要執(zhí)行的命令和參數(shù)、定義相互依賴的環(huán)境變量、為容器設(shè)置環(huán)境變量,這三個(gè)配置設(shè)置的內(nèi)容學(xué)習(xí)了,下一篇我們將會針對本篇內(nèi)容的學(xué)習(xí)進(jìn)行實(shí)戰(zhàn)。文章來源地址http://www.zghlxwxcb.cn/news/detail-787105.html

到了這里,關(guān)于【云原生 | Kubernetes 系列】K8s 實(shí)戰(zhàn) 如何給應(yīng)用注入數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包