kubectl 管理一个 k8s 集群很方便,本机(Linux/macOS)创建一个 $HOME/.kube/config,执行命令即可,比如:

kubectl get deployments
kubectl edit deployments/hello-world

而实际情况往往是多个集群,比如常见的 dev 和 prod:

  • dev:config 发给所有工程师,都可以上去折腾学习积累技术,免得“一人请假,无人会上线”。
  • prod:config 发给开发组长等少数几位高级工程师,负责上线。

那怎么切换环境呢?手动是这样:

cd ~/.kube
cp config.dev config
kubectl get pods

cp config.prod config
kubectl get hpa

写成 shell 是这样:

#!/bin/bash

cp ~/.kube/config.dev ~/.kube/config

然后每次切环境需要两步:

~/kube_config_dev.sh
kubectl get pods

能不能优化成1步?

有办法!用 Docker,比如更新勤快的 dtzar/helm-kubectl

docker run -v "$HOME/.kube/config.dev:/root/.kube/config" \
    -it dtzar/helm-kubectl \
    env LANG=C.UTF-8 \
    bash

阿里云

如果是阿里云的话,官方有 kubectl 镜像,版本比较旧,但正适合阿里云的 k8s。

docker run -v "$HOME/.kube/config.dev:/root/.kube/config" \
    -it registry.cn-shanghai.aliyuncs.com/aliacs-app-catalog/kubectl:1.1.4 \
    env LANG=C.UTF-8 \
    bash
 
kubectl edit deployments/hello-world

报错缺少 vi:

error: unable to launch the editor “vi”

看来要基于这个镜像再安装 vi,那就需要做个新 Docker 了。正好也可以把 Vim 配置缩进为2个空格。

FROM registry.cn-shanghai.aliyuncs.com/aliacs-app-catalog/kubectl:1.1.4

RUN apt-get update \
    && apt-get install -y vim

COPY .vimrc /root/

完整代码请看:github.com/sinkcup/docker-kubectl-vim-for-alibaba-cloud

已公开发布到阿里云镜像仓库,登录即可查看:aliyun.com/…/sinkcup/kubectl-vim

使用步骤:

wget https://raw.githubusercontent.com/sinkcup/docker-kubectl-vim-for-alibaba-cloud/master/kubectl_example.sh
cp kubectl_example.sh kubectl_dev.sh
sed -i 's/example/dev/' kubectl_dev.sh

这样切环境只需要1步了:

~/kubectl_dev.sh