1. 程式人生 > 其它 >|NO.Z.00382|——————————|CloudNative|——|KuberNetes&CI/CD.V20|-----------------------------------------------------------|Jenkins.v08|kubeconfig多叢集配置.v02|

|NO.Z.00382|——————————|CloudNative|——|KuberNetes&CI/CD.V20|-----------------------------------------------------------|Jenkins.v08|kubeconfig多叢集配置.v02|



[CloudNative:KuberNetes&CI/CD.V20]                                                                    [Applications.KuberNetes] [|Jenkins|kubeconfig多叢集配置|]








一、檢視k8s叢集配置
### --- 檢視kubeconfig檔案配置資訊

[root@k8s-master01 ~]# cat ~/.kube/config 
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUd****************
    server: https://192.168.1.11:6443
  name: kubernetes                          # 儲存了一個叢集,名稱就是kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: LS0tLS1CRUdJ****************
    client-key-data: LS0tLS1CRUdJTiBSU0Eg****************
二、新新增k8s叢集:test
### --- 新新增一個k8s叢集:test
~~~     # 檢視叢集地址

[root@k8s-master01 pki]# pwd
/etc/kubernetes/pki
[root@k8s-master01 pki]# kubectl cluster-info
Kubernetes control plane is running at https://192.168.1.11:6443
CoreDNS is running at https://192.168.1.11:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
~~~     # 拷貝kubeconfig檔案到當前目錄下

[root@k8s-master01 pki]# cp ~/.kube/config ./multi-cluster.yaml
~~~     # 建立一個k8s叢集test自定義一個kubeconfig檔案,建立多個叢集

[root@k8s-master01 pki]# kubectl config set-cluster test --certificate-authority=ca.pem --embed-certs=true --server=https://192.168.1.11:6443 --kubeconfig=multi-cluster.yaml 
Cluster "test" set.
### --- 為test叢集配置使用者

~~~     # 為k8s-test叢集設定使用者
~~~     叢集、使用者的名稱不可以設定為一樣的,設定為一樣的,會把之前的覆蓋掉
[root@k8s-master01 pki]# kubectl config set-credentials test-admin --client-certificate=admin.pem --client-key=admin-key.pem --embed-certs=true --kubeconfig=multi-cluster.yaml 
User "test-admin" set.
### --- 為test叢集設定上下文
~~~     # 為k8s-test叢集設定上下文

[root@k8s-master01 pki]# kubectl config set-context test --cluster=test --user=test-admin --kubeconfig=multi-cluster.yaml 
Context "test" created.
### --- 檢視test叢集建立結果

[root@k8s-master01 pki]# cat  multi-cluster.yaml 
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZ
    server: https://192.168.1.11:6443
  name: kubernetes              # 第一次建立的k8s叢集:kubernetes
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJ
    server: https://192.168.1.11:6443
  name: test                    # 新建立的k8s叢集
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
- context:
    cluster: test
    user: test-admin
  name: test
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLR
- name: test-admin
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLR
### --- kubernetes和test這2個叢集之間切換

~~~     # 切換到test叢集下
[root@k8s-master01 pki]# kubectl --kubeconfig=multi-cluster.yaml config use-context test
Switched to context "test".
~~~     # 檢視當前叢集下的pod狀態
~~~     --kubeconfig=multi-cluster.yaml若是不新增這個引數的話,預設讀的是 ~/.kube/config這個檔案

[root@k8s-master01 pki]# kubectl get po --kubeconfig=multi-cluster.yaml
~~~     # 切換到預設kubernetes叢集下
~~~     預設叢集沒有設定Context;所以不能切換

[root@k8s-master01 pki]# kubectl --kubeconfig=multi-cluster.yaml config use-context kubernetes
error: no context exists with the name: "kubernetes"
三、新新增k8s叢集:uat
### --- 新新增一個叢集為uat
~~~     # 建立一個k8s叢集test自定義一個kubeconfig檔案,建立多個叢集

[root@k8s-master01 pki]#  kubectl config set-cluster uat --certificate-authority=ca.pem --embed-certs=true --server=https://192.168.1.11:6443 --kubeconfig=multi-cluster.yaml 
Cluster "uat" set.
### --- 為uat叢集配置使用者
~~~     # 為k8s-test叢集設定使用者
~~~     叢集、使用者的名稱不可以設定為一樣的,設定為一樣的,會把之前的覆蓋掉

[root@k8s-master01 pki]# kubectl config set-credentials uat-admin --client-certificate=admin.pem --client-key=admin-key.pem --embed-certs=true --kubeconfig=multi-cluster.yaml 
User "uat-admin" set.
### --- 為uat叢集設定上下文
~~~     # 為k8s-test叢集設定上下文

[root@k8s-master01 pki]# [root@k8s-master01 pki]# kubectl config set-context uat --cluster=uat --user=uat-admin --kubeconfig=multi-cluster.yaml 
Context "uat" created.
四、叢集之間切換:kubernetes、test、uat、
### --- 叢集之間切換
~~~     # 切換到uat叢集下

[root@k8s-master01 pki]# kubectl --kubeconfig=multi-cluster.yaml config use-context uat
Switched to context "uat".
~~~     # 切換到test叢集下

[root@k8s-master01 pki]# kubectl --kubeconfig=multi-cluster.yaml config use-context test
Switched to context "test".
五、建立叢集管理:secrets
### --- 建立叢集管理:secrets
~~~     # 切換到test叢集下

[root@k8s-master01 pki]# kubectl --kubeconfig=multi-cluster.yaml config use-context test
Switched to context "test".
~~~     # 建立secret
~~~     這個secret會掛載到kubectl下的root下的kubeconfig目錄下,用於管理多叢集

[root@k8s-master01 pki]# kubectl create secret generic multi-kube-config --from-file=multi-cluster.yaml 
secret/multi-kube-config created








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)