最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

K8s中的臨時(shí)容器Ephemeral?Containers使用

 更新時(shí)間:2024年07月30日 10:21:50   作者:跳躍音符#3712  
這篇文章主要介紹了K8s中的臨時(shí)容器Ephemeral?Containers使用,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

臨時(shí)容器 Ephemeral Containers

  • 當(dāng)由于容器崩潰或容器鏡像不包含調(diào)試工具而導(dǎo)致 kubectl exec 無用時(shí), 臨時(shí)容器對于交互式故障排查很有用。
  • 尤其是,Distroless 鏡像 允許用戶部署最小的容器鏡像,從而減少攻擊面并減少故障和漏洞的暴露。 
  • 由于distroless鏡像不包含 Shell 或任何的調(diào)試工具,因此很難單獨(dú)使用 kubectl exec 命令進(jìn)行故障排查。
  • 使用臨時(shí)容器時(shí),啟用 進(jìn)程名字空間共享 很有幫助,可以查看其他容器中的進(jìn)程。

開啟臨時(shí)容器功能

開啟特性

1. master 節(jié)點(diǎn)配置 APIServer 組件
[root@vms120 ~]# cat /etc/kubernetes/manifests/kube-apiserver.yaml
- --feature-gates=EphemeralContainers=true
...

2. master 節(jié)點(diǎn)配置 controller-manager
[root@vms120 ~]# vim /etc/kubernetes/manifests/kube-controller-manager.yaml
spec:
  containers:
  - command:
    - --feature-gates=EphemeralContainers=true            # 增加
...

3. master 節(jié)點(diǎn)配置 kube-scheduler
[root@vms120 ~]# vim /etc/kubernetes/manifests/kube-scheduler.yaml
spec:
  containers:
  - command:
    - --feature-gates=EphemeralContainers=true            # 增加
# 重啟服務(wù) 
[root@vms120 ~]# systemctl restart kubelet.service

4. 所有 node 節(jié)點(diǎn)配置 kubelet 參數(shù)
添加 --feature-gates=EphemeralContainers=true
[root@vms121 kubernetes]# cat /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS="--network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.6 --feature-gates=EphemeralContainers=true"
# 重啟 node kubelet 服務(wù)
[root@vms121 kubernetes]# systemctl daemon-reload
[root@vms121 kubernetes]# systemctl restart kubelet

測試

1. 創(chuàng)建 pod
[root@vms120 ~]# kubectl run ephemeral-demo --image=registry.aliyuncs.com/google_containers/pause:3.2 --restart=Never
pod/ephemeral-demo created

[root@vms120 ~]# kubectl  exec -it ephemeral-demo  -- sh
OCI runtime exec failed: exec failed: unable to start container process: exec: "sh": executable file not found in $PATH: unknown
command terminated with exit code 126
# 無法 kubectl exec

解決無法exec,我們創(chuàng)建一個(gè)臨時(shí)容器添加到這個(gè)pod里

加上-i參數(shù)將直接進(jìn)入添加的臨時(shí)容器的控制臺(tái)界面,因?yàn)槭鞘褂胟ubectl run 創(chuàng)建的pod,所以需要-target 參數(shù)指定另一個(gè)容器的進(jìn)程命名空間。

因?yàn)?kubectl run 不能在它創(chuàng)建的pod中啟用 共享進(jìn)程命名空間

[root@vms120 ~]# kubectl debug -it ephemeral-demo --image=busybox --target=ephemeral-demo
Targeting container "ephemeral-demo". If you don't see processes from this container it may be because the container runtime doesn't support this feature.
Defaulting debug container name to debugger-bljnj.
If you don't see a command prompt, try pressing enter.
/ # ls
bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ # 

此時(shí)再去看pod 的信息會(huì)發(fā)現(xiàn)已經(jīng)被添加了一個(gè)類型為ephemeralContainers的容器

