美文网首页
kubectl常用命令

kubectl常用命令

作者: 87d6dc4b11a7 | 来源:发表于2021-12-27 11:17 被阅读0次

使用 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              # 显示主控节点和服务的地址

相关文章

网友评论

      本文标题:kubectl常用命令

      本文链接:https://www.haomeiwen.com/subject/kjgjqrtx.html