1. kubectl简介
Kubectl is a command line interface for running commands against Kubernetes clusters.
没错,kubectl是一个命令行工具,用来控制K8S集群。kubectl该怎么读?可以参考HowToPronounce-kubectl,郝同学喜欢读作kubecontrol。
kubectl命令格式为:
1 | kubectl [command] [TYPE] [NAME] [flags] |
更多内容,参考:
《K8S入门篇》一文中,已经学习了kubectl的安装方法,并且使用了一些简单命令。本文学习kubectl的配置方法和配置技巧。
2. 安装kubectl
1 | curl -LO https://dl.k8s.io/release/v1.22.15/bin/linux/amd64/kubectl |
3. 获取kubeconfig
要想正常使用kubectl命令,首先要拿到用户认证配置信息(kubeconfig)。
kubeconfig获取方式:
- 使用kubeadm安装的K8S集群,默认的kubeconfig配置文件路径为
/etc/kubernetes/admin.conf
- 使用minikube安装的K8S集群,默认的kubeconfig配置文件路径为
${HOME}/.kube/config
- 用户默认使用的kubeconfig配置文件路径为
${HOME}/.kube/config
- 阿里云/腾讯云等云平台提供的K8S集群,从集群管理页面上获取kubeconfig配置,保存为
${HOME}/.kube/config
即可
4. 指定配置文件
如果有多个集群的多个kubeconfig配置文件,那么我们可能需要指定一个配置文件。
4.1. 指定默认配置文件
1 | export KUBECONFIG=~/.kube/config |
4.2. 查看kubeconfig配置内容
1 | kubectl config view |
4.3. 指定配置文件和context
1 | kubectl config --kubeconfig=/root/vk-kube-config use-context voidking@kubenertes |
4.4. 指定单次命令的配置文件
1 | kubectl get deployments --kubeconfig=/root/.kube/config |
5. 指定默认的namespace
1 | kubectl config get-contexts |
6. 配置整合
6.1. 同时使用多个配置
1 | export KUBECONFIG=~/.kube/config:~/Download/new-config |
要保证多个config的cluster name、user name、context name不同,否则无法区分它们,会造成配置混乱。
如果多个config的cluster name、user name、context name相同,可以自行修改一下,改成不同的name,修改name不会影响对集群的操作。
6.2. 多个配置整合成一个配置
1 | KUBECONFIG=~/.kube/config:~/Downloads/new-config kubectl config view --merge --flatten > ~/.kube/newconfig |
6.3. 查看和使用配置
1 | kubectl config get-contexts |
6.4. 删除某个集群配置
1 | kubectl config delete-context xxx |
7. 配置整合2.0
多个kubeconfig合并成一个kubeconfig后,可以通过kubectl config
实现在多个k8s集群间切换,很方便。
但是,因为很多集群的cluster name、user name、context name是相同的,所以每当有新的k8s集群加入时,或者kubeconfig过期需要重新加入时,我们都需要修改对新的config中的name进行修改,也是比较麻烦。
这里提供另外一种配置整合的方法:config文件改为软链,软链到真实config,通过修改软链切换配置。
1、准备真实config
1 | mkdir -p ~/.kubeconfig/dev/ |
2、准备修改软链脚本 change-kubeconfig.sh
1 |
|
3、脚本配置
1 | chmod a+x change-kubeconfig.sh |
4、使用脚本
1 | source .bash_profile |
8. 命令自动补全
8.1. linux系统配置
1 | yum install -y bash-completion |
配置后,输入kubectl get s
后,两次按下tab键,会提示可以选择的资源。
输入kubectl get sec
后,按下tab键,会自动补全命令。
8.2. mac系统配置
1 | brew install bash-completion |
9. 快捷命令
9.1. kubectl缩写为k
1 | which kubectl |
建议把配置写入 .bash_profile
,登录shell后别名自动生效。
9.2. 命令合并
1 | alias kg="kubectl get" |
kubectl get合并为kg,kubectl describe合并为kd。