K8S- 配置多叢集訪問

Awbeci發表於2023-04-01

引言

最近買了臺新電腦,之前的電腦上面k8s多叢集訪問配置方式現在忘了當時是怎麼配置了,於是自己再次摸索配置成功,記錄下來分享給大家。
注意:本人電腦是Mac,接下來的操作預設是在Mac上面的zshell上面執行。

操作

1、首頁安裝docker和kubectl

docker安裝點選這裡,下載即可安裝。

➜  ~ docker -v
Docker version 20.10.23, build 7155243

kubectl安裝點選這裡

➜  ~ kubectl version
WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short.  Use --output=yaml|json to get the full version.
Client Version: version.Info{Major:"1", Minor:"26", GitVersion:"v1.26.2", GitCommit:"fc04e732bb3e7198d2fa44efa5457c7c6f8c0f5b", GitTreeState:"clean", BuildDate:"2023-02-22T13:32:21Z", GoVersion:"go1.20.1", Compiler:"gc", Platform:"darwin/arm64"}
Kustomize Version: v4.5.7
Server Version: version.Info{Major:"1", Minor:"24+", GitVersion:"v1.24.6-aliyun.1", GitCommit:"e0e067a81f9fa91d46792937d79ec41ec79762eb", GitTreeState:"clean", BuildDate:"2023-02-28T12:15:08Z", GoVersion:"go1.18.6", Compiler:"gc", Platform:"linux/amd64"}
WARNING: version difference between client (1.26) and server (1.24) exceeds the supported minor version skew of +/-1

2、啟用k8s

安裝好docker和kubectl之後,我們開啟docker GUI,如下所示:
image.png

設定k8s為啟用狀態,這時候你會發現使用者目錄下會多出.kube目錄,我們到.kube目錄下可以看到裡面有config檔案

➜  .kube ll
total 72
drwxr-x---@ 4 justinzhang  staff   128B  3 22 15:37 cache
-rw-r--r--@ 1 justinzhang  wheel    13K  4  1 17:03 config

我們可以開啟config檔案看看裡面的內容

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: xxx
    server: https://kubernetes.docker.internal:6443
  name: docker-desktop
contexts:
- context:
    cluster: docker-desktop
    user: docker-desktop
  name: docker-desktop
current-context: docker-desktop
kind: Config
preferences: {}
users:
- name: docker-desktop
  user:
    client-certificate-data: xxx
    client-key-data: xxx

我們會發現裡面預設已經有了一個叫docker-desktop的叢集。

2、配置k8s多叢集

我們現在已經有了一個叫docker-desktop,那麼我們如何配置第2個叢集的config檔案呢?
我們可以這樣做:
2.1、備份config檔案

cp ~/.kube/config ~/.kube/config.bak

2.2、將2份k8s config 檔案合併成一份

KUBECONFIG=~/.kube/conifg:~/your-second-k8s-config-path/config kubectl config view -- flattern > /tmp/config

說明:上面的your-second-k8s-config-path是你的第2個k8s叢集config檔案所在目錄。

2.3、將合併好的/tmp/config檔案替換成預設的config檔案

mv /tmp/config ~/.kube/config

2.4、配置config檔案的current-context屬性

預設情況下,current-context值是docker-desktop,所以這裡只要改成你第2個k8s叢集名稱即可。

current-context:your-k8s-cluster-name

這樣就完成了所有配置,現在你可以透過kubectl命令檢視第2個叢集裡面的內容了,如下所示:

➜  kubectl get po -nseaurl
NAME                                              READY   STATUS    RESTARTS   AGE
test-seaurl-webapp-79996476f9-8q2sc               1/1     Running   0          6h42m
testapi-seaurl-account-service-748887ddc4-82rtw   1/1     Running   0          123d
testapi-seaurl-auth-service-754c5b4449-mw9jj      1/1     Running   0          123d
testapi-seaurl-gatewayserver-64488b6f58-hngbk     1/1     Running   0          123d
testapi-seaurl-message-service-6fb5c4f5cb-2jj59   1/1     Running   0          123d
testapi-seaurl-notify-service-5776846f6d-sqdjb    1/1     Running   0          90d
testapi-seaurl-space-service-5d6b5dc4ff-lhqv4     1/1     Running   0          12d
testapi-seaurl-users-service-7b7b6575d7-tnf4g     1/1     Running   0          3d23h

總結

1、合併k8s的叢集config檔案網上有好多方法,感覺這種是最簡單了吧

引用

解決docker kubernetes一直處於starting狀態問題
快速合併2個kubectl config 檔案
配置對多叢集的訪問
自動合併Kubeconfig,實現多k8s叢集切換