上一篇文章介绍了通过kubeadm来配置Kubernetes集群运行环境。那在开始运行我们的项目之前,还是来了解一些能够提高我们执行效率的技巧吧!
kubectl命令自动补全
kubectl completion
在 Master 节点上,执行 kubectl 命令时,默认是无法使用自动提示的功能。也就导致了我们需要把命令敲完整才可以。kubectl 工具本身就支持自动补全,只不过需要设置一下。
如果你使用的是 bash
, 则执行如下命令:
1 | $ echo "source <(kubectl completion bash)" >> ~/.bashrc |
如果你使用的是 zsh
,则执行如下命令:
1 | $ echo "source <(kubectl completion zsh)" >> ~/.zshrc |
或者直接编辑 ~/.zshrc
加上 source <(kubectl completion zsh)
一行。
Kube-prompt:交互式 Kubernetes 客户端
Kube-prompt
可以让你在命令行下接受与 Kubectl 相同的命令,并且不需要提供 Kubectl 前缀。Kube-prompt
还提了交互式会话下的命令提示、自动补全等功能。
项目地址:c-bata/kube-prompt: An interactive kubernetes client featuring auto-complete.
安装:
直接访问地址 Releases · c-bata/kube-prompt 下载相应文件并解压到本地。然后给 kube-prompt
加上执行权限并移懂到系统目录:
1 | $ chmod +x kube-prompt |
重置 kubernetes init
如果需要在 kubeadm init
中加入一些其他的参数配置,那么如何重置刚才的操作呢?
执行 kubeadm reset
命令即可,该命令会将主机恢复原状:
1 | [root@master ~]# kubeadm reset |
如何从集群中移除Node节点
如果需要从集群中移除 node1
这个Node执行下面的命令:
在master节点上执行:
1 | # kubectl drain <node1> --delete-local-data --force --ignore-daemonsets |
在 node1
上执行以下几条命令:
1 | # kubeadm reset |
新增Node节点但token过期了
默认情况下,Kubernetes生成的token过期时间是24小时。可以通过 kubeadm token list
命令来查看:
1 | ➜ ~ kubeadm token list |
在 token 过期之后,如果想要增加新的节点,可以通过如下命令生成新的 token 值:
1 | kubeadm token create |
查看密钥的 hash 值:
1 | openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' |
在要新增的节点上执行:
1 | kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash> |
在其他电脑上使用kubectl远程管理
在管理Kubernetes集群时,我们每次执行kubectl命令都要登录到 Master 节点上操作,有一些麻烦。我们可以直接在自己的开发电脑上通过安装单独的 kubectl 文件来进行远程管理。
安装kubectl
以MacOS为例。
二进制方式安装
执行如下命令安装最新版本的kubectl:
1 | curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl |
要下载特定版本,可通过以下命令查询可用版本:
1 | curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt |
然后通过下面的命令下载,以 v1.14.0
版本为例:
1 | curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.14.0/bin/darwin/amd64/kubectl |
然后,为其赋予可执行权限并放到系统目录下:
1 | chmod +x ./kubectl |
验证是否可用:
1 | kubectl version |
不过由于“网络原因”,地址 https://storage.googleapis.com
可能访问不到。也就导致上面的下载命令会一直卡着不动。
我们只能通过去指定的二进制文件下载地址了。
找到 Kubernetes在 GitHub上的仓库地址其中的 CHANGELOG.md
文件:kubernetes/CHANGELOG.md at master · kubernetes/kubernetes
选择指定版本下的 Client Binaries
:
选择指定的文件下载:
下载到本地:
1 | ➜ wget https://dl.k8s.io/v1.14.1/kubernetes-client-darwin-amd64.tar.gz |
注:https://dl.k8s.io
这个网址可能也访问不到,建议还是使用 FQ
工具后操作。
安装好后进行验证:
1 | ➜ kubectl version |
正常显示版本信息。
通过homebrew安装
如果觉得上面的方式太繁琐,还可以选择使用 Homebrew
来安装:
1 | brew install kubernetes-cli |
其他系统
其他系统可用的 kubectl 除了上面的二进制方式,还可以在这个地址中下载(无需FQ):
获取授权文件
要连接到Kubernetes集群,还需要指定授权文件。只需将 Master 节点上的授权文件拷贝到本地的默认路径 $HOME/.kube
中。
创建 $HOME/.kube
目录:
1 | ➜ mkdir -p $HOME/.kube |
执行 scp
命令:
1 | ➜ scp root@192.168.5.28:/etc/kubernetes/admin.conf ~/.kube/config |
验证能否正常连接到集群:
1 | ➜ kubectl get nodes |
因为 kubectl默认的配置文件路径是 $HOME/.kube/config
,所以我们直接设置成这个。如果是其他路径,则需要通过 --kubeconfig
参数指定配置文件:
1 | kubectl --kubeconfig ./admin.conf get nodes |
启用自动补全
这里,依然需要设置一下 kubectl
命令的自动补全(zsh):
1 | $ echo "source <(kubectl completion zsh)" >> ~/.zshrc |
常用命令
查看集群信息
命令:kubectl cluster-info
1 | ➜ ~ kubectl cluster-info |
查看版本信息
命令:kubectl version
1 | ➜ ~ kubectl version |
查看集群所有Pod信息: kubectl get pod --all-namespaces
1 | ➜ ~ kubectl get pod --all-namespaces |
未完待续。。。