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

k8s如何訪問 pod 元數(shù)據(jù)

這篇具有很好參考價(jià)值的文章主要介紹了k8s如何訪問 pod 元數(shù)據(jù)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

如何訪問 pod 元數(shù)據(jù)

**我們在 pod 中運(yùn)行容器的時(shí)候,是否也會有想要獲取當(dāng)前 pod 的環(huán)境信息呢?**咱們寫的 yaml 清單寫的很簡單,實(shí)際上部署之后, k8s 會給我們補(bǔ)充在 yaml 清單中沒有寫的字段,那么我們的 pod 環(huán)境信息和容器的元數(shù)據(jù)如何傳遞到容器中呢?是不是也是通過獲取這些 k8s 默認(rèn)給我填寫的字段呢?

有 3 種方式:

  • 通過環(huán)境變量的方式
  • 通過 Downward Api 的方式
  • 通過和 ApiServer 交互的方式

通過環(huán)境變量的方式

通過環(huán)境變量的方式獲取 pod 的信息,還是比較簡單的,還記得我們之前將卷中的數(shù)據(jù)轉(zhuǎn)成環(huán)境變量傳入到容器中的方式嗎?

本次我們也是使用類似的方式來傳遞數(shù)據(jù),應(yīng)該說比之前的還要簡單,不過我們本次傳遞的是環(huán)境信息,例如 pod 的 IP,pod 的 名稱,命名空間,pod 所屬的服務(wù)賬號,節(jié)點(diǎn)的名稱,CPU / 內(nèi)存的請求 / 限制大小等等

我們?nèi)我饪匆幌?pod 的 yaml 清單信息

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

上述 yaml 清單信息中,每一個(gè)字段我們都可以用來傳遞到容器中作為環(huán)境變量,我們可以來嘗試寫一個(gè)

  • 寫一個(gè) yaml 清單,創(chuàng)建名稱為 my-downward 的 pod
  • 容器里面的使用 busybox 作為基礎(chǔ)鏡像,由于容器需要運(yùn)行在 pod 中,因此我們需要運(yùn)行一個(gè)程序在容器中,例如 sleep 8888888 或者其他的任意一個(gè)可以長期運(yùn)行的程序

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

apiVersion: v1
kind: Pod
metadata:
  name: my-downward
spec:
  containers:
  - name: my-downward
    image: busybox
    command: ["sleep","8888888"]
    env:
    - name: XMT_POD_NAME
      valueFrom:
        fieldRef:
          fieldPath: metadata.name
    - name: XMT_NAMESPACE
      valueFrom:
        fieldRef:
          fieldPath: metadata.namespace
    - name: XMT_NODENAME
      valueFrom:
        fieldRef:
          fieldPath: spec.nodeName
    - name: XMT_SERVICE_ACCOUNT
      valueFrom:
        fieldRef:
          fieldPath: spec.serviceAccountName
    - name: XMT_REQUEST_CPU
      valueFrom:
        resourceFieldRef:
          resource: requests.cpu
          divisor: 1m
    - name: XMT_LIMITS_MEMORY
      valueFrom:
        resourceFieldRef:
          resource: limits.memory
          divisor: 1Ki

上述自己配置了多個(gè) XMT_* 的環(huán)境變量,來源都是在 pod 中的對應(yīng)配置,kubectl create 上述 yaml 文件后,可以查看效果如下

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

環(huán)境變量如上所示,當(dāng)我們?nèi)萜骼锩嫘枰褂迷摥h(huán)境變量的時(shí)候,就可以隨取隨用了,很方便

可以看到容器中的環(huán)境變量和 yaml 清單上的 env 一一對應(yīng)

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

通過 Downward Api 卷的方式

當(dāng)然,我們也可以使用第二種方式,那就是通過 Downward Api 卷的方式,具體的操作方式和上述環(huán)境變量的方式類似,但是使用卷的方式,會在指定的路徑下生成文件

Downward Api 看上去會不會想起 Restful Api,是不是都是通過訪問接口的方式獲取數(shù)據(jù)呢?

并不是這樣的, Downward Api 實(shí)際上是將 pod 的定義和狀態(tài)信息,作為容器的環(huán)境變量或者文件的方式,來給容器傳遞數(shù)據(jù)的,如圖

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

Downward Api 卷的方式可以這么寫:

