kubectl 命令用法
用法概述
语法:$ kubectl [command] [TYPE] [NAME] [flags]说明:command:子命令,用于操作集群资源对象,如 create/delete/describe/get/apply 等。TYPE:资源对象的类型NAME:资源对象的名称。如果不指定名称将返回属于TYPE的全部对象的列表,例如 $ kubectl get pods 返回所有Pod列表。flags:kubectl子命令的可选参数,例如使用“-s”指定 API Server 的URL地址而不用默认值
输出格式
kubectl命令输出的格式通过-o参数指定。
格式:
kubectl [command] [TYPE] [NAME] -o=
输出格式选项:
| 输出格式 |
说明 |
| -o=custom-columns= |
根据自定义列明进行输出,以逗号分隔 |
| -o=custom-columns-file= |
从文件中获取自定义列名进行输出 |
| -o=json |
以JSON格式显示结果 |
-o=jsonpath=
| 输出jsonpath表达式定义的字段信息 |
-o=jsonpath-file= |
输出jsonpath表达式定义的字段信息,来源于文件 |
-o=name |
仅输出资源对象的名称 |
-o=wide |
输出额外信息 |
-o=yaml |
以YAML格式显示结果 |
常用输出示例: #显示pod更多信息 kubectl get pod -o wide
以yaml格式显示详细信息 kubectl get pod -o yaml以自定义列表名显示pod信息 kubectl get pod -o=custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
资源对象$ kubectl api-resource
NAME SHORTNAMES APIGROUP NAMESPACED KIND
bindings true Binding
componentstatuses cs false ComponentStatus
configmaps cm true ConfigMap
endpoints ep true Endpoints
events ev true Event
limitranges limits true LimitRange
namespaces ns false Namespace
nodes no false Node
persistentvolumeclaims pvc true PersistentVolumeClaim
persistentvolumes pv false PersistentVolume
pods po true Pod
podtemplates true PodTemplate
replicationcontrollers rc true ReplicationController
resourcequotas quota true ResourceQuota
secrets true Secret
serviceaccounts sa true ServiceAccount
services svc true Service
mutatingwebhookconfigurations admissionregistration.k8s.io false MutatingWebhookConfiguration
validatingwebhookconfigurations admissionregistration.k8s.io false ValidatingWebhookConfiguration
customresourcedefinitions crd,crds apiextensions.k8s.io false CustomResourceDefinition
apiservices apiregistration.k8s.io false APIService
controllerrevisions apps true ControllerRevision
daemonsets ds apps true DaemonSet
deployments deploy apps true Deployment
replicasets rs apps true ReplicaSet
statefulsets sts apps true StatefulSet
tokenreviews authentication.k8s.io false TokenReview
localsubjectaccessreviews authorization.k8s.io true LocalSubjectAccessReview
selfsubjectaccessreviews authorization.k8s.io false SelfSubjectAccessReview
selfsubjectrulesreviews authorization.k8s.io false SelfSubjectRulesReview
subjectaccessreviews authorization.k8s.io false SubjectAccessReview
horizontalpodautoscalers hpa autoscaling true HorizontalPodAutoscaler
cronjobs cj batch true CronJob
jobs batch true Job
certificatesigningrequests csr certificates.k8s.io false CertificateSigningRequest
leases coordination.k8s.io true Lease
events ev events.k8s.io true Event
ingresses ing extensions true Ingress
nodes metrics.k8s.io false NodeMetrics
pods metrics.k8s.io true PodMetrics
ingresses ing networking.k8s.io true Ingress
networkpolicies netpol networking.k8s.io true NetworkPolicy
runtimeclasses node.k8s.io false RuntimeClass
poddisruptionbudgets pdb policy true PodDisruptionBudget
podsecuritypolicies psp policy false PodSecurityPolicy
clusterrolebindings rbac.authorization.k8s.io false ClusterRoleBinding
clusterroles rbac.authorization.k8s.io false ClusterRole
rolebindings rbac.authorization.k8s.io true RoleBinding
roles rbac.authorization.k8s.io true Role
priorityclasses pc scheduling.k8s.io false PriorityClass
csidrivers storage.k8s.io false CSIDriver
csinodes storage.k8s.io false CSINode
storageclasses sc storage.k8s.io false StorageClass
volumeattachments storage.k8s.io false VolumeAttachment
kubectl 操作示例
创建根据配置文件创建资源对象 kubectl create -f my-svc.yaml -f my-rc.yaml根据目录下所有 .yaml、.yml、.json 文件创建资源对象 kubectl create -f 创建hpa资源对象 kubectl autoscale deployment —cpu-percent=90 —min=1 —max=10等效于:
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: php-apache
namespace: default
spec:
maxReplicas: 10
minReplicas: 1
scaleTargetRef:
kind: Deployment
name: php-apache
targetCPUUtilizationPercentage: 90
查看查看资源对象 #查看所有资源对象 kubectl api-resources
查看api资源类型 kubectl api-versions查看pod/svc列表 kubectl get pod,svc以yaml文本形式查看svc信息 kubect get svc -o yaml显示某个Node的详细信息 kubectl describe node 查看容器日志 #查看容器日志 kubectl logs
指定行数动态查看 kubectl logs —tail=100 -f 跟踪查看容器的日志,相当于tail -f kubectl logs -f -c 若容器 crashed ,如下命令查看 kubectl logs —previous ${POD_NAME} ${CONTAINER_NAME}查看Kubernetes服务日志 #使用systemd系统管理Kubernetes服务,那么systemd的journal系统会接管服务程序的输出日志。
systemctl status kube-controller-manager -l or journalctl -u kube-controller-manager journalctl -u kubelet -n100 -f
读取已终止容器之前的状态信息 kubectl get pod -o go-template=’{{range.status.containerStatuses}}{{“Container Name:”}}{{.name}}{{“\r\nLastState: “}}{{.lastState}}{{end}}’
删除删除资源对象 #基于pod.yaml定义的名称删除Pod kubectl delete -f pod.yaml
删除所有包含某个Label的Pod和Service kubectl delete pods,services -l name=删除所有Pod kubectl delete pods —all or kubectl delete pods -A
变更创建或更新资源对象 #如果目标资源对象不存在,则进行创建;否则进行更新 kubectl apply -f app.yaml
更新容器副本数 kubectl scale deploy —replicas=2
在线编辑运行中的资源对象 #命令编译运行中的deploy kubectl edit deploy
执行容器的命令 #执行Pod的date命令,默认使用Pod中的第1个容器执行 kubectl exec date
指定Pod中的某个容器执行date命令 kubectl exec -c date通过bash获得Pod中某个容器的TTY,相当于登录容器 kubectl exec -it -c /bin/bash
kubeclt 生成 yamla)用run命令生成 kubectl run —image=nginx my-deploy -o yaml —dry-run > my-deploy.yaml
b)用get命令导出 kubectl get statefulset/foo -o=yaml —export > new.yaml
c)Pod亲和性下面字段的拼写忘记了 kubectl explain pod.spec.affinity.podAffinity
|