- Kubernetes 教程
- Kubernetes - 首页
- Kubernetes - 概述
- Kubernetes - 架构
- Kubernetes - 设置
- Kubernetes - 镜像
- Kubernetes - 作业 (Jobs)
- Kubernetes - 标签与选择器
- Kubernetes - 命名空间
- Kubernetes - 节点
- Kubernetes - 服务
- Kubernetes - Pod
- Kubernetes - 复制控制器
- Kubernetes - 副本集
- Kubernetes - 部署
- Kubernetes - 卷
- Kubernetes - 密钥
- Kubernetes - 网络策略
- 高级 Kubernetes
- Kubernetes - API
- Kubernetes - Kubectl
- Kubernetes - Kubectl 命令
- Kubernetes - 创建应用
- Kubernetes - 应用部署
- Kubernetes - 自动伸缩
- Kubernetes - 仪表盘设置
- Kubernetes - 监控
- Kubernetes 有用资源
- Kubernetes - 快速指南
- Kubernetes - 有用资源
- Kubernetes - 讨论
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-versions − 打印集群支持的 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 − 用于自动伸缩定义的 Pod,例如 Deployment、ReplicaSet、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-clusters − 显示 kubeconfig 中定义的集群。
$ kubectl config get-cluster $ kubectl config get-cluster <Cluser Name>
kubectl config get-contexts − 描述一个或多个上下文。
$ 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 (Docker 注册表密钥)
- secret (密钥)
- secret generic (通用密钥)
- secret tls (TLS 密钥)
- serviceaccount (服务账号)
- service clusterip (ClusterIP 服务)
- service loadbalancer (负载均衡器服务)
- service nodeport (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) Ex. $ kubectl edit rc/tomcat
kubectl exec − 这有助于在容器中执行命令。
$ kubectl exec POD <-c CONTAINER > -- COMMAND < args...> $ kubectl exec tomcat 123-5-456 date
kubectl expose − 用于将 Kubernetes 对象(例如 Pod、复制控制器和服务)公开为新的 Kubernetes 服务。它能够通过运行的容器或从yaml文件公开它。
$ 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] Example $ 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 − 它能够管理部署的 rollout。
$ Kubectl rollout <Sub Command> $ kubectl rollout undo deployment/tomcat
除此之外,我们可以使用 rollout 执行多个任务,例如:
- rollout history (回滚历史)
- rollout pause (暂停 rollout)
- rollout resume (恢复 rollout)
- rollout status (rollout 状态)
- rollout undo (撤销 rollout)
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 部署、副本集、复制控制器或作业的大小。
$ 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/内存/存储使用情况。top 命令允许查看节点的资源消耗。
$ kubectl top node [node Name]
此命令也可以与 Pod 一起使用。