1

在测试环境或者比较小的集群中, 本地电脑和 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: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tL......JJVkFURSBLRVktLS0tLQo=
    server: https://192.168.31.12:6443
  name: 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: T0tLS0tCk1JSUM4akNDQWRxZ0F3SUJBZ0......VSVElGSUNBVEUtLS0tLQo=
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tL......JJVkFURSBLRVktLS0tLQo=

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

三. 使用本地kubectl

使用 kubectl 查看和管理集群:

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

facelessman
106 声望9 粉丝

Valar Morghulis