溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

kubectl 中怎么配置多集群訪問

發(fā)布時間:2021-07-13 11:15:41 來源:億速云 閱讀:112 作者:Leah 欄目:云計算

這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)kubectl 中怎么配置多集群訪問,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

定義集群、用戶和上下文

假設(shè)用戶有兩個集群,一個用于正式開發(fā)工作(development),一個用于其它臨時用途(scratch)。 在 development 集群中,前端開發(fā)者在名為 frontend 的命名空間下工作, 存儲開發(fā)者在名為 storage 的命名空間下工作。 在 scratch 集群中, 開發(fā)人員可能在默認命名空間下工作,也可能視情況創(chuàng)建附加的命名空間。 訪問開發(fā)集群需要通過證書進行認證。 訪問其它臨時用途的集群需要通過用戶名和密碼進行認證。

創(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 文件中含有描述兩個集群、兩個用戶和三個上下文的框架。

進入 config-exercise 目錄。 輸入以下命令,將群集詳細信息添加到配置文件中:

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

將用戶詳細信息添加到配置文件中:

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

將上下文詳細信息添加到配置文件中:

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 文件查看添加的詳細信息。 也可以使用 config view 命令進行查看:

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

每個上下文包含三部分(集群、用戶和命名空間),例如, dev-frontend 上下文表明:使用 developer 用戶的憑證來訪問 development 集群的 frontend 命名空間。

設(shè)置當前上下文:

kubectl config --kubeconfig=config-demo use-context dev-frontend

現(xiàn)在當輸入 kubectl 命令時,相應(yīng)動作會應(yīng)用于 dev-frontend 上下文中所列的集群和命名空間,同時,命令會使用 dev-frontend 上下文中所列用戶的憑證。

使用 --minify 參數(shù),來查看與當前上下文相關(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è)用戶希望在其它臨時用途集群中工作一段時間。

將當前上下文更改為 exp-scratch

kubectl config --kubeconfig=config-demo use-context exp-scratch

現(xiàn)在用戶 kubectl 下達的任何命令都將應(yīng)用于 scratch 集群的默認命名空間。 同時,命令會使用 exp-scratch 上下文中所列用戶的憑證。

查看更新后的當前上下文 exp-scratch 相關(guān)的配置:

kubectl config --kubeconfig=config-demo view --minify

最后,假設(shè)用戶希望在 development 集群中的 storage 命名空間下工作一段時間。

將當前上下文更改為 dev-storage

kubectl config --kubeconfig=config-demo use-context dev-storage

查看更新后的當前上下文 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)境變量當前的值,以便稍后恢復(fù)。 例如,在 Linux 中:

export  KUBECONFIG_SAVED=$KUBECONFIG

KUBECONFIG 環(huán)境變量是配置文件路徑的列表,該列表在 Linux 和 Mac 中以冒號分隔,在 Windows 中以分號分隔。 如果有 KUBECONFIG 環(huán)境變量,請熟悉列表中的配置文件。

臨時添加兩條路徑到 KUBECONFIG 環(huán)境變量中。 例如,在 Linux 中:

export  KUBECONFIG=$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

更多關(guān)于 kubeconfig 文件如何合并的信息,請參考 使用 kubeconfig 文件組織集群訪問

探索 $HOME/.kube 目錄

如果用戶已經(jīng)擁有一個集群,可以使用 kubectl 與集群進行交互。 那么很可能在 $HOME/.kube 目錄下有一個名為 config 的文件。

進入 $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

在配置練習目錄中輸入以下命令,來查看當前 KUBECONFIG 環(huán)境變量中列舉的所有文件合并后的配置信息:

kubectl config view

清理

將 KUBECONFIG 環(huán)境變量還原為原始值。 例如,在 Linux 中:

export KUBECONFIG=$KUBECONFIG_SAVED

上述就是小編為大家分享的kubectl 中怎么配置多集群訪問了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI