永久地址:Kubernetes | 安装并使用 kubectl 管理集群(保存网址不迷路 🙃)
问题描述
kubectl,是 Kubernetes 集群管理命令,用于管理 Kubernetes 集群,完成集群维护任务。
该笔记将记录:命令 kubectl 的安装、配置、使用方法,以及常见问题处理。
解决方案
安装 kubectl 命令
关于版本选择:根据官网,kubelet 命令的 次要版本号 应与集群的次版本号最大差一(比如,版本 kubectl-v1.2 可以正常操作版本 Kubernetes v1.1、v1.2、v1.3 的集群),以防止出现某些意料之外的情况。
第一步、安装命令
官方支持通过包管理器安装,但是它是 GOOGLE 源无法访问,我们使用阿里云镜像仓库:
# CentOS 7.4(如果使用阿里云镜像仓库) yum install -y kubelet-1.16.2
通用安装方法
# 下载稳定版本; curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl # 下载特定版本(例如 v1.15.0 版本) curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.15.0/bin/linux/amd64/kubectl # 授权,移动,验证 chmod +x ./kubectl mv ./kubectl /usr/local/bin/kubectl kubectl version --client ################################################################################ # 其他系统 ################################################################################ # 其他系统也是类似的,只不过是下载的目录不同。 # 其他版本的安装可以参考官方文档:https://kubernetes.io/docs/tasks/tools/install-kubectl/#download-as-part-of-the-google-cloud-sdk
第二步、调整配置
如果要访问集群,需要使用 kubeconfig 配置文件,该文件位于 ~/.kube/config(在集群主机上),是集群初始化时创建的(手动复制):
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
配置文件 ~/.kube/config 的格式如下(通常使用 kubectl config 命令修改,无需手动编辑):
# touch $HOME/.kube/config apiVersion: v1 current-context: kubernetes-admin@kubernetes kind: Config preferences: {} ################################################################################ # 配置集群 ################################################################################ clusters: - cluster: certificate-authority-data: <ca-data> server: https://10.10.50.90:6443 name: kubernetes ################################################################################ # 配置用户 ################################################################################ users: - name: kubernetes-admin user: client-certificate-data: <client-cert-data> client-key-data: <client-key-data> ################################################################################ # 配置上下文(要使用的用户及要访问的集群) ################################################################################ contexts: - context: cluster: kubernetes user: kubernetes-admin name: kubernetes-admin@kubernetes
第三步、验证命令
# 验证配置 kubectl cluster-info # 如果配置正确,下面的命令将返回URL地址,例如: # Kubernetes master is running at https://10.10.50.90:6443 # 如果服务器返回 URL 地址,但是决绝连接,则使用下面的命令进行排查,以检查配置文件是否正确: kubectl cluster-info dump
配置 BASH 自动补全
# 首先,需要安装 bash-complete 包,因为 kubectl 依赖于它。 # 然后,启用 kubectl 补全 apt-get install bash-completion # Debian yum install bash-completion # CentOS echo 'source <(kubectl completion bash)' >> ~/.bashrc source ~/.bashrc # 或者,可以将脚本放入 /etc/bash_completion.d 中 # 当然,这样也需要从新 source 一下。 kubectl completion bash > /etc/bash_completion.d/kubectl source /etc/bash_completion.d/kubectl # 第一种方法,这样不用考虑 kubectl 升级的问题,它是动态加载的 # 第二种方法,在 kubectl 升级后,需要重新执行
常用命令
查看与删除 Pod 对象:
kubectl get pods -n "namespace" kubectl delete pods "pod name"
删除资源定义:
kubectl delete -f foo.yaml
删除命名空间内所有 ConfigMap 定义:
kubectl delete configmaps $(kubectl -n default get configmaps --output=jsonpath="{range .items[*]}{.metadata.name}{' '}{end}")
导出命名空间中的 Deployment 定义:
kubectl get -n "namespace" deployment "deployment-name" -o yaml --export
查看 Deployment 信息:
kubectl get deployment kubernet-dashboard -n kube-system
修改 Deployment 镜像:
kubectl set -n "namespace" image "deployment/deploy-foo" "deploy-foo"="image-name"
打开编辑器修改 Deployment 信息:
kubectl edit deployment/myapp-deployment --image=172.20.34.206:5000/myapp:img:3.0 kubectl edit deployment kubernet-dashboard -n kube-system kubectl patch deployment "deployment-name" -p "{......}"
为 kubectl 安装插件
kubernetes-sigs/krew: 📦 Find and install kubectl plugins
Kubectl plugins available · Krew
相关链接
配置文件:
Configure Access to Multiple Clusters
命令手册:
Overview of kubectl
Kubernetes/Reference/kubectl
相关文章
「Kubernetes」- Taints and Tolerations(学习笔记)
「Kubernetes」- Part of the existing bootstrap client certificate is expired
「Kubernetes」- Drain a Node
「Kubernetes」- 重新申请证书
「Kubernetes」- Feature Gates
「Kubernetes」- 重新申请证书
「kubectl」- 输出格式
「Kubernetes」- 重新申请证书
参考文献
Install and Set Up kubectl
Optional kubectl configurations/Introduction
使用kubectl delete pods xxx删除对应的pod,提示删除成功,但是立马又回生成一个。为何?
Get YAML for deployed Kubernetes services?
how to delete/remove calico cni from my kubernetes cluster