[root@vms120 ~]# kubectl  get pod ephemeral-demo   -o json|jq .spec
{
  "containers": [
    {
      "image": "registry.aliyuncs.com/google_containers/pause:3.2",
      "imagePullPolicy": "IfNotPresent",
      "name": "ephemeral-demo",
      "resources": {},
      "terminationMessagePath": "/dev/termination-log",
      "terminationMessagePolicy": "File",
      "volumeMounts": [
        {
          "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount",
          "name": "kube-api-access-sqmzl",
          "readOnly": true
        }
      ]
    }
  ],
  "dnsPolicy": "ClusterFirst",
  "enableServiceLinks": true,
  "ephemeralContainers": [
    {
      "image": "busbox",
      "imagePullPolicy": "Always",
      "name": "debugger-9l8mw",
      "resources": {},
      "stdin": true,
      "targetContainerName": "ephemeral-demo",
      "terminationMessagePath": "/dev/termination-log",
      "terminationMessagePolicy": "File",
      "tty": true
    },
    {
      "image": "busybox",
      "imagePullPolicy": "Always",
      "name": "debugger-slx6g",
      "resources": {},
      "stdin": true,
      "targetContainerName": "ephemeral-demo",
      "terminationMessagePath": "/dev/termination-log",
      "terminationMessagePolicy": "File",
      "tty": true
    },
    {
      "image": "busybox",
      "imagePullPolicy": "Always",
      "name": "debugger-gw6zt",
      "resources": {},
      "stdin": true,
      "terminationMessagePath": "/dev/termination-log",
      "terminationMessagePolicy": "File"
    },
    {
      "image": "busybox",
      "imagePullPolicy": "Always",
      "name": "debugger-cxc8b",
      "resources": {},
      "stdin": true,
      "targetContainerName": "ephemeral-demo",
      "terminationMessagePath": "/dev/termination-log",
      "terminationMessagePolicy": "File",
      "tty": true
    },
    {
      "image": "busybox",
      "imagePullPolicy": "Always",
      "name": "debugger-bljnj",
      "resources": {},
      "stdin": true,
      "targetContainerName": "ephemeral-demo",
      "terminationMessagePath": "/dev/termination-log",
      "terminationMessagePolicy": "File",
      "tty": true
    }
  ],
  "nodeName": "vms121.rhce.cc",
  "preemptionPolicy": "PreemptLowerPriority",
  "priority": 0,
  "restartPolicy": "Never",
  "schedulerName": "default-scheduler",
  "securityContext": {},
  "serviceAccount": "default",
  "serviceAccountName": "default",
  "terminationGracePeriodSeconds": 30,
  "tolerations": [
    {
      "effect": "NoExecute",
      "key": "node.kubernetes.io/not-ready",
      "operator": "Exists",
      "tolerationSeconds": 300
    },
    {
      "effect": "NoExecute",
      "key": "node.kubernetes.io/unreachable",
      "operator": "Exists",
      "tolerationSeconds": 300
    }
  ],
  "volumes": [
    {
      "name": "kube-api-access-sqmzl",
      "projected": {
        "defaultMode": 420,
        "sources": [
          {
            "serviceAccountToken": {
              "expirationSeconds": 3607,
              "path": "token"
            }
          },
          {
            "configMap": {
              "items": [
                {
                  "key": "ca.crt",
                  "path": "ca.crt"
                }
              ],
              "name": "kube-root-ca.crt"
            }
          },
          {
            "downwardAPI": {
              "items": [
                {
                  "fieldRef": {
                    "apiVersion": "v1",
                    "fieldPath": "metadata.namespace"
                  },
                  "path": "namespace"
                }
              ]
            }
          }
        ]
      }
    }
  ]
}

有些時(shí)候 Pod 的配置參數(shù)使得在某些情況下很難執(zhí)行故障排查。

例如,在容器鏡像中不包含 shell 或者你的應(yīng)用程序在啟動(dòng)時(shí)崩潰的情況下, 就不能通過運(yùn)行 kubectl exec 來排查容器故障。

在這些情況下,你可以使用 kubectl debug 來創(chuàng)建 Pod 的副本,通過更改配置幫助調(diào)試。

