Kubernetes Kubectl 命令


Kubectl控制 Kubernetes 集群,它是 Kubernetes 的关键组件之一,设置完成后可在任何机器上的工作站上运行,它具有管理集群中节点的能力。

Kubectl命令用于交互和管理 Kubernetes 对象和集群,在本章中,我们将通过 kubectl 讨论在 Kubernetes 中使用的一些命令。

kubectl annotate: 更新资源上的注解。

$kubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ...
KEY_N = VAL_N [--resource-version = version]

例如,

kubectl annotate pods tomcat description = 'my frontend'

kubectl api-version: 打印集群上支持的API版本。

$ kubectl api-version;

kubectl apply: 具有通过文件或标准输入配置资源的能力。

$ kubectl apply –f <filename>

kubectl attach:这把东西附加到正在运行的容器上。

$ kubectl attach <pod> –c <container>
$ kubectl attach 123456-7890 -c tomcat-conatiner

kubectl autoscale: 用于自动扩展定义的pods,例如Deployment、replica set、Replication Controller。

$ kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min = MINPODS] --
max = MAXPODS [--cpu-percent = CPU] [flags]
$ kubectl autoscale deployment foo --min = 2 --max = 10

kubectl cluster-info: 显示集群信息。

$ kubectl cluster-info

kubectl cluster-info dump: 转储集群的相关信息,用于调试和诊断。

$ kubectl cluster-info dump
$ kubectl cluster-info dump --output-directory = /path/to/cluster-state

kubectl config: 修改kubeconfig文件。

$ kubectl config <SUBCOMMAD>
$ kubectl config –-kubeconfig <String of File name>

kubectl config current-context: 显示当前上下文。

$ kubectl config current-context
#deploys the current context

kubectl config delete-cluster: 从 kubeconfig 中删除指定的集群。

$ kubectl config delete-cluster <Cluster Name>

kubectl config delete-context: 从 kubeconfig 中删除指定的上下文。

$ kubectl config delete-context <Context Name>

kubectl config get-cluster: 显示 kubeconfig 中定义的集群。

$ kubectl config get-cluster
$ kubectl config get-cluster <Cluser Name>

kubectl config get-context: 描述一个或多个上下文。

$ kubectl config get-context <Context Name>

kubectl config set-cluster: 设置Kubernetes中的集群入口。

$ kubectl config set-cluster NAME [--server = server] [--certificateauthority =
path/to/certificate/authority] [--insecure-skip-tls-verify = true]

kubectl config set-context: 在 kubernetes 入口点设置上下文入口。

$ kubectl config set-context NAME [--cluster = cluster_nickname] [--
user = user_nickname] [--namespace = namespace]
$ kubectl config set-context prod –user = vipin-mishra

kubectl config set-credentials: 在 kubeconfig 中设置用户入口。

$ kubectl config set-credentials cluster-admin --username = vipin --
password = uXFGweU9l35qcif

kubectl config set: 在 kubeconfig 文件中设置单独的值。

$ kubectl config set PROPERTY_NAME PROPERTY_VALUE

kubectl config unset: 它在 kubectl 中取消设置特定组件。

$ kubectl config unset PROPERTY_NAME PROPERTY_VALUE

kubectl config use-context: 在 kubectl 文件中设置当前上下文。

$ kubectl config use-context <Context Name>

kubectl config view

$ kubectl config view
$ kubectl config view –o jsonpath='{.users[?(@.name == "e2e")].user.password}'

kubectl cp: 从容器复制文件和目录。

$ kubectl cp <Files from source> <Files to Destinatiion>
$ kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container>

kubectl create: 通过文件名或标准输入创建资源,接受 JSON 或 YAML 格式。

$ kubectl create –f <File Name>
$ cat <file name> | kubectl create –f -

以同样的方式,可以如上所示使用create命令和kubectl一起创建多个事物:

  • deployment

  • namespace

  • quota

  • secret docker-registry

  • secret

  • secret generic

  • secret tls

  • serviceaccount

  • service clusterip

  • service loadbalancer

  • service nodeport


kubectl delete: 按文件名、标准输入、资源和名称删除资源。

$ kubectl delete –f ([-f FILENAME] | TYPE [(NAME | -l label | --all)])

kubectl describe: 描述 Kubernetes 中的任何特定资源。显示资源或一组资源的详细信息。

$ kubectl describe <type> <type name>
$ kubectl describe pod tomcat

