在测试环境或者比较小的集群中, 本地电脑和 Kubernetes 集群处于同一局域网内, 那么就可以通过在本地电脑上安装 kubectl , 直连 K8s master 并管理 k8s 集群.

一. 本地安装kubectl

MacOS 下可通过 brew install 安装:

$ brew install kubectl

当然也可以直接下载:

$ 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 读取 $HOME/.kube/config 作为配置文件. 另外, 也可以通过两种方式为 kubectl 指定配置文件:

  • 环境变量 KUBECONFIG
  • 命令行参数 --kubeconfig

本例我们采取$HOME/.kube/config 作为配置文件的方案. 在 k8s master 上拉取配置文件 /etc/kubernetes/admin.conf 到本地 ~/.kube/config.

本 demo 的配置文件内容如下:

apiVersion: v1clusters:- cluster:    certificate-authority-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tL......JJVkFURSBLRVktLS0tLQo=    server: https://192.168.31.12:6443  name: kubernetescontexts:- context:    cluster: kubernetes    user: kubernetes-admin  name: kubernetes-admin@kubernetescurrent-context: kubernetes-admin@kuberneteskind: Configpreferences: {}users:- name: kubernetes-admin  user:    client-certificate-data: T0tLS0tCk1JSUM4akNDQWRxZ0F3SUJBZ0......VSVElGSUNBVEUtLS0tLQo=    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tL......JJVkFURSBLRVktLS0tLQo=

注意: 如果配置文件中 server 的地址是 IP (比如上文中的192.168.31.12), 那么需要保证从本地能访问到该 IP; 如果是 hostname 且非正式域名, 那么在本地 hosts 文件中增加一条记录.

三. 使用本地kubectl

使用 kubectl 查看和管理集群:

$ kubectl get pods -n kube-systemNAME                              READY   STATUS    RESTARTS   AGEcoredns-7ff77c879f-968dc          1/1     Running   2          27h...metrics-server-7f96bbcc66-8xqfg   1/1     Running   0          4h49m