kubectl命令语法
kubectl [command] [TYPE] [NAME] [flags]
command:子命令,用于操作Kubernetes集群资源对象的命 令,例如create、delete、describe、get、apply等。
TYPE:资源对象的类型,区分大小写,能以单数、复数或者 简写形式表示。例如以下3种TYPE是等价的。
kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
NAME:资源对象的名称,区分大小写。如果不指定名称, 系统则将返回属于TYPE的全部对象的列表,例如$ kubectl get pods将返 回所有Pod的列表。
flags:kubectl子命令的可选参数,例如使用“-s”指定API Server的URL地址而不用默认值
资源对象的名称 | 缩写 |
---|---|
cluster | |
componentstatuses | cs |
configmaps | cm |
daemonsets | ds |
deployments | deploy |
endpoints | ep |
events | ev |
horizontalpodautoscalers | hpa |
ingresses | ing |
Jobs | |
limitranges | limits |
nodes | no |
namespaces | ns |
networkpolicies | |
statefulsets | |
persistentvolumeclaims | pvc |
persistentvolumes | pv |
pods | po |
podsecuritypolicies | psp |
podtemplate | |
replicasets | rs |
replicationcontrollers | rc |
resourcequotas | quota |
cronjob | |
secrets | |
serviceaccounts | |
services | svc |
storageclasses | sc |
thirdpartyresources |
kubectl常用操作
创建资源对象:
创建资源对象 根据YAML配置文件一次性创建Service和RC:
kubectl create -f my-service.yaml -f my-rc.yaml
根据 yaml 创建资源, apply 可以重复执行,create 不行
kubectl create -f pod.yaml
kubectl apply -f pod.yaml
查看资源对象:
[root@master ~]# kubectl get pods 查看所有 pod 列表
NAME READY STATUS RESTARTS AGE
nginx-6799fc88d8-hnjrq 1/1 Running 1 22h
kubectl get pod -n kube -n 后跟 namespace, 查看指定的命名空间中的pod
#查看Service列表 svc是service简写,也可以写全拼
[root@master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23h
nginx NodePort 10.111.153.17 <none> 80:31775/TCP 23h
#kubectl get pod,svc -o wide -o wide 查看详细信息
[root@master ~]# kubectl get pod,svc -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/nginx-6799fc88d8-hnjrq 1/1 Running 1 23h 10.244.2.3 node2 <none> <none>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23h <none>
service/nginx NodePort 10.111.153.17 <none> 80:31775/TCP 23h app=nginx
语法:kubectl get pod <pod-name> -o yaml
显示Pod更多信息
kubectl get pod <pod-name> -o wide ,列如:
[root@master ~]# kubectl get pod,rc -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/nginx-6799fc88d8-hnjrq 1/1 Running 1 23h 10.244.2.3 node2 <none> <none>
以yaml格式显示Pod的详细信息
[root@master ~]# kubectl get pod,svc -o yaml
apiVersion: v1
items:
- apiVersion: v1
kind: Pod
metadata:
creationTimestamp: "2021-08-26T05:50:56Z"
以自定义列名显示Pod的信息
[root@master ~]# kubectl get pod,svc -o=custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
NAME RSRC
nginx-6799fc88d8-hnjrq 1926
kubernetes 202
nginx 1266
基于文件的自定义列名输出
[root@master ~]# kubectl get pods,svc -o=custom-columns-file=template.txt
NAME RSRC
nginx-6799fc88d8-hnjrq 1926
kubernetes 202
nginx 1266
[root@master ~]# kubectl get pods nginx-6799fc88d8-hnjrq -o=custom-columns-file=template.txt
NAME RSRC
nginx-6799fc88d8-hnjrq 1926
template.txt文件的内容为
NAME RSRC
metadata.name metadata.resourceVersion
创建一个deployment类型的容器
[root@master ~]# kubectl create deployment deploy-web --image=xialuo:v0.1 --replicas=3
deployment.apps/deploy-web created
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
deploy-web-dbc599567-tpvh4 0/1 ContainerCreating 0 12s
deploy-web-dbc599567-xhp26 0/1 ContainerCreating 0 12s
deploy-web-dbc599567-z4gxf 0/1 ContainerCreating 0 12s
nginx-6799fc88d8-hnjrq 1/1 Running 1 23h
删除
[root@master ~]# kubectl delete deployment deploy-web
deployment.apps "deploy-web" deleted
实时监控拉取镜像的状态
[root@master ~]# kubectl get pods -w
NAME READY STATUS RESTARTS AGE
deploy-nginx-6b777fdcd5-8lrd4 0/1 ContainerCreating 0 63s
deploy-nginx-6b777fdcd5-bmk6q 0/1 ContainerCreating 0 63s
deploy-nginx-6b777fdcd5-mmtjk 0/1 ContainerCreating 0 63s
nginx-6799fc88d8-hnjrq 1/1 Running 1 23h
deploy-nginx-6b777fdcd5-bmk6q 0/1 ErrImagePull 0 67
创建service
[root@master ~]# kubectl expose deployment deploy-nginx --port=80 --protocol=TCP
service/deploy-nginx exposed
[root@master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
deploy-nginx ClusterIP 10.96.65.25 <none> 80/TCP 14s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23h
nginx NodePort 10.111.153.17 <none> 80:31775/TCP 23h