赞
踩
缩写:
- # kubectl get option 缩写
- -namespace -n
- --all-namespaces -A
- --filename=[] -f
- --kustomize='' -k
- --label-columns -L
- --output='' -o
- --recursive -R
- --selector -l
- --watch -w
-
- # kubectl create option 缩写
- 和get基本一致
-
- # kubectl delete option 缩写
- 和get基本一致
-
- # kubectl logs option 缩写
- --container -c
- --follow -f
- --previous -p
- --selector -l
-
-
- # 对象缩写
- 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
- daemonsets ds extensions true DaemonSet
- deployments deploy extensions true Deployment
- ingresses ing extensions true Ingress
- networkpolicies netpol extensions true NetworkPolicy
- podsecuritypolicies psp extensions false PodSecurityPolicy
- replicasets rs extensions true ReplicaSet
- 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 get 操作:
- # 显示当前进程所有pods
- kubectl get pods (default namespace 下所有pod)
- kubectl get pods -n namespace podname (指定namespace下的pod)
- kubectl get pods -A (所有namespace下的所有pod)
-
- # 显示pods详细信息
- kubectl get pods -o [format] # 详细显示,format可以是json|yaml|wide|name|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...
-
- # 显示RC的信息
- kubectl get replicationcontroller rcname
-
- # 显示Deployment信息
- kubectl get deployments.v1.apps -o [format]
-
- # 查询单个pod信息
- kubectl get pod podname -o [format]
-
- # 用yaml文件查询
- kubectl get -f pod.yaml -o [format]
-
- # 使用目录下的yaml文件查询,可以有多个yaml文件
- kubectl get -k dir/ # -k 不能和 -f -R同用
-
- # Return only the phase value of the specified pod.
- kubectl get -o template pod/web-pod-13je7 --template={{.status.phase}}
-
- # 在自定义列中列出资源信息
- kubectl get pod podname -o custom-columns=CONTAINER:.spec.containers[0].name,IMAGE:.spec.containers[0].image
-
- # 一起查询所有 RC和Service
- kubectl get rc,services
-
- # 通过类型和名称列出一个或多个资源
- kubectl get rc/web service/frontend pods/web-pod-13je7
kubectl create 操作:
- # 使用当前目录的pod.json创建
- kubectl create -f ./pod.json
-
- # 使用文件输入流,定向到创建命令
- cat pod.json | kubectl create -f -
-
- # 先以json格式编辑yaml,然后使用编辑后的yaml创建
- kubectl create -f docker-registry.yaml --edit -o json
kubectl delete 操作:
- # 使用文件删除
- kubectl delete -f ./pod.json
-
- # 使用目录下的yaml删除
- kubectl delete -k dir
-
- # 使用文件输入流,重定向到删除命令
- cat pod.json | kubectl delete -f -
-
- # 使用同名的 pod(baz)、service(foo),进行删除
- kubectl delete pod,service baz foo
-
- # 使用label删除pod和service
- kubectl delete pods,services -l name=myLabel
-
- # 最小延迟的删除
- kubectl delete pod foo --now
-
- # 强制删除死节点上的pod
- kubectl delete pod foo --grace-period=0 --force
-
- # 删除所有pod
- kubectl delete pods --all
kubectl logs 操作:
- # 用于输出Pod中的容器或者特定资源的日志信息,如果Pod中只有一个容器,那就可以忽略容器名称。
- # logs == log
-
- # 显示名称为nginx的Pod中只有一个容器的日志
- kubectl logs nginx
-
- # 显示名称为nginxPod中的多个容器的日志
- kubectl logs nginx --all-containers=true
-
- # 显示label app=nginx,的所有容器日志
- kubectl logs -lapp=nginx --all-containers=true
-
- # 打开之前停掉的名称为web-1的pod中的名称为ruby的容器的日志
- kubectl logs -p -c ruby web-1
-
- # 打开名称为web-1的pod中的名称为ruby的容器的日志流
- kubectl logs -f -c ruby web-1
-
- # Begin streaming the logs from all containers in pods defined by label app=nginx
- kubectl logs -f -lapp=nginx --all-containers=true
-
- # 显示名称为nginx的pod中的,最近20行日志
- kubectl logs --tail=20 nginx
-
- # 显示名称为nginx的pod中,最近一小时的全部日志
- kubectl logs --since=1h nginx
-
- # 显示名称为hello的job中的第一个容器的日志
- kubectl logs job/hello
-
- # 显示名称为nginx的deployment中的容器叫做nginx-1的日志
- kubectl logs deployment/nginx -c nginx-1
kubectl describe 操作:
- # 显示指定资源的详细信息(命名空间是default)
-
- # 描述一个node信息
- kubectl describe nodes kubernetes-node-emt8.c.myproject.internal
-
- # 描述名称为nginx的pod的信息
- kubectl describe pods/nginx
-
- # 通过pod.json描述pod信息
- kubectl describe -f pod.json
-
- # 描述所有pod信息
- kubectl describe pods
-
- # 通过label描述
- kubectl describe po -l name=myLabel # po是缩写,参考上面的缩写部分
-
- # Describe all pods managed by the 'frontend' replication controller (rc-created pods
- # get the name of the rc as a prefix in the pod the name).
- kubectl describe pods frontend
kubectl scale 操作:
- # Scale a replicaset named 'foo' to 3.
- kubectl scale --replicas=3 rs/foo
-
- # Scale a resource identified by type and name specified in "foo.yaml" to 3.
- kubectl scale --replicas=3 -f foo.yaml
-
- # If the deployment named mysql's current size is 2, scale mysql to 3.
- kubectl scale --current-replicas=2 --replicas=3 deployment/mysql
-
- # Scale multiple replication controllers.
- kubectl scale --replicas=5 rc/foo rc/bar rc/baz
-
- # Scale statefulset named 'web' to 3.
- kubectl scale --replicas=3 statefulset/web
查看namespace列表:
kubectl get namespaces
查看指定Pod信息:
kubectl get pods [-n namespace] podName
查看所有Pod:
kubectl get pods --all-namespaces
查看Pod启动状态:
kubectl describe pod [-n namespace] podName
查看Pod日志信息:
kubectl logs [-n namespace] api-gw
创建对象:
kubectl create -f xxx.yaml
删除对象:
kubectl delete xxx.yaml
查看Pod启动yaml
kubectl get pod [-n namespace] podName -o yaml
打标签:
kubectl label nodes nodeName slave=153
从容器复制文件到本地目录
- kubectl cp podName:workDir/path1/path2/file.txt /home/emg/target_file.txt
-
- # 需要知道exec进入容器之后的工作目录是什么,如果是文件,需要指向一个本地的文件,这里使用workDir表示进入容器后的pwd
nginx.yaml:
- apiVersion: v1
- kind: Pod # 对象类型为Pod,类型为k8s自定义,区分大小写
- metadata: # 元数据描述
- name: nginx # 对象名称,自定义
- labels: # 对象标签,用于其它类型对象绑定时使用,例如下面的Service对象
- app: nginx
- spec: # Pod对象中具体哪些内容详情
- containers: # 容器部分
- - name: nginx # 容器名称
- image: nginx # 启动容器用的镜像的名称
- imagePullPolicy: IfNotPresent # 镜像拉取策略:Never、Always(默认)、IfNotPresent(没有才拉取)
- ports: # 容器端口
- - containerPort: 80
- restartPolicy: Always # 重启策略,详见docker restart策略
- ---
- apiVersion: v1
- kind: Service # 对象类型为Service
- metadata: # 元数据描述
- name: nginx-service
- spec:
- type: NodePort # 一种端口映射策略
- sessionAffinity: ClientIP # session维持
- selector: # 选择器,对应label
- app: nginx
- ports:
- - port: 80 # 对应容器的端口
- nodePort: 30001 # 此node对应的外部访问port The range of valid ports is 30000-32767
nodejsApp.yaml 普通Pod部署:
- apiVersion: v1
- kind: Pod
- metadata:
- name: api
- namespace: kube-public # 指定namespace,如果没有,需要提前创建
- labels:
- app: api
- spec:
- containers:
- - name: api
- image: registry.local/projectGroup/api:v1 # 此处是私有镜像库,需要进行配置,下面有说明
- imagePullPolicy: IfNotPresent
- volumeMounts: # 需要挂载配置文件
- - name: config-path # 对应下面的volumes的name
- mountPath: /home/ # 容器的路径
- readOnly: true # 是否只读
- ports:
- - containerPort: 3000
- volumes: # 挂载目录集合
- - name: config-path # 名称,用于被挂载
- hostPath: # 使用的 hostPath,还有 empDir等配置
- path: /data/config/api/ # 宿主机目录(node机器的目录)
- nodeSelector:
- slave: "184" # 指定调度到某台机器,slave=184是通过label命令给node机器打过label的
- ---
- apiVersion: v1
- kind: Service
- metadata:
- name: api-service
- namespace: kube-public
- spec:
- type: NodePort
- selector:
- app: api
- ports:
- - port: 3000
- nodePort: 30003 # 默认使用
nodeApp.yaml 多副本集部署:
- apiVersion: apps/v1 # Deployment对象,需要这个版本
- kind: Deployment
- metadata:
- name: api-gw
- namespace: kube-public
- labels:
- app: api-Gateway
- spec:
- replicas: 2
- selector:
- matchLabels:
- app: apigw # 表明Deployment需要如何寻找需要管理的Pod
- template:
- metadata:
- labels:
- app: apigw # 要被管理的资源
- spec:
- containers:
- - name: api-gw
- image: registry.local/project/api-gw:v1 # 私有镜像库
- imagePullPolicy: IfNotPresent
- volumeMounts:
- - name: config-path
- mountPath: /home/
- readOnly: true
- ports:
- - containerPort: 3000 # 镜像启动的容器内部进程,端口号
- volumes:
- - name: config-path
- hostPath:
- path: /data/config/api-gw/
- ---
- apiVersion: v1
- kind: Service
- metadata:
- name: api-service
- namespace: kube-public
- spec:
- type: NodePort
- selector:
- app: apigw # service需要绑定selector,而不是绑定deployment
- ports:
- - port: 3000 # 对应容器内部进程端口号
- nodePort: 30003
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。