W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
本文展示如何使用配置文件來配置對(duì)多個(gè)集群的訪問。 在將集群、用戶和上下文定義在一個(gè)或多個(gè)配置文件中之后,用戶可以使用 ?kubectl config use-context
? 命令快速地在集群之間進(jìn)行切換。
說明:
用于配置集群訪問的文件有時(shí)被稱為 kubeconfig 文件。 這是一種引用配置文件的通用方式,并不意味著存在一個(gè)名為 ?kubeconfig
?的文件。
警告: 只使用來源可靠的 kubeconfig 文件。使用特制的 kubeconfig 文件可能會(huì)導(dǎo)致惡意代碼執(zhí)行或文件暴露。 如果必須使用不受信任的 kubeconfig 文件,請(qǐng)首先像檢查 shell 腳本一樣仔細(xì)檢查它。
你必須擁有一個(gè) Kubernetes 的集群,同時(shí)你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個(gè)節(jié)點(diǎn)的集群上運(yùn)行本教程,且這些節(jié)點(diǎn)不作為控制平面主機(jī)。 如果你還沒有集群,你可以通過 Minikube 構(gòu)建一個(gè)你自己的集群,或者你可以使用下面任意一個(gè) Kubernetes 工具構(gòu)建:
要檢查 kubectl 是否安裝, 執(zhí)行 ?kubectl version --client
? 命令。 kubectl 的版本應(yīng)該與集群的 API 服務(wù)器 使用同一次版本號(hào)。
假設(shè)用戶有兩個(gè)集群,一個(gè)用于正式開發(fā)工作,一個(gè)用于其它臨時(shí)用途(scratch)。 在 ?development
?集群中,前端開發(fā)者在名為 ?frontend
?的名字空間下工作, 存儲(chǔ)開發(fā)者在名為 ?storage
?的名字空間下工作。在 ?scratch
?集群中, 開發(fā)人員可能在默認(rèn)名字空間下工作,也可能視情況創(chuàng)建附加的名字空間。 訪問開發(fā)集群需要通過證書進(jìn)行認(rèn)證。 訪問其它臨時(shí)用途的集群需要通過用戶名和密碼進(jìn)行認(rèn)證。
創(chuàng)建名為 ?config-exercise
? 的目錄。在 ?config-exercise
? 目錄中,創(chuàng)建名為 ?config-demo
? 的文件,其內(nèi)容為:
apiVersion: v1
kind: Config
preferences: {}
clusters:
- cluster:
name: development
- cluster:
name: scratch
users:
- name: developer
- name: experimenter
contexts:
- context:
name: dev-frontend
- context:
name: dev-storage
- context:
name: exp-scratch
配置文件描述了集群、用戶名和上下文。?config-demo
? 文件中含有描述兩個(gè)集群、 兩個(gè)用戶和三個(gè)上下文的框架。
進(jìn)入 ?config-exercise
? 目錄。輸入以下命令,將集群詳細(xì)信息添加到配置文件中:
kubectl config --kubeconfig=config-demo set-cluster development --server=https://1.2.3.4 --certificate-authority=fake-ca-file
kubectl config --kubeconfig=config-demo set-cluster scratch --server=https://5.6.7.8 --insecure-skip-tls-verify
將用戶詳細(xì)信息添加到配置文件中:
kubectl config --kubeconfig=config-demo set-credentials developer --client-certificate=fake-cert-file --client-key=fake-key-seefile
kubectl config --kubeconfig=config-demo set-credentials experimenter --username=exp --password=some-password
說明:
要?jiǎng)h除用戶,可以運(yùn)行 ?kubectl --kubeconfig=config-demo config unset users.<name>
?
要?jiǎng)h除集群,可以運(yùn)行 ?kubectl --kubeconfig=config-demo config unset clusters.<name>
?
要?jiǎng)h除上下文,可以運(yùn)行 ?kubectl --kubeconfig=config-demo config unset contexts.<name>
?
將上下文詳細(xì)信息添加到配置文件中:
kubectl config --kubeconfig=config-demo set-context dev-frontend --cluster=development --namespace=frontend --user=developer
kubectl config --kubeconfig=config-demo set-context dev-storage --cluster=development --namespace=storage --user=developer
kubectl config --kubeconfig=config-demo set-context exp-scratch --cluster=scratch --namespace=default --user=experimenter
打開 ?config-demo
? 文件查看添加的詳細(xì)信息。也可以使用 ?config view
? 命令進(jìn)行查看:
kubectl config --kubeconfig=config-demo view
輸出展示了兩個(gè)集群、兩個(gè)用戶和三個(gè)上下文:
apiVersion: v1
clusters:
- cluster:
certificate-authority: fake-ca-file
server: https://1.2.3.4
name: development
- cluster:
insecure-skip-tls-verify: true
server: https://5.6.7.8
name: scratch
contexts:
- context:
cluster: development
namespace: frontend
user: developer
name: dev-frontend
- context:
cluster: development
namespace: storage
user: developer
name: dev-storage
- context:
cluster: scratch
namespace: default
user: experimenter
name: exp-scratch
current-context: ""
kind: Config
preferences: {}
users:
- name: developer
user:
client-certificate: fake-cert-file
client-key: fake-key-file
- name: experimenter
user:
password: some-password
username: exp
其中的 ?fake-ca-file
?、?fake-cert-file
? 和 ?fake-key-file
? 是證書文件路徑名的占位符。 你需要更改這些值,使之對(duì)應(yīng)你的環(huán)境中證書文件的實(shí)際路徑名。
有時(shí)你可能希望在這里使用 BASE64 編碼的數(shù)據(jù)而不是一個(gè)個(gè)獨(dú)立的證書文件。 如果是這樣,你需要在鍵名上添加 ?-data
? 后綴。例如, ?certificate-authority-data
?、?client-certificate-data
? 和 ?client-key-data
?。
每個(gè)上下文包含三部分(集群、用戶和名字空間),例如, ?dev-frontend
? 上下文表明:使用 ?developer
?用戶的憑證來訪問 ?development
?集群的 ?frontend
?名字空間。
設(shè)置當(dāng)前上下文:
kubectl config --kubeconfig=config-demo use-context dev-frontend
現(xiàn)在當(dāng)輸入 ?kubectl
?命令時(shí),相應(yīng)動(dòng)作會(huì)應(yīng)用于 ?dev-frontend
? 上下文中所列的集群和名字空間, 同時(shí),命令會(huì)使用 ?dev-frontend
? 上下文中所列用戶的憑證。
使用 ?--minify
? 參數(shù),來查看與當(dāng)前上下文相關(guān)聯(lián)的配置信息。
kubectl config --kubeconfig=config-demo view --minify
輸出結(jié)果展示了 ?dev-frontend
? 上下文相關(guān)的配置信息:
apiVersion: v1
clusters:
- cluster:
certificate-authority: fake-ca-file
server: https://1.2.3.4
name: development
contexts:
- context:
cluster: development
namespace: frontend
user: developer
name: dev-frontend
current-context: dev-frontend
kind: Config
preferences: {}
users:
- name: developer
user:
client-certificate: fake-cert-file
client-key: fake-key-file
現(xiàn)在假設(shè)用戶希望在其它臨時(shí)用途集群中工作一段時(shí)間。
將當(dāng)前上下文更改為 ?exp-scratch
?:
kubectl config --kubeconfig=config-demo use-context exp-scratch
現(xiàn)在你發(fā)出的所有 ?kubectl
?命令都將應(yīng)用于 ?scratch
?集群的默認(rèn)名字空間。 同時(shí),命令會(huì)使用 ?exp-scratch
? 上下文中所列用戶的憑證。
查看更新后的當(dāng)前上下文 ?exp-scratch
? 相關(guān)的配置:
kubectl config --kubeconfig=config-demo view --minify
最后,假設(shè)用戶希望在 ?development
?集群中的 ?storage
?名字空間下工作一段時(shí)間。
將當(dāng)前上下文更改為 ?dev-storage
?:
kubectl config --kubeconfig=config-demo use-context dev-storage
查看更新后的當(dāng)前上下文 ?dev-storage
? 相關(guān)的配置:
kubectl config --kubeconfig=config-demo view --minify
在 ?config-exercise
? 目錄中,創(chuàng)建名為 ?config-demo-2
? 的文件,其中包含以下內(nèi)容:
apiVersion: v1
kind: Config
preferences: {}
contexts:
- context:
cluster: development
namespace: ramp
user: developer
name: dev-ramp-up
上述配置文件定義了一個(gè)新的上下文,名為 ?dev-ramp-up
?。
查看是否有名為 ?KUBECONFIG
?的環(huán)境變量。 如有,保存 ?KUBECONFIG
?環(huán)境變量當(dāng)前的值,以便稍后恢復(fù)。 例如:
export KUBECONFIG_SAVED="$KUBECONFIG"
$Env:KUBECONFIG_SAVED=$ENV:KUBECONFIG
?KUBECONFIG
?環(huán)境變量是配置文件路徑的列表,該列表在 Linux 和 Mac 中以冒號(hào)分隔, 在 Windows 中以分號(hào)分隔。 如果有 ?KUBECONFIG
?環(huán)境變量,請(qǐng)熟悉列表中的配置文件。
臨時(shí)添加兩條路徑到 ?KUBECONFIG
?環(huán)境變量中。例如:
export KUBECONFIG="${KUBECONFIG}:config-demo:config-demo-2"
$Env:KUBECONFIG=("config-demo;config-demo-2")
在 ?config-exercise
? 目錄中輸入以下命令:
kubectl config view
輸出展示了 ?KUBECONFIG
?環(huán)境變量中所列舉的所有文件合并后的信息。 特別地,注意合并信息中包含來自 ?config-demo-2
? 文件的 ?dev-ramp-up
? 上下文和來自 ?config-demo
? 文件的三個(gè)上下文:
contexts:
- context:
cluster: development
namespace: frontend
user: developer
name: dev-frontend
- context:
cluster: development
namespace: ramp
user: developer
name: dev-ramp-up
- context:
cluster: development
namespace: storage
user: developer
name: dev-storage
- context:
cluster: scratch
namespace: default
user: experimenter
name: exp-scratch
如果用戶已經(jīng)擁有一個(gè)集群,可以使用 ?kubectl
?與集群進(jìn)行交互, 那么很可能在 ?$HOME/.kube
? 目錄下有一個(gè)名為 ?config
?的文件。
進(jìn)入 ?$HOME/.kube
? 目錄,看看那里有什么文件。通常會(huì)有一個(gè)名為 ?config
?的文件,目錄中可能還有其他配置文件。請(qǐng)簡(jiǎn)單地熟悉這些文件的內(nèi)容。
如果有 ?$HOME/.kube/config
? 文件,并且還未列在 ?KUBECONFIG
?環(huán)境變量中, 那么現(xiàn)在將它追加到 ?KUBECONFIG
?環(huán)境變量中。 例如:
export KUBECONFIG="${KUBECONFIG}:$HOME/.kube/config"
$Env:KUBECONFIG="$Env:KUBECONFIG;$HOME\.kube\config"
在配置練習(xí)目錄中輸入以下命令,查看當(dāng)前 ?KUBECONFIG
?環(huán)境變量中列舉的所有文件合并后的配置信息:
kubectl config view
將 ?KUBECONFIG
?環(huán)境變量還原為原始值。例如:
export KUBECONFIG="$KUBECONFIG_SAVED"
$Env:KUBECONFIG=$ENV:KUBECONFIG_SAVED
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: