新聞中心
配置對多集群的訪問
本文展示如何使用配置文件來配置對多個集群的訪問。 在將集群、用戶和上下文定義在一個或多個配置文件中之后,用戶可以使用 ?kubectl config use-context? 命令快速地在集群之間進(jìn)行切換。

成都創(chuàng)新互聯(lián)2013年開創(chuàng)至今,先為北川羌族等服務(wù)建站,北川羌族等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為北川羌族企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
說明:
用于配置集群訪問的文件有時被稱為 kubeconfig 文件。 這是一種引用配置文件的通用方式,并不意味著存在一個名為 ?
kubeconfig?的文件。
警告: 只使用來源可靠的 kubeconfig 文件。使用特制的 kubeconfig 文件可能會導(dǎo)致惡意代碼執(zhí)行或文件暴露。 如果必須使用不受信任的 kubeconfig 文件,請首先像檢查 shell 腳本一樣仔細(xì)檢查它。
在開始之前
你必須擁有一個 Kubernetes 的集群,同時你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個節(jié)點的集群上運(yùn)行本教程,且這些節(jié)點不作為控制平面主機(jī)。 如果你還沒有集群,你可以通過 Minikube 構(gòu)建一個你自己的集群,或者你可以使用下面任意一個 Kubernetes 工具構(gòu)建:
- Katacoda
- 玩轉(zhuǎn) Kubernetes
要檢查 kubectl 是否安裝, 執(zhí)行 ?kubectl version --client? 命令。 kubectl 的版本應(yīng)該與集群的 API 服務(wù)器 使用同一次版本號。
定義集群、用戶和上下文
假設(shè)用戶有兩個集群,一個用于正式開發(fā)工作,一個用于其它臨時用途(scratch)。 在 ?development ?集群中,前端開發(fā)者在名為 ?frontend ?的名字空間下工作, 存儲開發(fā)者在名為 ?storage ?的名字空間下工作。在 ?scratch ?集群中, 開發(fā)人員可能在默認(rèn)名字空間下工作,也可能視情況創(chuàng)建附加的名字空間。 訪問開發(fā)集群需要通過證書進(jìn)行認(rèn)證。 訪問其它臨時用途的集群需要通過用戶名和密碼進(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? 文件中含有描述兩個集群、 兩個用戶和三個上下文的框架。
進(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
說明:
要刪除用戶,可以運(yùn)行 ?
kubectl --kubeconfig=config-demo config unset users.?
要刪除集群,可以運(yùn)行 ?
kubectl --kubeconfig=config-demo config unset clusters.?
要刪除上下文,可以運(yùn)行 ?
kubectl --kubeconfig=config-demo config unset contexts.?
將上下文詳細(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
輸出展示了兩個集群、兩個用戶和三個上下文:
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? 是證書文件路徑名的占位符。 你需要更改這些值,使之對應(yīng)你的環(huán)境中證書文件的實際路徑名。
有時你可能希望在這里使用 BASE64 編碼的數(shù)據(jù)而不是一個個獨立的證書文件。 如果是這樣,你需要在鍵名上添加 ?-data? 后綴。例如, ?certificate-authority-data?、?client-certificate-data? 和 ?client-key-data?。
每個上下文包含三部分(集群、用戶和名字空間),例如, ?dev-frontend? 上下文表明:使用 ?developer ?用戶的憑證來訪問 ?development ?集群的 ?frontend ?名字空間。
設(shè)置當(dāng)前上下文:
kubectl config --kubeconfig=config-demo use-context dev-frontend
現(xiàn)在當(dāng)輸入 ?kubectl ?命令時,相應(yīng)動作會應(yīng)用于 ?dev-frontend? 上下文中所列的集群和名字空間, 同時,命令會使用 ?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è)用戶希望在其它臨時用途集群中工作一段時間。
將當(dāng)前上下文更改為 ?exp-scratch?:
kubectl config --kubeconfig=config-demo use-context exp-scratch
現(xiàn)在你發(fā)出的所有 ?kubectl ?命令都將應(yīng)用于 ?scratch ?集群的默認(rèn)名字空間。 同時,命令會使用 ?exp-scratch? 上下文中所列用戶的憑證。
查看更新后的當(dāng)前上下文 ?exp-scratch? 相關(guān)的配置:
kubectl config --kubeconfig=config-demo view --minify
最后,假設(shè)用戶希望在 ?development ?集群中的 ?storage ?名字空間下工作一段時間。
將當(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
創(chuàng)建第二個配置文件
在 ?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上述配置文件定義了一個新的上下文,名為 ?dev-ramp-up?。
設(shè)置 KUBECONFIG 環(huán)境變量
查看是否有名為 ?KUBECONFIG ?的環(huán)境變量。 如有,保存 ?KUBECONFIG ?環(huán)境變量當(dāng)前的值,以便稍后恢復(fù)。 例如:
Linux
export KUBECONFIG_SAVED="$KUBECONFIG"
Windows PowerShell
$Env:KUBECONFIG_SAVED=$ENV:KUBECONFIG
?KUBECONFIG ?環(huán)境變量是配置文件路徑的列表,該列表在 Linux 和 Mac 中以冒號分隔, 在 Windows 中以分號分隔。 如果有 ?KUBECONFIG ?環(huán)境變量,請熟悉列表中的配置文件。
臨時添加兩條路徑到 ?KUBECONFIG ?環(huán)境變量中。例如:
Linux
export KUBECONFIG="${KUBECONFIG}:config-demo:config-demo-2"
Windows PowerShell
$Env:KUBECONFIG=("config-demo;config-demo-2")
在 ?config-exercise? 目錄中輸入以下命令:
kubectl config view
輸出展示了 ?KUBECONFIG ?環(huán)境變量中所列舉的所有文件合并后的信息。 特別地,注意合并信息中包含來自 ?config-demo-2? 文件的 ?dev-ramp-up? 上下文和來自 ?config-demo? 文件的三個上下文:
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
探索 $HOME/.kube 目錄
如果用戶已經(jīng)擁有一個集群,可以使用 ?kubectl ?與集群進(jìn)行交互, 那么很可能在 ?$HOME/.kube? 目錄下有一個名為 ?config ?的文件。
進(jìn)入 ?$HOME/.kube? 目錄,看看那里有什么文件。通常會有一個名為 ?config ?的文件,目錄中可能還有其他配置文件。請簡單地熟悉這些文件的內(nèi)容。
將 $HOME/.kube/config 追加到 KUBECONFIG 環(huán)境變量中
如果有 ?$HOME/.kube/config? 文件,并且還未列在 ?KUBECONFIG ?環(huán)境變量中, 那么現(xiàn)在將它追加到 ?KUBECONFIG ?環(huán)境變量中。 例如:
Linux
export KUBECONFIG="${KUBECONFIG}:$HOME/.kube/config"
Windows Powershell
$Env:KUBECONFIG="$Env:KUBECONFIG;$HOME\.kube\config"
在配置練習(xí)目錄中輸入以下命令,查看當(dāng)前 ?KUBECONFIG ?環(huán)境變量中列舉的所有文件合并后的配置信息:
kubectl config view
清理
將 ?KUBECONFIG ?環(huán)境變量還原為原始值。例如:
Linux
export KUBECONFIG="$KUBECONFIG_SAVED"
Windows PowerShell
$Env:KUBECONFIG=$ENV:KUBECONFIG_SAVED
當(dāng)前文章:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes配置對多集群的訪問
標(biāo)題鏈接:http://m.fisionsoft.com.cn/article/cdoeggd.html


咨詢
建站咨詢
