目录
安装 kubectl
一、命令自动补全
二、常用命令
1、查看所有pod列表
2、查看RC和service列表
3、显示Node的详细信息
4、显示Pod的详细信息, 特别是查看Pod无法创建的时候的日志
5、 根据yaml创建资源, apply可以重复执行,create不行
6、基于nginx.yaml定义的名称删除指定资源
7、删除所有包含某个label的pod和service
8、删除默认命名空间下的所有 Pod
9、执行pod命令
10、查看容器日志
11、查看节点 labels
12、重启pod
三、创建命令
四、查看和查找资源
五、删除资源
六、Pod常用操作
Kubernetes 是一种用于自动化部署、扩展和管理容器化应用程序的开源平台。而 kubectl 则是 Kubernetes 的命令行工具,用于管理 Kubernetes 集群。
在本文中,我们将深入介绍 kubectl 的各种用法和功能。
安装 kubectl
要安装 kubectl,需要使用的操作系统的软件包管理器或者前往 Kubernetes 官方网站下载二进制文件。在安装之前,确保Kubernetes集群已经启动并正在运行。
一、命令自动补全
source <(kubectl completion bash)
#在bash中设置当前shell的自动补全,要先安装bash-completion包。
echo "source <(kubectl completion bash)" >> ~/.bashrc
二、常用命令
1、查看所有pod列表
查看所有的pod列表,-n 后跟namespace,查看指定的命名空间
kubectl get pod
kubectl get pod -n kube-system #查看指定的命名空间的pod
kubectl get pod -owide #查看更详细的信息,比如pod 所在的节点
kubectl get pod --show-labels #获取pod 并查看pod 的标签
2、查看RC和service列表
查看RC和service列表, -o wide查看详细信息
kubectl get rc,svc
kubectl get pod,svc -o wide
kubectl get pod <pod-name> -o yaml
3、显示Node的详细信息
kubectl describe node 192.168.80.8 #可以跟Node或者IP或者主机名
4、显示Pod的详细信息, 特别是查看Pod无法创建的时候的日志
kubectl describe pod <pod-name>
eg:
kubectl describe pod nginx-deployment-d558b54fd-72bpn
5、 根据yaml创建资源, apply可以重复执行,create不行
kubectl get service nginx -o yaml > nginx.yaml
kubectl create -f nginx.yaml
kubectl apply -f nginx.yaml
6、基于nginx.yaml定义的名称删除指定资源
kubectl delete -f nginx.yaml
7、删除所有包含某个label的pod和service
kubectl delete pod,svc -l name=<label-name>
8、删除默认命名空间下的所有 Pod
kubectl delete pod --all
9、执行pod命令
kubectl exec <pod-name> -- date
kubectl exec <pod-name> -- bash
kubectl exec <pod-name> -- ping
10、查看容器日志
kubectl logs <pod-name>
kubectl logs -f <pod-name> #实时查看日志
kubectl log <pod-name> -c <container_name> #若pod只有一个容器,可以不加-c
kubectl logs -l app=frontend #返回所有标记为app=frontend的pod的合并日志。
11、查看节点 labels
kubectl get node --show-lables
12、重启pod
kubectl get pod <POD名称> -n <NAMESPACE名称> -o yaml | kubectl replace --force -f -
三、创建命令
kubectl apply -f ./ss.yaml # 创建资源
kubectl apply -f ./ss1.yaml -f ./ss2.yaml # 使用多个文件创建
kubectl apply -f ./dir # 基于目录下的所有清单文件创建资源
kubectl apply -f https://git.io/vPieo # 从 URL 中创建资源
kubectl create deployment nginx --image=nginx # 启动单实例 nginx
kubectl explain pods,svc # 获取 pod 清单的文档说明
四、查看和查找资源
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
五、删除资源
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 delete pods,services -l name=myLabel --include-uninitialized
# 删除包含 label name=myLabel 标签的 Pods 和服务
kubectl -n my-ns delete po,svc --all # 删除在 my-ns 名字空间中全部的 Pods 和服务
六、Pod常用操作
kubectl logs my-pod
# 获取 pod 日志(标准输出)
kubectl logs -l name=myLabel
# 获取含 name=myLabel 标签的 Pods 的日志(标准输出)
kubectl logs my-pod --previous
# 获取上个容器实例的 pod 日志(标准输出)
kubectl logs my-pod -c my-container
# 获取 Pod 容器的日志(标准输出, 多容器场景)
kubectl logs -l name=myLabel -c my-container
# 获取含 name=myLabel 标签的 Pod 容器日志(标准输出, 多容器场景)
kubectl logs my-pod -c my-container --previous
# 获取 Pod 中某容器的上个实例的日志(标准输出, 多容器场景)
kubectl logs -f my-pod
# 流式输出 Pod 的日志(标准输出)
kubectl logs -f my-pod -c my-container
# 流式输出 Pod 容器的日志(标准输出, 多容器场景)
kubectl logs -f -l name=myLabel --all-containers
# 流式输出含 name=myLabel 标签的 Pod 的所有日志(标准输出)
kubectl run -i --tty busybox --image=busybox -- sh
# 以交互式 Shell 运行 Pod
kubectl run nginx --image=nginx -n mynamespace
# 在指定名字空间中运行 nginx Pod
kubectl run nginx --image=nginx --dry-run=client -o yaml > pod.yaml
# 运行 ngins Pod 并将其规约写入到名为 pod.yaml 的文件
kubectl attach my-pod -i
# 挂接到一个运行的容器中
kubectl port-forward my-pod 5000:6000
# 在本地计算机上侦听端口 5000 并转发到 my-pod 上的端口 6000
kubectl exec my-pod -- ls /
# 在已有的 Pod 中运行命令(单容器场景)
kubectl exec my-pod -c my-container -- ls /
# 在已有的 Pod 中运行命令(多容器场景)
kubectl top pod POD_NAME --containers
# 显示给定 Pod 和其中容器的监控数据