apiVersion: v1
kind: Pod
metadata:
  name: my-downward-vv
  labels:
    xmtconf: dev
spec:
  containers:
  - name: my-downward-vv
    image: busybox
    command: ["sleep","8888888"]
    volumeMounts:
    - name: my-downward-vv
      mountPath: /etc/myvv
  volumes:
  - name: my-downward-vv
    downwardAPI:
      items:
      - path: "xmtPodName"
        fieldRef:
          fieldPath: metadata.name
      - path: "xmtNamespace"
        fieldRef:
          fieldPath: metadata.namespace
      - path: "xmtLabels"
        fieldRef:
          fieldPath: metadata.labels

看這個(gè) yaml 還是比較簡單的,和寫掛載的方式類似的,此處使用 downwardAPI 下的 items,來傳遞每一個(gè)數(shù)據(jù),數(shù)據(jù)的來源寫法和上述的環(huán)境變量類似

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

我們可以看到,Downward Api 掛載數(shù)據(jù),具體的文件里面會以鍵值對的方式來呈現(xiàn),也會以文本的形式來呈現(xiàn)

我們來將 pod 的標(biāo)簽修改成 prod,驗(yàn)證容器里面對應(yīng)的文件是否會對應(yīng)修改?

kubectl label pod my-downward-vv xmtconf=prod --overwrite

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

進(jìn)入容器中查看 /etc/myvv/xmtLabels 文件是否有變化

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

通過上述效果,可以看出,當(dāng)使用 Downward Api 卷的時(shí)候,對應(yīng)的環(huán)境變量會以文件的形式存在于我們指定的目錄下

若我們在程序運(yùn)行中修改了環(huán)境變量對應(yīng)的值,那么卷中的文件內(nèi)容也會相應(yīng)修改

如何與 APiServer 進(jìn)行交互?

既然可以用第三種方式與 ApiServer 的方式,咋還使用環(huán)境變量和 Downward Api 的方式呢?

自然是因?yàn)?Downward Api 的方式有所局限,局限就是 Downward Api 的方式只能獲取自身 pod 的數(shù)據(jù),如果我們想獲取其他 pod 的資源信息,這個(gè)時(shí)候我們就需要和 Api Server 進(jìn)行交互了

類似于這樣:

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

那么我們來寫一個(gè) pod, 讓 pod 里面的容器與 ApiServer 進(jìn)行交互,此處我們需要注意兩點(diǎn):

  • 我們要確定 ApiServer 的位置,我們才能有機(jī)會正確訪問到
  • 需要通過 ApiServer 的認(rèn)證

咱們寫一個(gè) pod ,用于在這個(gè) pod 里面使用 curl 訪問 ApiServer

自己制作一個(gè)簡單的帶有 curl 的鏡像

FROM ubuntu:latest
RUN  apt-get update -y
RUN  apt install curl -y
ENTRYPOINT ["sleep", "8888888"]

制作該鏡像,推送鏡像到 dockerhub

docker build -t xiaomotong888/xmtcurl .
docker push xiaomotong888/xmtcurl

寫一個(gè)簡單的 yaml,運(yùn)行 pod

mycurl.yaml

apiVersion: v1
kind: Pod
metadata:
  name: xmt-curl
spec:
  containers:
  - name: xmt-curl
    image: xiaomotong888/xmtcurl
    command: ["sleep","8888888"]

pod 運(yùn)行成功后,咱們進(jìn)入到 容器里面

kubectl exec -it xmt-curl bash

咱們可以在 k8s 環(huán)境中查看一下 kubernetes 服務(wù)的 ip ,我們可以這樣來訪問

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

在容器中訪問 kubernetes

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

這是因?yàn)闆]有證書,我們需要導(dǎo)入證書和 token , 這樣才能正確的訪問到 ApiServer,并且還需要一個(gè)重要的操作

創(chuàng)建一個(gè) clusterrolebinding,需要?jiǎng)?chuàng)建了該綁定之后,才能正常的訪問到 ApiServer,若沒有創(chuàng)建該綁定,那么后面的步驟都做好了,ApiServer 也會報(bào) 403 Forbidden

kubectl create clusterrolebinding gitlab-cluster-admin --clusterrole=cluster-admin --group=system:serviceaccounts --namespace=dev

證書的位置還記的嗎?

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

