使用 Kubectl 命令行工具可以管理 Kubernetes 集群。 kubectl
在 $HOME/.kube
目录中查找一个名为 config
的配置文件。 也可以通过设置 KUBECONFIG 环境变量或设置 --kubeconfig
参数来指定其它kubeconfig文件。
Kubectl 自动补全
1、安装bash-completion
使用yum install bash-completion
安装,该命令将创建文件/usr/share/bash-completion/bash_completion。
2、启用自动补全
source <(kubectl completion bash) # 在 bash 中设置当前 shell 的自动补全,要先安装 bash-completion 包
echo "source <(kubectl completion bash)" >> ~/.bashrc # 在您的 bash shell 中永久的添加自动补全
3、为 kubectl 配置一个别名
[root@localhost ~]# echo 'alias k=kubectl' >>~/.bashrc
[root@localhost ~]# echo 'complete -F __start_kubectl k' >>~/.bashrc
[root@localhost ~]#
[root@localhost ~]# k get node
NAME STATUS ROLES AGE VERSION
localhost.localdomain Ready control-plane,master,worker 107d v1.20.4
https://kubernetes.io/zh/docs/tasks/tools/included/optional-kubectl-configs-bash-linux/
创建对象
kubectl apply -f ./my-manifest.yaml # 创建资源
kubectl apply -f ./my1.yaml -f ./my2.yaml # 使用多个文件创建
kubectl apply -f ./dir # 基于目录下的所有清单文件创建资源
kubectl create deployment nginx --image=nginx # 启动单实例 nginx
查看和查找资源
# get 命令的基本输出
kubectl get services # 列出当前命名空间下的所有 services
kubectl get pods --all-namespaces # 列出所有命名空间下的全部的 Pods
kubectl get pods -o wide # 列出当前命名空间下的全部 Pods,并显示更详细的信息
kubectl get deployment my-dep # 列出某个特定的 Deployment
kubectl get pods # 列出当前命名空间下的全部 Pods
kubectl get pod my-pod -o yaml # 获取一个 pod 的 YAML
# describe 命令的详细输出
kubectl describe nodes my-node
kubectl describe pods my-pod
# 列出当前名字空间下所有 Services,按名称排序
kubectl get services --sort-by=.metadata.name
# 列出 Pods,按重启次数排序
kubectl get pods --sort-by='.status.containerStatuses[0].restartCount'
# 列举所有 PV 持久卷,按容量排序
kubectl get pv --sort-by=.spec.capacity.storage
# 显示所有 Pods 的标签(或任何其他支持标签的 Kubernetes 对象)
kubectl get pods --show-labels
更新资源
kubectl label pods my-pod new-label=awesome # 添加标签
kubectl label pods my-pod new-label- #删除标签
kubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq # 添加注解
批量删除处于Terminating状态的pod:
kubectl get pods -n default | grep Terminating | awk '{print $1}' | xargs kubectl delete pod -n default --force --grace-period=0
删除资源
kubectl delete -f ./pod.json # 删除在 pod.json 中指定的类型和名称的 Pod
kubectl delete pod,service baz foo # 删除名称为 "baz" 和 "foo" 的 Pod 和服务
kubectl delete pods,services -l name=myLabel # 删除包含 name=myLabel 标签的 pods 和服务
kubectl -n my-ns delete pod,svc --all # 删除在 my-ns 名字空间中全部的 Pods 和服务
与节点和集群进行交互
kubectl cordon my-node # 标记 my-node 节点为不可调度
kubectl drain my-node # 对 my-node 节点进行清空操作,为节点维护做准备
kubectl uncordon my-node # 标记 my-node 节点为可以调度
kubectl cluster-info # 显示主控节点和服务的地址
网友评论