云网牛站
所在位置:首页 > Linux云服务器 > 安装及使用kubectl、kubectx和kubens轻松管理多个Kubernetes集群

安装及使用kubectl、kubectx和kubens轻松管理多个Kubernetes集群

2019-12-06 11:36:05作者:戴进稿源:云网牛站

本文介绍的内容有:在Linux和macOS上安装Kubectl、用于多个集群的Kubectl配置、使用Kubectl在上下文之间切换、使用kubectx和kubens轻松进行上下文和命名空间切换。Kubectl是一个命令行实用程序,用于控制和管理Kubernetes集群以及运行集群的对象。Kubectl使你可以创建、修改和删除各种Kubernetes资源,例如Deployments、Pod、Services、切换上下文、甚至访问容器shell。我们将从安装kubectl开始,然后继续进行必要的配置,以在使用kubectl从CLI管理Kubernetes集群时提高效率。请注意,在使用本文之前,你应该拥有一个正常的Kubernetes集群,参考使用Ansible和Kubespray部署生产就绪Kubernetes集群的步骤

 

在Linux和macOS上安装Kubectl

通过安装Kubernetes集群,你必须已安装kubectl作为基本要求,但这意味着你需要登录到主节点才能运行kubectl命令,可以在本地Linux或macOS计算机上安装kubectl。

1、在Linux上安装Kubectl:

curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl

chmod +x ./kubectl

sudo mv ./kubectl /usr/local/bin/kubectl

确认安装了kubectl:

$ kubectl version

安装及使用kubectl、kubectx和kubens轻松管理多个Kubernetes集群

2、在macOS上安装Kubectl

对于macOS,运行以下命令:

curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl"

chmod +x ./kubectl

sudo mv ./kubectl /usr/local/bin/kubectl

kubectl version

 

配置Kubectl

kubectl工具在$HOME/.kube目录中查找名为config的文件,但是可以使用--kubeconfig选项指定一个单独的文件,kubeconfig文件可帮助你组织有关集群、用户、名称空间和身份验证机制的信息:

$ ls $HOME/.kube/config

/home/jmutai/.kube/config

在此配置中,需要设置以下元素:

clusters–要配置对群集的访问,你需要知道群集的位置并具有访问它的凭据,在群集部分中,将设置证书授权数据,访问URL和群集名称。

context:上下文元素用于以方便的名称将访问参数分组,配置文件中的每个上下文都应具有三个参数:集群、名称空间和用户。

users:指定用于访问及其凭据。

对于单个群集,你的配置文件将类似于以下内容:

安装及使用kubectl、kubectx和kubens轻松管理多个Kubernetes集群

获取群集URL、CA数据和用户凭据,然后替换为文件。

 

用于多个集群的Kubectl配置

以下是四个Kubernetes集群的模板配置文件:

k8s-dev –上下文是k8s-dev,用户是k8s-dev-admin。

k8s-staging –上下文是k8s-staging,用户是k8s-staging-admin。

k8s-qa –上下文是k8s-qa,用户是k8s-qa-admin。

k8s-prod –上下文是k8s-prod,用户是k8s-prod-admin。

每个群集都有一个唯一的名称,关联的上下文和用户:

apiVersion: v1

kind: Config

preferences: {}

clusters:

- cluster:

 certificate-authority-data:

 server:

 name: k8s-dev

- cluster:

 certificate-authority-data:

 server:

 name: k8s-staging

- cluster:

 certificate-authority-data:

 server:

 name: k8s-qa

- cluster:

 certificate-authority-data:

 server:

 name: k8s-prod

contexts:

- context:

 cluster: k8s-dev

 user: k8s-dev-admin

 name: k8s-dev

- context:

 cluster: k8s-staging

 user: k8s-staging-admin

 name: k8s-staging

- context:

 cluster: k8s-qa

 user: k8s-qa-admin

 name: k8s-qa

- context:

 cluster: k8s-prod

 user: k8s-prod-admin

 name: k8s-prod

users:

- name: k8s-dev-admin

 user:

 password:

 username:

- name: k8s-staging-admin

 user:

 client-certificate-data:

 client-key-data:

- name: k8s-qa-admin

 user:

 client-certificate-data:

 client-key-data:

- name: k8s-prod-admin

 user:

 client-certificate-data:

 client-key-data:

修改模板以适合您的用例,然后将内容粘贴到$HOME/.kube/config中。

 

使用Kubectl在上下文之间切换

查看当前上下文:

$ kubectl config get-contexts

$ kubectl配置获取上下文

安装及使用kubectl、kubectx和kubens轻松管理多个Kubernetes集群

要切换到其他上下文,请使用:

$ kubectl config use-context k8s-prod

Switched to context "k8s-prod".

$ kubectl config use-context k8s-staging

Switched to context "k8s-staging".

测试:

$  kubectl get nodes

安装及使用kubectl、kubectx和kubens轻松管理多个Kubernetes集群

 

安装及使用kubectx和kubens轻松进行上下文和命名空间切换

kubectx帮助你在集群之间来回切换,而kubens帮助你在Kubernetes命名空间之间平稳地切换。

1、安装kubectx和kubens

wget https://raw.githubusercontent.com/ahmetb/kubectx/master/kubectx

wget https://raw.githubusercontent.com/ahmetb/kubectx/master/kubens

chmod +x kubectx kubens

sudo mv kubens kubectx /usr/local/bin

用法页面:

$ kubectx --help

$ kubens --help

安装及使用kubectl、kubectx和kubens轻松管理多个Kubernetes集群

例子:

# Get all contexts

$ kubectx

k8s-dev 

k8s-staging

k8s-qa

k8s-prod

# Switch to prod context

$ kubectx k8s-prod

# Get all namespaces in  k8s-prod context

$ kubens

# Switch to a namespace

$ kubens <namespacename>

请参阅以下gif演示操作过程。

kubectx演示GIF:

安装及使用kubectl、kubectx和kubens轻松管理多个Kubernetes集群

kubens演示GIF:

安装及使用kubectl、kubectx和kubens轻松管理多个Kubernetes集群

最后,我希望本文对你使用kubectl和其他工具(如kubectx和kubens)进行Kubernetes管理有所帮助。

 

相关主题

在Docker中运行本地Kubernetes集群

精选文章
热门文章