之前我們查看過默認(rèn)的 k8s 掛載的位置,/var/run/secrets/kubernetes.io/serviceaccount 這里面有 命名空間,證書,token

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

這個(gè)時(shí)候,我們訪問 k8s ApiServer 的時(shí)候,可以加上該證書

curl --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt https://kubernetes

我們可以導(dǎo)入一個(gè)環(huán)境變量,訪問 k8s ApiServer 的時(shí)候就不需要收到導(dǎo)入證書了

export CURL_CA_BUNDLE=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt

https://gitee.com/common_dev/mypic20220206/raw/master/image-20220204152125059.png

可以看到效果和剛才不一樣了,現(xiàn)在報(bào) 403 是因?yàn)闆]有 token ,這個(gè)時(shí)候,我們在加上 token 即可

TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

這樣就可以看到 apiServer 都有哪些 api 了 , 這些 api 可都是我們在寫 yaml 清單時(shí)候 apiVersion 的是時(shí)候填寫的

那么用一個(gè)圖來結(jié)束今天的分享

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

容器里面的應(yīng)用通過證書與 ApiServer 完成認(rèn)證,通過 token 和 namespace 和 ApiServer 完成接口的交互

今天就到這里,學(xué)習(xí)所得,若有偏差,還請斧正

歡迎點(diǎn)贊,關(guān)注,收藏

朋友們,你的支持和鼓勵(lì),是我堅(jiān)持分享,提高質(zhì)量的動力

k8s如何訪問 pod 元數(shù)據(jù),kubernetes,docker,容器

好了,本次就到這里

技術(shù)是開放的,我們的心態(tài),更應(yīng)是開放的。擁抱變化,向陽而生,努力向前行。

我是阿兵云原生,歡迎點(diǎn)贊關(guān)注收藏,下次見~
更多的可以查看 零聲每晚八點(diǎn)直播:https://ke.qq.com/course/417774文章來源地址http://www.zghlxwxcb.cn/news/detail-591270.html

