在测试环境或者比较小的集群中, 本地电脑和 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