本文展現如何使用配置文件來配置對多個集羣的訪問。 在將集羣、用戶和上下文定義在一個或多個配置文件中以後,用戶可使用 kubectl config use-context
命令快速地在集羣之間進行切換。前端
注意: 用於配置集羣訪問的文件有時被稱爲 kubeconfig 文件。 這是一種引用配置文件的通用方式,並不意味着存在一個名爲 kubeconfig
的文件。git
Before you begingithub
須要安裝 kubectl
命令行工具。api
假設用戶有兩個集羣,一個用於正式開發工做(development),一個用於其它臨時用途(scratch)。 在 development
集羣中,前端開發者在名爲 frontend
的命名空間下工做, 存儲開發者在名爲 storage
的命名空間下工做。 在 scratch
集羣中, 開發人員可能在默認命名空間下工做,也可能視狀況建立附加的命名空間。 訪問開發集羣須要經過證書進行認證。 訪問其它臨時用途的集羣須要經過用戶名和密碼進行認證。框架
建立名爲 config-exercise
的目錄。 在 config-exercise
目錄中,建立名爲 config-demo
的文件,其內容爲:frontend
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
目錄。 輸入如下命令,將羣集詳細信息添加到配置文件中:spa
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
將上下文詳細信息添加到配置文件中:code
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
命名空間。
設置當前上下文:
kubectl config --kubeconfig=config-demo use-context dev-frontend
如今當輸入 kubectl
命令時,相應動做會應用於 dev-frontend
上下文中所列的集羣和命名空間,同時,命令會使用 dev-frontend
上下文中所列用戶的憑證。
使用 --minify
參數,來查看與當前上下文相關聯的配置信息。
kubectl config --kubeconfig=config-demo view --minify
輸出結果展現了 dev-frontend
上下文相關的配置信息:
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
如今假設用戶但願在其它臨時用途集羣中工做一段時間。
將當前上下文更改成 exp-scratch
:
kubectl config --kubeconfig=config-demo use-context exp-scratch
如今用戶 kubectl
下達的任何命令都將應用於 scratch
集羣的默認命名空間。 同時,命令會使用 exp-scratch
上下文中所列用戶的憑證。
查看更新後的當前上下文 exp-scratch
相關的配置:
kubectl config --kubeconfig=config-demo view --minify
最後,假設用戶但願在 development
集羣中的 storage
命名空間下工做一段時間。
將當前上下文更改成 dev-storage
:
kubectl config --kubeconfig=config-demo use-context dev-storage
查看更新後的當前上下文 dev-storage
相關的配置:
kubectl config --kubeconfig=config-demo view --minify
在 config-exercise
目錄中,建立名爲 config-demo-2
的文件,其中包含如下內容:
apiVersion: v1 kind: Config preferences: {} contexts: - context: cluster: development namespace: ramp user: developer name: dev-ramp-up
上述配置文件定義了一個新的上下文,名爲 dev-ramp-up
。
查看是否有名爲 KUBECONFIG
的環境變量。 若有,保存 KUBECONFIG
環境變量當前的值,以便稍後恢復。 例如,在 Linux 中:
export KUBECONFIG_SAVED=$KUBECONFIG
KUBECONFIG
環境變量是配置文件路徑的列表,該列表在 Linux 和 Mac 中以冒號分隔,在 Windows 中以分號分隔。 若是有 KUBECONFIG
環境變量,請熟悉列表中的配置文件。
臨時添加兩條路徑到 KUBECONFIG
環境變量中。 例如,在 Linux 中:
export KUBECONFIG=$KUBECONFIG:config-demo:config-demo-2
在 config-exercise
目錄中輸入如下命令:
kubectl config view
輸出展現了 KUBECONFIG
環境變量中所列舉的全部文件合併後的信息。 特別地, 注意合併信息中包含來自 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
更多關於 kubeconfig 文件如何合併的信息,請參考 使用 kubeconfig 文件組織集羣訪問
若是用戶已經擁有一個集羣,可使用 kubectl
與集羣進行交互。 那麼極可能在 $HOME/.kube
目錄下有一個名爲 config
的文件。
進入 $HOME/.kube
目錄, 看看那裏有什麼文件。 一般會有一個名爲 config
的文件,目錄中可能還有其餘配置文件。 請簡單地熟悉這些文件的內容。
若是有 $HOME/.kube/config
文件,而且還未列在 KUBECONFIG
環境變量中, 那麼如今將它追加到 KUBECONFIG
環境變量中。 例如,在 Linux 中:
export KUBECONFIG=$KUBECONFIG:$HOME/.kube/config
在配置練習目錄中輸入如下命令,來查看當前 KUBECONFIG
環境變量中列舉的全部文件合併後的配置信息:
kubectl config view
將 KUBECONFIG
環境變量還原爲原始值。 例如,在 Linux 中:
export KUBECONFIG=$KUBECONFIG_SAVED