到了這里,關(guān)于k8s如何訪問 pod 元數(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)文章

  • k8s外部訪問pod內(nèi)部容器的端口-NodePort

    k8s外部訪問pod內(nèi)部容器的端口-NodePort

    Kubernetes的Pod IP和Cluster IP都只能在集群內(nèi)部訪問,而我們通常需要從外部網(wǎng)絡(luò)上訪問集群中的某些服務(wù),Kubernetes提供了下述幾種方式來為集群提供外部流量入口。 有一pod,里面有rabbitmq服務(wù),先想從外部通過ip:15672訪問MQ的管理員界面查看隊(duì)列消費(fèi)情況。 方法1(pod會重啟): 方法

    2023年04月23日
    瀏覽(26)
  • 容器技術(shù),1. Docker,2. Kubernetes(K8s):

    容器技術(shù),1. Docker,2. Kubernetes(K8s):

    目錄 容器技術(shù) 1. Docker: 2. Kubernetes(K8s): Docker和Kubernetes 容器的主要應(yīng)用場景有哪些? 有效的將單個(gè)操作系統(tǒng)的資源劃分到孤立的組中,以便更好的在孤立的組之間平衡有沖突的資源使用需求,這種技術(shù)就是容器技術(shù)。 容器技術(shù)指通過在物理主機(jī)操作系統(tǒng)上創(chuàng)建一個(gè)一個(gè)

    2024年02月11日
    瀏覽(29)
  • kubernetes(k8s)大白學(xué)習(xí)02:容器和docker基礎(chǔ)、使用、架構(gòu)學(xué)習(xí)

    kubernetes(k8s)大白學(xué)習(xí)02:容器和docker基礎(chǔ)、使用、架構(gòu)學(xué)習(xí)

    簡單說:容器(container)就是計(jì)算機(jī)上的一個(gè)沙盒進(jìn)程,它與計(jì)算機(jī)上的所有其它進(jìn)程相隔離。 這種隔離是怎么做到的呢?它利用了內(nèi)核提供的 namespace 和 cgroup 這 2 種技術(shù)。這些技術(shù)能力在 Linux 中已經(jīng)存在了很長時(shí)間。而 Docker 或容器技術(shù)致力于將這些功能更易于使用和更

    2024年02月07日
    瀏覽(45)
  • 云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授權(quán)訪問&容器執(zhí)行

    云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授權(quán)訪問&容器執(zhí)行

    Kubernetes是一個(gè)開源的, 用于編排云平臺中多個(gè)主機(jī)上的容器化的應(yīng)用,目標(biāo)是讓部署容器化的應(yīng)用能簡單并且高效的使用, 提供了應(yīng)用部署,規(guī)劃,更新,維護(hù)的一種機(jī)制 。其核心的特點(diǎn)就是能夠自主的管理容器來保證云平臺中的容器按照用戶的期望狀態(tài)運(yùn)行著,管理員可

    2024年02月08日
    瀏覽(31)
  • 第16關(guān) 革新云計(jì)算:如何利用彈性容器與托管K8S實(shí)現(xiàn)極速服務(wù)POD擴(kuò)縮容

    第16關(guān) 革新云計(jì)算:如何利用彈性容器與托管K8S實(shí)現(xiàn)極速服務(wù)POD擴(kuò)縮容

    ------ 課程視頻同步分享在今日頭條和B站 天下武功,唯快不破! 大家好,我是博哥愛運(yùn)維。這節(jié)課給大家講下云平臺的彈性容器實(shí)例怎么結(jié)合其托管K8S,使用混合服務(wù)架構(gòu),帶來極致擴(kuò)縮容快感。 下面是全球主流云平臺彈性容器相關(guān)使用文檔: 這里以阿里云的ACK托管K8S平臺

    2024年02月04日
    瀏覽(19)
  • k8s 多容器pod進(jìn)入指定容器

    k8s 多容器pod進(jìn)入指定容器

    kubectl exec -it prometheus-prometheus-server-697cccff9c-qtrf7 -c prometheus-server sh

    2024年02月14日
    瀏覽(93)
  • 【Kubernetes】K8s 查看 Pod 的狀態(tài)

    NAME :Pod 的名稱。 READY :代表 Pod 里面有幾個(gè)容器,前面是啟動的,后面是總數(shù), 1 / 1 1/1 1/1 。 STATUS :就是當(dāng)前 Pod 狀態(tài),最常見的就是 Running 正在運(yùn)行,最期望的狀態(tài),只要不是 Running 的就說明有問題,就算是 Running 的就不一定沒有問題。 狀態(tài) 說明 Pending 掛起 在執(zhí)行創(chuàng)建

    2024年01月15日
    瀏覽(138)
  • K8S | 容器和Pod組件

    K8S | 容器和Pod組件

    對比軟件安裝和運(yùn)行; 作為研發(fā)人員,通常自己電腦的系統(tǒng)環(huán)境都是非常復(fù)雜,在個(gè)人的習(xí)慣上,是按照下圖的模塊管理電腦的系統(tǒng)環(huán)境; 對于「基礎(chǔ)設(shè)施」、「主機(jī)操作系統(tǒng)」、「系統(tǒng)軟件」來說,通常只做配置修改; 對于自行安裝的軟件環(huán)境來說,個(gè)人通常這樣分類:

    2024年02月11日
    瀏覽(115)
  • kubernetes(k8s) pod(資源限制、基礎(chǔ)概念)

    kubernetes(k8s) pod(資源限制、基礎(chǔ)概念)

    目錄 ?一、資源限制 1、概念 1.2、Pod和容器的資源請求和限制 1.3、CPU資源單位 1.4、內(nèi)存資源單位 1.5、CPU和內(nèi)存的Requests和Limits的特點(diǎn) 1.6、案例 二、pod 的兩種使用方式 三、pod 資源共享 四、底層容器Pause 1、pause 共享資源 1.1、網(wǎng)絡(luò) 1.2、存儲 1.3、小結(jié) 2、Pause主要功能 3、Pod

    2024年02月05日
    瀏覽(103)
  • Kubernetes(k8s)核心資源解析:Pod詳解

    Kubernetes(k8s)核心資源解析:Pod詳解

    ??The Begin??點(diǎn)點(diǎn)關(guān)注,收藏不迷路?? Pod是Kubernetes中最小的調(diào)度單元,它可以包含一個(gè)或多個(gè)容器。Pod中的所有容器共享網(wǎng)絡(luò)和存儲卷,它們一起運(yùn)行在同一個(gè)節(jié)點(diǎn)上。Pod提供了一種抽象層,使得容器可以作為一個(gè)邏輯單元來管理。 Pod中的容器共享IP地址、端口空間和存儲

    2024年04月11日
    瀏覽(102)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包