報(bào)錯(cuò)

error: ephemeral containers are disabled for this cluster (error from server: "the server could not find the requested resource").

未成功開啟ephemeralContainers特性

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • kubectl top如何查看資源占用

    kubectl top如何查看資源占用

    文章介紹了如何安裝和使用metricserver來監(jiān)控Kubernetes集群中的節(jié)點(diǎn)和Pod資源使用情況,包括CPU和內(nèi)存的計(jì)量單位以及如何通過這些指標(biāo)來管理資源請求和限制,同時(shí),文章還討論了在Docker容器中使用jps命令和釋放ptrace權(quán)限的配置問題
    2026-03-03
  • 使用kubeadm部署多節(jié)點(diǎn)集群

    使用kubeadm部署多節(jié)點(diǎn)集群

    這篇文章介紹了使用kubeadm部署多節(jié)點(diǎn)集群的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • CentOS?8.2?k8s?基礎(chǔ)環(huán)境配置

    CentOS?8.2?k8s?基礎(chǔ)環(huán)境配置

    這篇文章主要介紹了CentOS?8.2?k8s?基礎(chǔ)環(huán)境配置,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • k8s之ingress-nginx詳解和部署方案

    k8s之ingress-nginx詳解和部署方案

    Ingress是一種向k8s集群外部的客戶端公開服務(wù)的方法,下面這篇文章主要給大家介紹了關(guān)于k8s之ingress-nginx詳解和部署方案的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • k8s?Service?實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡

    k8s?Service?實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡

    這篇文章主要為大家介紹了k8s?Service?實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡的工作原理及使用方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Nacos-K8s部署全過程

    Nacos-K8s部署全過程

    Nacos-K8s項(xiàng)目提供了多種在Kubernetes環(huán)境中部署Nacos的方案,包括快速啟動(dòng)、NFS持久化、Ceph持久化、Helm和Operator部署,每種方式都有其適用的場景和特點(diǎn),如快速啟動(dòng)適用于測試,NFS和Ceph持久化支持?jǐn)?shù)據(jù)持久化,Helm和Operator提供更高級的運(yùn)維功能
    2026-02-02
  • Rainbond配置組件自動(dòng)構(gòu)建部署官方文檔講解

    Rainbond配置組件自動(dòng)構(gòu)建部署官方文檔講解

    這篇文章主要為大家介紹了Rainbond配置組件自動(dòng)構(gòu)建部署官方文檔講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • ES業(yè)務(wù)數(shù)據(jù)遷移遇到的精度問題BUG

    ES業(yè)務(wù)數(shù)據(jù)遷移遇到的精度問題BUG

    這篇文章主要為大家介紹了ES業(yè)務(wù)數(shù)據(jù)遷移遇到的BUG精度問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 詳解k8s ConfigMap 中 subPath 字段和 items 字段

    詳解k8s ConfigMap 中 subPath 字段和 items

    volumeMounts.subPath 屬性可用于指定所引用的卷內(nèi)的子路徑,而不是其根路徑,這篇文章主要介紹了詳解k8s ConfigMap 中 subPath 字段和 items 字段,需要的朋友可以參考下
    2023-03-03
  • 在AWS-EC2中安裝Minikube集群的詳細(xì)過程

    在AWS-EC2中安裝Minikube集群的詳細(xì)過程

    這篇文章主要介紹了在AWS-EC2中安裝Minikube集群,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06

最新評論

桂平市| 得荣县| 久治县| 黔江区| 攀枝花市| 辽宁省| 故城县| 仙居县| 新竹市| 乐至县| 安福县| 方正县| 十堰市| 合阳县| 扶绥县| 乌审旗| 郑州市| 鹤庆县| 从江县| 吴江市| 漳平市| 五寨县| 锡林浩特市| 息烽县| 广丰县| 滁州市| 仁寿县| 徐水县| 平舆县| 垣曲县| 河南省| 乌海市| 柘荣县| 仪征市| 沙洋县| 治县。| 新兴县| 鄂温| 花莲县| 康马县| 榕江县|