kubectl 常用命令
kubernetes 官方命令文档:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
1 kubectl命令遵循这一语法格式:kubectl an_action a_resource a_resource_name –flags
2 kubectl get all显示运行中的Pod、Service、Deployment以及ReplicaSet的关键信息,all是指所有已存在的资源,
3 kubectl get events显示了event的历史记录。它像是Kubernetes级别的日志,而不是容器级别的日志。
4
-
help—获取帮助 如,kubectl get pods –help
-
get— 显示有关一个或多个资源的信息。 可以将get和单个对象一起使用,并添加--watch标志以实时观察更新。
-
describe—显示关于一个或多个资源的详细信息
-
logs—显示容器日志 。logs命令需要一个pod名称。当在多个pod中时,使用-c my-container标志来指定一个容器。使用--previous标志来获取不再运行的容器信息
-
exec—进入容器中一个正在运行的进程。例如,要在my_pod中进入容器并运行Bash,请输入kubectl exec -it my_pod bash。
-
apply—创建或选择一个资源。 如果资源不存在,apply将创建它;如果它存在,apply将更改它
-
delete—删除一个或多个资源。 kubectl delete pod my_pod这一命令可用于删除名称为my_pod的Pod。要删除所有相同类型的资源,需要使用--all标志。例如,使用kubectl delete rs –all 。 请注意,如果你尝试这一操作,那么要先删除Deployment,否则ReplicaSet将会重新启动。
- kubectl delete namespace demo-namespace
删除命名空间不仅删除命名空间,还会清理其中部署了的所有资源
5 kubectl使用配置文件来访问Kubernetes集群。
-
如果设置了--kubeconfig标志,则仅加载给定文件。该标志只能设置一次,不会发生合并。
-
如果设置了$ KUBECONFIG环境变量,则根据系统的正常路径分隔规则,将其解析为文件系统路径列表。
-
否则,如果上述两项都未设置,则使用${HOME}/.kube/config 文件,不进行任何合并
6 查看当前配置:kubectl config view
查看配置的摘要:kubectl config get-contexts
7 查看当前使用的上下文:kubectl config current-context
更改连接的上下文:kubectl config use-context ***
更改当前上下文的命名空间:kubectl config set-context --current --namespaces=rancher
修改当前上下文的命名空间:kubectl config set-context $(kubectl config current-context) --namespace=demo-namespace
恢复到默认命名空间:kubectl config set-context $(kubectl config current-context) --namespace=
8 检测核心组件状态:kubectl get cs 【如果你的集群运行不正常,这是一个很好的、进行第一次诊断检查的机会】
9 收集服务信息:kubectl cluster-info
10 查看节点信息:kubectl get nodes -o wide
11 可用的命名空间:kubectl get namespaces 创建命名空间:kubectl create namespace test-demo
跨命名空间查询集群上的资源:kubectl get all --all-namespaces
通过文件创建命名空间:kubectl apply -f demo-namespace.yml
要将操作应用于不同的命名空间,我们必须在命令中包含—namespace=这一选项,如 kubectl create deployment --image nginx demo-nginx --namespace=demo-namespace
查看指定命名空间里的资源:kubectl create deployment --image nginx demo-nginx --namespace=demo-namespace
12 查询资源最新的事件:kubectl get events --all-namespaces
13 查看当前部署的pod: kubectl get pods
查看pod所属的命名空间;kubectl get pods --all-namespaces
14 清理部署的资源:kubectl delete deployment nginx
15 pod
16 资源删除
17 服务
18 事件
19 命名空间
20 终极命令
21 scale
22 利用wget访问页面:
23 创建服务:kubectl expose
24 创建deployment
25 升级 & 回滚
26 编辑:
27
28 通过文件创建:
29 基于文件删除:
30 查询资源定义字段有哪些:
kubectl explain pods
kubectl explain pods.met
31 大部分资源的配置清单:
apiVersion:group/version
$ kubectl api-version
kind: 资源类别
metadata:元数据
name
namespace
labels
annotations
spec:期望的状态
status:当前状态,本字段由kubernetes维护
32
查看名称空间:kubectl get namespace 或 kubectl get ns (namespace简称ns)
查看空间中的资源:kubectl get all -n default
创建空间:kubectl create namespace app
删除空间:kubectl delete namespace app
创建deployment(简写deploy):kubectl create deployment nginx-dp --image=nginx:1.7.9 -n kube-public
查看deployment : kubectl get deployment -n kube-public
展示扩展信息(-o wide):kubectl get pods -n kube-public -o wide
看详细信息:kubectl describe deployment nginx-dp -n kube-public
进入pod:kubectl -exec -it pod-id /bin/bash -n kube-public
删除pod(删除是重启的方法之一):kubectl delete pod pod-id -n kube-public [--force --grace-period=0 ]
删除deployment:kubectl delete deploy nginx-dp -n kube-public
创建服务:kubectl expose deployment nginx-dp --port=80 -n kube-public
查看服务:kubectl get svc -n kube-public
扩容:kubectl scale deployment nginx-dp --replication=2 -n kube-public
命令大全:kubectl --help
查看yaml:kubectl get pods pod-id -o yaml -n kube-public
查看yaml中字段含义:kubectl explain service.metadata
语法格式:kubectl create/apply/delete -f /path/yaml
应用yaml:kubectl apply -f nginx-svc.yaml
利用yaml删除:kubectl delete -f nginx-svc.yaml
在线修改yaml:kubectl edit svc nginx-dp
daemonset缩写ds
33
查看资源名称:kubectl api-resources
查看资源字段规范:kubectl explian deployment.spec --recursive
kubectl explain仅显示单个级别的字段。你可以使用--recursive标志来显示所有级别的字段
自定义列输出选项的用法如下:kubectl get pods -o custom-columns='NAME:metadata.name'
kubectl get pods -o custom-columns='NAME:metadata.name,NODE:spec.nodeName'
# Pod调度的节点保存在Pod的spec.nodeName字段中(请参阅kubectl explain pod.spec.nodeName)
# Select all elements of a list
kubectl get pods -o custom-columns='DATA:spec.containers[*].image'
# Select a specific element of a list
kubectl get pods -o custom-columns='DATA:spec.containers[0].image'
# Select those elements of a list that match a filter expression
kubectl get pods -o custom-columns='DATA:spec.containers[?(@.image!="nginx")].image'
# Select all fields under a specific location, regardless of their name
kubectl get pods -o custom-columns='DATA:metadata.*'
# Select all fields with a specific name, regardless of their location
kubectl get pods -o custom-columns='DATA:..image'
34
kubectl logs rc-nginx-2-kpiqt logs命令用于显示pod运行中,容器内程序输出到标准输出的内容
kubectl rolling-update rc-nginx-2 -f rc-nginx.yaml 对于已经部署并且正在运行的业务,rolling-update提供了不中断业务的更新方式
kubectl scale rc rc-nginx-3 —replicas=4 scale用于程序在负载加重或缩小时副本进行扩容或缩小
kubectl autoscale rc rc-nginx-3 —min=1 —max=4 autoscale命令会给一个rc指定一个副本数的范围
kubectl attach kube-dns-v9-rcfuk -c skydns —namespace=kube-system attach命令类似于docker的attach命令,可以直接查看容器中以daemon形式运行的进程的输出
kubectl version
kubectl api-versions
======
kubectl cluster-info Kubernetes master is running at https://172.16.16.3:6443 coredns is running at https://172.16.16.3:6443/api/v1/namespaces/kube-system/services/coredns:dns/proxy kubernetes-dashboard is running at https://172.16.16.3:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
多个yaml文件
kubectl create -f nginx -deploy.yaml - f nginx-svc.yaml
列出 kube-namespace 名称空间中拥有 k8s-app 标签名称的所有 Pod 对象: kubectl get pods -1 k8s-app -n kube-system
kubectl logs -f
为上面的命令添加“ J”选项,还能用于持续监控指定容器中的日志输出
复 制 master 主机上的 /etc/kubernetes/admin.conf 至相关用户主目录下 的 .kube/config 文件即可正常执行
打印环境变量
kubectl exec jupyterhub-7c9f5458dc-flt7k -n baaisys-oauth -- printenv