zoukankan      html  css  js  c++  java
  • 使用kubectl config控制多个k8s集群

    在pipeline中的CD环节,有时候需要部署到不同的K8S集群,比如开发环境、测试环境、生产环境。此时可以使用kubectl config来进行多个集群的管理。

    • 开发环境集群
    • 生产环境集群
      为了方便,我们使用Jenkins本机作为agent来配置两个K8S集群的认证文件,达到可以在本机上操作两个集群的目的。

    scp root@192.168.2.29:/etc/kubernetes/admin.conf ~/.kube/config-work-prod
    scp root@10.61.150.19:/etc/kubernetes/admin.conf ~/.kube/config-work-dev

    我们已经完成了配置的拷贝,但是为了便于管理,我们需要对这些配置中的命名进行修改规范;我们要修改这两个配置文件,并着重关注三大要素:集群、上下文、用户;

    1. 修改集群名称

    2. 修改用户名称

    3. 更新上下文名称,关联对应用户及集群

    #dev
    - context:
        cluster: work-dev-cluster
        user: work-dev-admin
      name: kubernetes-dev
    
    #prod
    - context:
        cluster: work-prod-cluster
        user: work-dev-admin
      name: kubernetes-prod
    
    

    4. 将修改好的配置文件写入环境变量

    vim ~/.bash_profile
    export KUBECONFIG=$HOME/.kube/config-work-dev:$HOME/.kube/config-work-prod
    source ~/.bash_profile
    echo $KUBECONFIG
    kubectl config get-contexts
    
    CURRENT   NAME              CLUSTER            AUTHINFO           NAMESPACE
              kubernetes-dev    work-dev-cluster   work-dev-admin
              kubernetes-prod   kubernetes         kubernetes-admin
    

     

     

     

    5. 或取全局上下文

    kubectl config get-contexts

    6. 获取当前K8S上下文

    kubectl config current-context

    7. 切换当前上下文

    kubectl config use-context kubernetes-dev

    8. kubectl config 命令见帮助信息

    current-context 显示 current_context
    delete-cluster 删除 kubeconfig 文件中指定的集群
    delete-context 删除 kubeconfig 文件中指定的 context
    get-clusters 显示 kubeconfig 文件中定义的集群
    get-contexts 描述一个或多个 contexts
    rename-context Renames a context from the kubeconfig file.
    set 设置 kubeconfig 文件中的一个单个值
    set-cluster 设置 kubeconfig 文件中的一个集群条目
    set-context 设置 kubeconfig 文件中的一个 context 条目
    set-credentials 设置 kubeconfig 文件中的一个用户条目
    unset 取消设置 kubeconfig 文件中的一个单个值
    use-context 设置 kubeconfig 文件中的当前上下文
    view 显示合并的 kubeconfig 配置或一个指定的 kubeconfig 文件

    root@ubuntu:~/karmada# kubectl get clusters
    error: the server doesn't have a resource type "clusters"
    root@ubuntu:~/karmada# echo $KUBECONFIG
    /root/karmada/251.k8s.conf.in.ubuntu:/etc/kubernetes/admin.conf
    root@ubuntu:~/karmada# kubectl config get-contexts
    CURRENT   NAME                          CLUSTER             AUTHINFO            NAMESPACE
              karmada-apiserver251          karmada-apiserver   karmada-apiserver   
    *         kubernetes-admin@kubernetes   kubernetes          kubernetes-admin    
    root@ubuntu:~/karmada# kubectl get clusters
    error: the server doesn't have a resource type "clusters"
    root@ubuntu:~/karmada# 

    要执行export KUBECONFIG=/root/karmada/251.k8s.conf.in.ubuntu:/etc/kubernetes/admin.conf

    root@ubuntu:~/karmada# export KUBECONFIG=/root/karmada/251.k8s.conf.in.ubuntu:/etc/kubernetes/admin.conf
    root@ubuntu:~/karmada# kubectl get clusters
    NAME     VERSION   MODE   READY   AGE
    251k8s   v1.18.1   Push   True    19h
    root@ubuntu:~/karmada# 

    root@ubuntu:~/karmada# kubectl config get-contexts
    CURRENT   NAME                          CLUSTER                AUTHINFO            NAMESPACE
              k8s251                        kubernetes251          kubernetes-admin    
              karmada-apiserver251          karmada-apiserver251   karmada-apiserver   
    *         kubernetes-admin@kubernetes   kubernetes             kubernetes-admin    
    root@ubuntu:~/karmada# kubectl config use-context k8s251
    Switched to context "k8s251".
    root@ubuntu:~/karmada# kubectl get pods 
    NAME                    READY   STATUS    RESTARTS   AGE
    nginx-f89759699-c7hj6   1/1     Running   0          19h
    root@ubuntu:~/karmada# kubectl config use-context karmada-apiserver251
    Switched to context "karmada-apiserver251".
    root@ubuntu:~/karmada# kubectl get pods 
    No resources found in default namespace.
    root@ubuntu:~/karmada# kubectl get works
    No resources found in default namespace.
    root@ubuntu:~/karmada# kubectl get clusters
    NAME     VERSION   MODE   READY   AGE
    251k8s   v1.18.1   Push   True    19h
    root@ubuntu:~/karmada# kubectl config use-context kubernetes-admin@kubernetes
    Switched to context "kubernetes-admin@kubernetes".
    root@ubuntu:~/karmada# kubectl get pods 
    error: You must be logged in to the server (Unauthorized)
    root@ubuntu:~/karmada# 

    root@ubuntu:~/karmada# kubectl config use-context kubernetes-admin@kubernetes
    Switched to context "kubernetes-admin@kubernetes".
    root@ubuntu:~/karmada# kubectl get pods 
    NAME                           READY   STATUS    RESTARTS   AGE
    apache-app-84f76964b5-fgsc7    1/1     Running   3          10d
    apache-app-84f76964b5-kt5cx    1/1     Running   0          14d
    example-foo-54dc4db9fc-fmsqn   1/1     Running   3          10d
    nginx-app-56b5bb67cc-mkfct     1/1     Running   3          10d
    nginx-app-56b5bb67cc-s9jtk     1/1     Running   0          14d
    web2-7cdf5dffb-26xrn           1/1     Running   3          15d
    web3-c9654466d-xwb5j           1/1     Running   3          15d
    root@ubuntu:~/karmada# 
    root@ubuntu:~/karmada# kubectl config get-contexts
    CURRENT   NAME                          CLUSTER                AUTHINFO               NAMESPACE
              k8s251                        kubernetes251          kubernetes-admin251    
              karmada-apiserver251          karmada-apiserver251   karmada-apiserver251   
    *         kubernetes-admin@kubernetes   kubernetes             kubernetes-admin       
    root@ubuntu:~/karmada# 
    root@ubuntu:~/karmada# export KUBECONFIG=/root/karmada/251.k8s.conf.in.ubuntu:/etc/kubernetes/admin.conf
    root@ubuntu:~/karmada# kubectl config use-context karmada-apiserver251
    Switched to context "karmada-apiserver251".
    root@ubuntu:~/karmada# kubectl get clusters
    NAME     VERSION   MODE   READY   AGE
    251k8s   v1.18.1   Push   True    19h
    root@ubuntu:~/karmada# 
  • 相关阅读:
    java编译错误No enclosing instance of type TestFrame is accessible. Must qualify the allocation with an enclosing instance of type TestFrame (e.g. x.new A(
    java 2中创建线程方法
    动态规划基本思想
    关于eclipse编译一个工程多个main函数
    java Gui初识
    Eclipse中java项目的打包
    java 播放声音
    把资源文件夹导入到eclipse中
    Java建立JProgressBar
    How to grant permissions to a custom assembly that is referenced in a report in Reporting Services
  • 原文地址:https://www.cnblogs.com/dream397/p/15165339.html
Copyright © 2011-2022 走看看