久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Kubernetes獲取Shell

2024-01-25 195

Kubernetes 環(huán)境中,有時(shí)候您可能需要直接與運(yùn)行中的容器交互,以便進(jìn)行故障排除或執(zhí)行管理任務(wù)。本教程將詳細(xì)介紹如何使用 kubectl exec 命令來獲取正在運(yùn)行的容器的 Shell。包括編寫 nginx 的根頁(yè)面、在容器中運(yùn)行單個(gè)命令、當(dāng) Pod 包含多個(gè)容器時(shí)打開 shell等等。

一、準(zhǔn)備

必須擁有一個(gè) Kubernetes 的集群,同時(shí)必須配置 kubectl 命令行工具與集群通信。 建議在至少有兩個(gè)不作為控制平面主機(jī)的節(jié)點(diǎn)的集群上運(yùn)行本教程。 如果還沒有集群,可以通過 Minikube 構(gòu)建一個(gè)自己的集群,或者可以使用下面的 Kubernetes 練習(xí)環(huán)境之一:

  • Killercoda
  • 玩轉(zhuǎn) Kubernetes

二、獲取容器的Shell

在本練習(xí)中,將創(chuàng)建包含一個(gè)容器的 Pod。容器運(yùn)行 nginx 鏡像。下面是 Pod 的配置文件:

apiVersion: v1
kind: Pod
metadata:
name: shell-demo
spec:
volumes:
- name: shared-data
emptyDir: {}
containers:
- name: nginx
image: nginx
volumeMounts:
- name: shared-data
mountPath: /usr/share/nginx/html
hostNetwork: true
dnsPolicy: Default

創(chuàng)建 Pod:

kubectl apply -f https://k8s.io/examples/application/shell-demo.yaml

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

kubectl get pod shell-demo

獲取正在運(yùn)行容器的 Shell:

kubectl exec --stdin --tty shell-demo -- /bin/bash

注意:雙破折號(hào) “–” 用于將要傳遞給命令的參數(shù)與 kubectl 的參數(shù)分開。

在 shell 中,打印根目錄:

# 在容器內(nèi)運(yùn)行如下命令
ls /

在 shell 中,實(shí)驗(yàn)其他命令。下面是一些示例:

# 可以在容器中運(yùn)行這些示例命令
ls /
cat /proc/mounts
cat /proc/1/maps
apt-get update
apt-get install -y tcpdump
tcpdump
apt-get install -y lsof
lsof
apt-get install -y procps
ps aux
ps aux | grep nginx

三、編寫nginx根頁(yè)面

再看一下 Pod 的配置文件。該 Pod 有個(gè) emptyDir 卷,容器將該卷掛載到了 /usr/share/nginx/html。

在 shell 中,在 /usr/share/nginx/html 目錄創(chuàng)建一個(gè) index.html 文件:

# 在容器內(nèi)運(yùn)行如下命令
echo 'Hello shell demo' > /usr/share/nginx/html/index.html

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

# 在容器內(nèi)運(yùn)行如下命令
apt-get update
apt-get install curl
curl http://localhost/

輸出結(jié)果顯示了在 index.html 中寫入的文本。

Hello shell demo

當(dāng)用完 shell 后,輸入 exit 退出。

exit # 快速退出容器內(nèi)的 Shell

四、容器運(yùn)行單個(gè)命令

在普通的命令窗口(而不是 shell)中,打印環(huán)境運(yùn)行容器中的變量:

kubectl exec shell-demo -- env

實(shí)驗(yàn)運(yùn)行其他命令。下面是一些示例:

kubectl exec shell-demo -- ps aux
kubectl exec shell-demo -- ls /
kubectl exec shell-demo -- cat /proc/1/mounts

五、打開shell

如果 Pod 有多個(gè)容器,–container 或者 -c 可以在 kubectl exec 命令中指定容器。 例如,有個(gè)名為 my-pod 的 Pod,該 Pod 有兩個(gè)容器分別為 main-app 和 healper-app。 下面的命令將會(huì)打開一個(gè) shell 訪問 main-app 容器。

kubectl exec -i -t my-pod --container main-app -- /bin/bash

注意:短的命令參數(shù) -i 和 -t 與長(zhǎng)的命令參數(shù) –stdin 和 –tty 作用相同。

  • 廣告合作

  • QQ群號(hào):4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請(qǐng)注明出處“站長(zhǎng)百科”和原文地址。