kubectl drain: 用于为维护目的排空节点,它准备节点进行维护,这会将节点标记为不可用,以便不应为其分配将创建的新容器。

$ kubectl drain tomcat –force

kubectl edit: 用于结束服务器上的资源,这允许直接编辑可以通过命令行工具接收的资源。

$ kubectl edit <Resource/Name | File Name)
$ kubectl edit rc/tomcat

kubectl exec: 这有助于在容器中执行命令。

$ kubectl exec POD <-c CONTAINER > -- COMMAND < args...>
$ kubectl exec tomcat 123-5-456 date

kubectl expose: 用于将 pod、replication controller、service 等 Kubernetes 对象暴露为新的 Kubernetes 服务。这有能力通过正在运行的容器或从yamlfile.

$ kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol = TCP|UDP]
[--target-port = number-or-name] [--name = name] [--external-ip = external-ip-ofservice]
[--type = type]
$ kubectl expose rc tomcat –-port=80 –target-port = 30000
$ kubectl expose –f tomcat.yaml –port = 80 –target-port =

kubectl get: 该命令能够获取集群上关于 Kubernetes 资源的数据。

$ kubectl get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columnsfile=...|
go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...]
(TYPE [NAME | -l label] | TYPE/NAME ...) [flags]

例如,

$ kubectl get pod <pod name>
$ kubectl get service <Service name>

kubectl logs: 用于获取pod中容器的日志,打印日志可以定义 pod 中的容器名称,如果 POD 只有一个容器,则无需定义其名称。

$ kubectl logs [-f] [-p] POD [-c CONTAINER]
例子
$ kubectl logs tomcat.
$ kubectl logs –p –c tomcat.8

kubectl port-forward: 它们用于将一个或多个本地端口转发到 Pod。

$ kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT
[...[LOCAL_PORT_N:]REMOTE_PORT_N]
$ kubectl port-forward tomcat 3000 4000
$ kubectl port-forward tomcat 3000:5000

kubectl replace: 能够通过文件名替换资源或者stdin.

$ kubectl replace -f FILENAME
$ kubectl replace –f tomcat.yml
$ cat tomcat.yml | kubectl replace –f -

kubectl rolling-update: 在复制控制器上执行滚动更新,通过一次更新一个 POD,用新的复制控制器替换指定的复制控制器。

$ kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --
image = NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC)
$ kubectl rolling-update frontend-v1 –f freontend-v2.yaml

kubectl rollout: 能够管理部署的推出。

$ Kubectl rollout <Sub Command>
$ kubectl rollout undo deployment/tomcat

除了上述之外,还可以使用 rollout 执行多项任务,例如:

  • rollout history

  • rollout pause

  • rollout resume

  • rollout status

  • rollout undo

kubectl run: run 命令具有在 Kubernetes 集群上运行镜像的能力。

$ kubectl run NAME --image = image [--env = "key = value"] [--port = port] [--
replicas = replicas] [--dry-run = bool] [--overrides = inline-json] [--command] --
[COMMAND] [args...]
$ kubectl run tomcat --image = tomcat:7.0
$ kubectl run tomcat –-image = tomcat:7.0 –port = 5000

kubectl scale: 它将扩展 Kubernetes Deployments、ReplicaSet、Replication Controller 或作业的大小。

$ kubectl scale [--resource-version = version] [--current-replicas = count] --
replicas = COUNT (-f FILENAME | TYPE NAME )
$ kubectl scale –-replica = 3 rs/tomcat
$ kubectl scale –replica = 3 tomcat.yaml

kubectl set image: 更新一个pod模板的镜像。

$ kubectl set image (-f FILENAME | TYPE NAME)
CONTAINER_NAME_1 = CONTAINER_IMAGE_1 ... CONTAINER_NAME_N = CONTAINER_IMAGE_N
$ kubectl set image deployment/tomcat busybox = busybox ngnix = ngnix:1.9.1
$ kubectl set image deployments, rc tomcat = tomcat6.0 --all

kubectl set resources: 用于设置资源的内容,它使用 pod 模板更新对象的资源/限制。

$ kubectl set resources (-f FILENAME | TYPE NAME) ([--limits = LIMITS & --
requests = REQUESTS]
$ kubectl set resources deployment tomcat -c = tomcat --
limits = cpu = 200m,memory = 512Mi

kubectl top node: 显示 CPU/Memory/Storage 使用情况,top 命令允许你查看节点的资源消耗。

$ kubectl top node [node Name]

同样的命令也可以用于 pod。