kubernetes-常用命令集

Posted givenchy_yzl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kubernetes-常用命令集相关的知识,希望对你有一定的参考价值。

k8s常用指令集(kubectl kubeadm)

官方指令文档
官方常用指令

一、基础命令:create、delete、get、run、expose、set、explain、edit

准备文件

[root@m01 ~]# vim wordpress.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: wordpress
spec:
  containers:
    - name: nginx
      image: nginx
    - name: php
      image: alvinos/php:v2-fpm-mysql
    - name: mysql
      image: mysql:5.7
      env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
[root@m01 ~]# vim test.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
    - name: nginx
      image: nginx

create命令

从文件或标准输入创建资源。
接受 JSON 和 YAML 格式。
用法:kubectl create -f FILENAME

kubectl create -f wordpress.yaml
kubectl create -f test.yaml

delete命令

按文件名、标准输入、资源和名称或资源和标签选择器删除资源。
接受 JSON 和 YAML 格式。只能指定一种类型的参数:文件名、资源和名称或资源和标签选择器。

用法

kubectl delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | --all)])

选项

-f 根据文件删除资源
-k 根据目录删除资源
type 根据类型删除资源
-l 根据标签删除资源
–all 删除所有资源
–force 强制删除

注意:强制删除 Pod 不会等待确认 Pod 的进程已终止,这可以让这些进程继续运行,直到节点检测到删除并完成正常删除。如果您的进程使用共享存储或与远程 API 通信并依赖 pod 的名称来标识自己,则强制删除这些 pod 可能会导致多个进程使用相同的标识在不同的机器上运行,这可能会导致数据损坏或不一致。仅当您确定 pod 已终止,或者您的应用程序可以容忍同一 pod 的多个副本同时运行时,才强制删除 pod。此外,如果您强制删除 pod,调度程序可能会在节点释放这些资源之前将新 pod 放置在这些节点上,并导致这些 pod 立即被逐出。

请注意,delete 命令不执行资源版本检查,因此如果有人在您提交删除时提交了对资源的更新,则他们的更新将与资源的其余部分一起丢失。

使用 pod.json 中指定的类型和名称删除 pod。
kubectl delete -f ./pod.json

从包含 kustomization.yaml 的目录中删除资源 - 例如 dir/kustomization.yaml。
kubectl delete -k dir

根据传递到 stdin 的 JSON 中的类型和名称删除 pod。
cat pod.json | kubectl delete -f -

删除具有相同名称“baz”和“foo”的 pod 和服务
kubectl delete pod,service baz foo

删除标签名称为 myLabel 的 Pod 和服务。
kubectl delete pods,services -l name=myLabel

以最小延迟删除 Pod
kubectl delete pod foo --now

强制删除死节点上的 pod
kubectl delete pod foo --force

删除所有 Pod
kubectl delete pods --all

get命令

显示一项或多项资源,打印有关指定资源的最重要信息的表。

用法
kubectl get [选项] [资源名称]

示例:

# 查看所有的资源信息
kubectl get all

# 查看pod列表
kubectl get pod

# 显示pod节点的标签信息
kubectl get pod --show-labels

# 根据指定标签匹配到具体的pod
kubectl get pods -l app=example

# 查看node节点列表
kubectl get node 

# 显示node节点的标签信息
kubectl get node --show-labels

# 查看pod详细信息,也就是可以查看pod具体运行在哪个节点上(ip地址信息)
kubectl get pod -o wide

# 查看服务的详细信息,显示了服务名称,类型,集群ip,端口,时间等信息
kubectl get svc

[root@master ~]# kubectl get svc
NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
go-service      NodePort    10.10.10.247   <none>        8089:33702/TCP   29m
java-service    NodePort    10.10.10.248   <none>        8082:32823/TCP   5h17m
kubernetes      ClusterIP   10.10.10.1     <none>        443/TCP          5d16h
nginx-service   NodePort    10.10.10.146   <none>        88:34823/TCP     2d19h
# 查看命名空间
kubectl get ns

# 查看所有命名空间下的pod
kubectl get pod --all-namespaces

# 查看所有pod所属的命名空间并且查看都在哪些节点上运行
kubectl get pod --all-namespaces  -o wide

# 查看目前所有的replica set,显示了所有的pod的副本数,以及他们的可用数量以及状态等信息
kubectl get rs

[root@master ~]# kubectl get rs
NAME                          DESIRED   CURRENT   READY   AGE
go-deployment-58c76f7d5c      1         1         1       32m
java-deployment-76889f56c5    1         1         1       5h21m
nginx-deployment-58d6d6ccb8   3         3         3       2d19h

# 查看目前所有的deployment
kubectl get deployment

[root@master ~]# kubectl get deployment
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
go-deployment      1/1     1            1           34m
java-deployment    1/1     1            1           5h23m
nginx-deployment   3/3     3            3           2d19h

# 查看已经部署了的所有应用,可以看到容器,以及容器所用的镜像,标签等信息
 kubectl get deploy -o wide
[root@master bin]# kubectl get deploy -o wide     
NAME    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES       SELECTOR
nginx   3/3     3            3           16m   nginx        nginx:1.10   app=example

run命令

在集群中创建并运行一个或多个容器镜像

#启动一个 nginx pod。
kubectl run nginx --image=nginx

#启动一个hazelcast pod,让容器暴露5701端口。
kubectl run hazelcast --image=hazelcast/hazelcast --port=5701

#启动一个 hazelcast pod 并在容器中设置环境变量“DNS_DOMAIN=cluster”和“POD_NAMESPACE=default”。
kubectl run hazelcast --image=hazelcast/hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"

#启动一个 hazelcast pod 并在容器中设置标签“app=hazelcast”和“env=prod”。
kubectl run hazelcast --image=hazelcast/hazelcast --labels="app=hazelcast,env=prod"

#试运行。打印相应的 API 对象而不创建它们。
kubectl run nginx --image=nginx --dry-run=client

#启动一个 nginx pod,但使用从 JSON 解析的部分值集重载规范。
kubectl run nginx --image=nginx --overrides='{ "apiVersion": "v1", "spec": { ... } }'

#启动一个busybox pod并保持在前台,如果它退出不要重启它。
kubectl run -i -t busybox --image=busybox --restart=Never

#使用默认命令启动 nginx pod,但对该命令使用自定义参数 (arg1 .. argN)。
kubectl run nginx --image=nginx -- <arg1> <arg2> ... <argN>

#使用不同的命令和自定义参数启动 nginx pod。
kubectl run nginx --image=nginx --command -- <cmd> <arg1> ... <argN>

expose命令

创建一个service服务,并且暴露端口让外部可以访问

#为复制的 nginx 创建一个服务,该服务在端口 80 上提供服务并连接到端口 8000 上的容器。
kubectl expose rc nginx --port=80 --target-port=8000

#为由“nginx-controller.yaml”中指定的类型和名称标识的复制控制器创建服务,该服务在端口 80 上提供服务并连接到端口 8000 上的容器。
kubectl expose -f nginx-controller.yaml --port=80 --target-port=8000

#为 pod valid-pod 创建一个服务,它在端口 444 上服务,名称为“frontend”
kubectl expose pod valid-pod --port=444 --name=frontend

#基于上述服务创建第二个服务,将容器端口8443暴露为名称为“nginx-https”的443端口
kubectl expose service nginx --port=443 --target-port=8443 --name=nginx-https

#为端口 4100 上的复制流应用程序创建一个服务来平衡 UDP 流量并命名为“video-stream”。
kubectl expose rc streamer --port=4100 --protocol=UDP --name=video-stream

#使用副本集为复制的 nginx 创建服务,该服务在端口 80 上提供服务并连接到端口 8000 上的容器。
kubectl expose rs nginx --port=80 --target-port=8000

#为 nginx 部署创建一个服务,该服务在端口 80 上提供服务并连接到端口 8000 上的容器。
kubectl expose deployment nginx --port=80 --target-port=8000

set命令

配置应用的一些特定资源,也可以修改应用已有的资源

# 使用新的环境变量更新部署“注册表”
kubectl set env deployment/registry STORAGE_DIR=/local

#列出在部署“sample-build”上定义的环境变量
kubectl set env deployment/sample-build --list

#列出所有 pod 上定义的环境变量
kubectl set env pods --all --list

#在 YAML 中输出修改后的部署,并且不会更改服务器上的对象
kubectl set env deployment/sample-build STORAGE_DIR=/data -o yaml

#将项目中所有复制控制器中的所有容器更新为 ENV=prod
kubectl set env rc --all ENV=prod

#从秘密导入环境
kubectl set env --from=secret/mysecret deployment/myapp

#从带有前缀的配置映射导入环境
kubectl set env --from=configmap/myconfigmap --prefix=MYSQL_ deployment/myapp

#从配置映射导入特定键
kubectl set env --keys=my-example-key --from=configmap/myconfigmap deployment/myapp

#从所有部署配置中的容器“c1”中删除环境变量 ENV
kubectl set env deployments --all --containers="c1" ENV-

#从磁盘上的部署定义中删除环境变量 ENV 并 # 更新服务器上的部署配置
kubectl set env -f deploy.json ENV-

#将一些本地 shell 环境设置为服务器上的部署配置
env | grep RAILS_ | kubectl set env -e - deployment/registry

#用于设置资源的一些范围限制
kubectl set resources
#可用资源对象包括(支持大小写):replicationcontroller、deployment、daemonset、job、replicaset。

explain命令

列出支持资源的字段

# 获取资源及其字段的文档
kubectl explain pods

#获取资源特定字段的文档
kubectl explain pods.spec.containers

edit命令

从默认编辑器编辑资源。编辑命令允许您直接编辑可以通过命令行工具检索的任何 API 资源
它将打开由您的 KUBE_EDITOR 或 EDITOR 环境变量定义的编辑器,或者回退到 Linux 的“vi”或 Windows 的“记事本”。您可以编辑多个对象,但一次只应用一个更改。该命令接受文件名以及命令行参数,尽管您指向的文件必须是以前保存的资源版本。

使用用于获取资源的 API 版本完成编辑。要使用特定 API 版本进行编辑,请完全限定资源、版本和组。

#编辑名为“docker-registry”的服务:
kubectl edit svc/docker-registry

#使用替代编辑器
KUBE_EDITOR="nano" kubectl edit svc/docker-registry

#使用 v1 API 格式在 JSON 中编辑作业“myjob”:
kubectl edit job.v1.batch/myjob -o json

#在 YAML 中编辑部署“mydeployment”并将修改后的配置保存在其注释中:
kubectl edit deployment/mydeployment -o yaml --save-config

# 编辑Deployment nginx的一些信息
kubectl edit deployment nginx

# 编辑service类型的nginx的一些信息
kubectl edit service/nginx

二、设置命令:label、annotate、completion

label命令

用于更新(增加、修改或删除)资源上的 label(标签)

标签键和值必须以字母或数字开头,并且可以包含字母、数字、连字符、点和下划线,每个最多 63 个字符。

或者,
密钥可以以 DNS 子域前缀和单个“/”开头,例如:example.com/my-app

如果 --overwrite 为 true,则可以覆盖现有标签,否则尝试覆盖标签将导致错误。
如果指定了 --resource-version,则更新将使用此资源版本,否则将使用现有资源版本。

使用标签 'unhealthy' 和值 'true' 更新 pod 'foo'。
kubectl label pods foo unhealthy=true

使用标签 'status' 和值 'unhealthy' 更新 pod 'foo',覆盖任何现有值。
kubectl label --overwrite pods foo status=unhealthy

更新命名空间中的所有 pod
kubectl label pods --all status=unhealthy

更新由“pod.json”中的类型和名称标识的 pod
kubectl label -f pod.json status=unhealthy

仅当资源与版本 1 相同时才更新 pod 'foo'。
kubectl label pods foo status=unhealthy --resource-version=1

通过删除名为 'bar' 的标签(如果存在)来更新 pod 'foo'# 不需要 --overwrite 标志。
kubectl label pods foo bar-

annotate(注释)命令

更新一个或多个资源的Annotations信息。也就是注解信息,可以方便的查看做了哪些操作。

Annotations由key/value组成。
Annotations的目的是存储辅助数据,特别是通过工具和系统扩展操作的数据,更多介绍在这里
如果–overwrite为true,现有的annotations可以被覆盖,否则试图覆盖annotations将会报错。
如果设置了–resource-version,则更新将使用此resource version,否则将使用原有的resource version。

使用注释“描述”和值“我的前端”更新 pod 'foo'# 如果多次设置同一个注解,则只应用最后一个值
kubectl annotate pods foo description='my frontend'

更新由“pod.json”中的类型和名称标识的 pod
kubectl annotate -f pod.json description='my frontend'

使用注释 'description' 和值 'my frontend running nginx' 更新 pod 'foo',覆盖任何现有值。
kubectl annotate --overwrite pods foo description='my frontend running nginx'

更新命名空间中的所有 pod
kubectl annotate pods --all description='my frontend running nginx'

仅当资源与版本 1 相同时才更新 pod 'foo'。
kubectl annotate pods foo description='my frontend running nginx' --resource-version=1

通过删除名为 'description' 的注释(如果存在)来更新 pod 'foo'# 不需要 --overwrite 标志。
kubectl annotate pods foo description-

completion(自动补全)

输出指定 shell(bash 或 zsh)的 shell 完成代码。必须评估 shell 代码以提供 kubectl 命令的交互式完成。这可以通过从 .bash_profile 获取它来完成。

使用自制软件在 macOS 上安装 bash 完成 ## 如果运行 macOS 附带的 Bash 3.2
brew install bash-completion

或者,如果运行 Bash 4.1+
brew install bash-completion@2

如果 kubectl 是通过自制软件安装的,它应该立即开始工作。##如果你通过其他方式安装,你可能需要将完成添加到你的完成目录
kubectl completion bash > $(brew --prefix)/etc/bash_completion.d/kubectl

在 Linux 上安装 bash 完成 ## 如果 Linux 上没有安装 bash-completion,请通过您的发行版的包管理器安装 'bash-completion' 包 ##。## 将 bash 的 kubectl 补全代码加载到当前 shell 中
source <(kubectl completion bash)bash 完成代码写入文件并从 .bash_profile 获取它
kubectl completion bash > ~/.kube/completion.bash.inc printf "

Kubectl 外壳完成
source '$HOME/.kube/completion.bash.inc'
" >> $HOME/.bash_profile
source $HOME/.bash_profile

将 zsh[1] 的 kubectl 补全代码加载到当前 shell 中
source <(kubectl completion zsh)

将 zsh[1] 的 kubectl 完成代码设置为在启动时自动加载
kubectl completion zsh > "${fpath[1]}/_kubectl"

kubectl 部署命令:rollout,rolling-update,scale,autoscale

rollout命令

用于对资源进行管理

可用资源包括:deployments,daemonsets。
子命令:
history(查看历史版本)
pause(暂停资源)
resume(恢复暂停资源)
status(查看资源状态)
undo(回滚版本)

# 语法
kubectl rollout SUBCOMMAND
# 回滚到之前的deployment
kubectl rollout undo deployment/abc
# 查看daemonet的状态
kubectl rollout status daemonset/foo

**rolling-update命令:**执行指定ReplicationController的滚动更新。

该命令创建了一个新的RC, 然后一次更新一个pod方式逐步使用新的PodTemplate,最终实现Pod滚动更新,new-controller.json需要与之前RC在相同的namespace下。

# 语法
rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC)
# 使用frontend-v2.json中的新RC数据更新frontend-v1的pod
kubectl rolling-update frontend-v1 -f frontend-v2.json
# 使用JSON数据更新frontend-v1的pod
cat frontend-v2.json | kubectl rolling-update frontend-v1 -f -
# 其他的一些滚动更新
kubectl rolling-update frontend-v1 frontend-v2 --image=image:v2

kubectl rolling-update frontend --image=image:v2

kubectl rolling-update frontend-v1 frontend-v2 --rollback

scale命令

扩容或缩容 Deployment、ReplicaSet、Replication Controller或 Job 中Pod数量

scale也可以指定多个前提条件,如:当前副本数量或 --resource-version ,进行伸缩比例设置前,系统会先验证前提条件是否成立。这个就是弹性伸缩策略

# 语法
kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)
# 将名为foo中的pod副本数设置为3。
kubectl scale --replicas=3 rs/foo
kubectl scale deploy/nginx --replicas=30
# 将由“foo.yaml”配置文件中指定的资源对象和名称标识的Pod资源副本设为3
kubectl scale --replicas=3 -f foo.yaml
# 如果当前副本数为2,则将其扩展至3。
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql
# 设置多个RC中Pod副本数量
kubectl scale --replicas=5 rc/foo rc/bar rc/baz

autoscale命令: 这个比scale更加强大,也是弹性伸缩策略 ,它是根据流量的多少来自动进行扩展或者缩容

指定Deployment、ReplicaSet或ReplicationController,并创建已经定义好资源的自动伸缩器。使用自动伸缩器可以根据需要自动增加或减少系统中部署的pod数量。

# 语法
kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]
# 使用 Deployment “foo”设定,使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间
kubectl autoscale deployment foo --min=2 --max=10
# 使用RC“foo”设定,使其Pod的数量介于1和5之间,CPU使用率维持在80%
kubectl autoscale rc foo --max=5 --cpu-percent=80

集群管理命令:certificate,cluster-info,top,cordon,uncordon,drain,taint

certificate命令

用于证书资源管理,授权等

[root@master ~]# kubectl certificate --help
Modify certificate resources.

Available Commands:
  approve     Approve a certificate signing request
  deny        Deny a certificate signing request

Usage:
  kubectl certificate SUBCOMMAND [options]

Use "kubectl <command> --help" for more information about a given command.
Use "kubectl options" for a list of global command-line options (applies to all commands).

# 例如,当有node节点要向master请求,那么是需要master节点授权的
kubectl  certificate approve node-csr-81F5uBehyEyLWco5qavBsxc1GzFcZk3aFM3XW5rT3mw node-csr-Ed0kbFhc_q7qx14H3QpqLIUs0uKo036O2SnFpIheM18

cluster-info命令

显示集群信息

kubectl cluster-info

[root@master ~]# kubectl cluster-info
Kubernetes master is running at http://localhost:8080
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

top命令

用于查看资源的cpu,内存磁盘等资源的使用率
kubectl top pod --all-namespaces
它需要heapster运行才行
cordon命令:用于标记某个节点不可调度
**uncordon命令:**用于标签节点可以调度
drain命令: 用于在维护期间排除节点。

集群故障排查和调试命令:describe,logs,exec,attach,port-foward,proxy,cp,auth

describe命令

显示特定资源的详细信息

# 语法
kubectl describe TYPE NAME_PREFIX
(首先检查是否有精确匹配TYPE和NAME_PREFIX的资源,如果没有,将会输出所有名称以NAME_PREFIX开头的资源详细信息)
支持的资源包括但不限于(大小写不限):pods (po)、services (svc)、 replicationcontrollers (rc)、nodes (no)、events (ev)、componentstatuses (cs)、 limitranges (limits)、persistentvolumes (pv)、persistentvolumeclaims (pvc)、 resourcequotas (quota)和secrets。
#查看my-nginx pod的详细状态
kubectl describe po my-nginx

logs命令

用于在一个pod中打印一个容器的日志,如果pod中只有一个容器,可以省略容器名

# 语法
kubectl logs [-f] [-p] POD [-c CONTAINER]

# 返回仅包含一个容器的pod nginx的日志快照
$ kubectl logs nginx
# 返回pod ruby中已经停止的容器web-1的日志快照
$ kubectl logs -p -c ruby web-1
# 持续输出pod ruby中的容器web-1的日志
$ kubectl logs -f -c ruby web-1
# 仅输出pod nginx中最近的20条日志
$ kubectl logs --tail=20 nginx
# 输出pod nginx中最近一小时内产生的所有日志
$ kubectl logs --since=1h nginx
# 参数选项
  -c, --container="": 容器名。
  -f, --follow[=false]: 指定是否持续输出日志(实时日志)。
      --interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true。
      --limit-bytes=0: 输出日志的最大字节数。默认无限制。
  -p, --previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志。
      --since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
      --since-time="": 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种。
      --tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志。
      --timestamps[=false]: 在日志中包含时间戳

exec命令

进入容器进行交互,在容器中执行命令

# 语法
kubectl exec POD [-c CONTAINER] -- COMMAND [args...]
#命令选项
  -c, --container="": 容器名。如果未指定,使用pod中的一个容器。
  -p, --pod="": Pod名。
  -i, --stdin[=false]: 将控制台输入发送到容器。
  -t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。
# 进入nginx容器,执行一些命令操作
kubectl exec -it nginx-deployment-58d6d6ccb8-lc5fp bash

attach命令

连接到一个正在运行的容器

#语法
kubectl attach POD -c CONTAINER
# 参数选项
-c, --container="": 容器名。如果省略,则默认选择第一个 pod
  -i, --stdin[=false]: 将控制台输入发送到容器。
  -t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。

# 获取正在运行中的pod 123456-7890的输出,默认连接到第一个容器
kubectl attach 123456-7890
# 获取pod 123456-7890中ruby-container的输出
kubectl attach 123456-7890 -c ruby-container
# 切换到终端模式,将控制台输入发送到pod 123456-7890的ruby-container的“bash”命令,并将其输出到控制台/
# 错误控制台的信息发送回客户端。
kubectl attach 123456-7890 -c ruby-container -i -t

cp命令

拷贝文件或者目录到pod容器中
用于pod和外部的文件交换,类似于docker 的cp,就是将容器中的内容和外部的内容进行交换

其他命令:api-servions,config,help,plugin,version

api-servions命令:打印受支持的api版本信息

# kubectl api-versions
[root@master ~]# kubectl api-versions
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1beta1
apps/v1
apps/v1beta1
apps/v1beta2
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
events.k8s.io/v1beta1
extensions/v1beta1
networking.k8s.io/v1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1

help命令

用于查看命令帮助

显示全部的命令帮助提示

kubectl --help

具体的子命令帮助,例如

kubectl create --help
config:用于修改kubeconfig配置文件(用于访问api,例如配置认证信息)

**version命令:**打印客户端和服务端版本信息

**plugin命令:**运行一个命令行插件+

高级命令:apply,patch,replace,convert

apply命令

通过文件名或者标准输入对资源应用配置

通过文件名或控制台输入,对资源进行配置。 如果资源不存在,将会新建一个。可以使用 JSON 或者 YAML 格式。

# 语法
kubectl apply -f FILENAME

# 将pod.json中的配置应用到pod
kubectl apply -f ./pod.json
# 将控制台输入的JSON配置应用到Pod
cat pod.json | kubectl apply -f -

选项
-f, --filename=[]: 包含配置信息的文件名,目录名或者URL。
      --include-extended-apis[=true]: If true, include definitions of new APIs via calls to the API server. [default true]
  -o, --output="": 输出模式。"-o name"为快捷输出(资源/name).
      --record[=false]: 在资源注释中记录当前 kubectl 命令。
  -R, --recursive[=false]: Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.
      --schema-cache-dir="~/.kube/schema": 非空则将API schema缓存为指定文件,默认缓存到'$HOME/.kube/schema'
      --validate[=true]: 如果为true,在发送到服务端前先使用schema来验证输入。

patch命令

使用补丁修改,更新资源的字段,也就是修改资源的部分内容

# 语法
kubectl patch (-f FILENAME | TYPE NAME) -p PATCH

# Partially update a node using strategic merge patch
kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'
# Update a container's image; spec.containers[*].name is required because it's a merge key
kubectl patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}

replace命令

通过文件或者标准输入替换原有资源

# 语法
kubectl replace -f FILENAME

# Replace a pod using the data in pod.json.
kubectl replace -f ./pod.json
# Replace a pod based on the JSON passed into stdin.
cat pod.json | kubectl replace -f -
# Update a single-container pod's image version (tag) to v4
kubectl get pod mypod -o yaml | sed 's/\\(image: myimage\\):.*$/\\1:v4/' | kubectl replace -f -
# Force replace, delete and then re-create the resource
kubectl replace --force -f ./pod.json

convert命令

不同的版本之间转换配置文件

# 语法
kubectl convert -f FILENAME

# Convert 'pod.yaml' to latest version and print to stdout.
kubectl convert -f pod.yaml
# Convert the live state of the resource specified by 'pod.yaml' to the latest version
# and print to stdout in json format.
kubectl convert -f pod.yaml --local -o json
# Convert all files under current directory to latest version and create them all.
kubectl convert -f . | kubectl create -f -
Master查询各个节点状态

[root@master1 kubernetes-1.10]# kubectl get nodes

查询所有Pod

[root@master1 ~]# kubectl get pods --namespace=kube-system

查询故障的Pod

[root@master1 ~]# kubectl get pods -n kube-system |grep -v Running

查询指定pod详细信息

[root@master1 ~]# kubectl describe pod -n kube-system

1.5 查询指定Pod具体信息(同上)
如下查询k8s dashboard页面启动pod启动过程

1.6 Node节点join master

1.7 K8s登陆界面

2 Kubeadm指令集
Kubeadm帮助用户快速搭建k8s集群cluster:

常见命令如下:

2.1 kubeadm init
建立一个master node。

2.2 kubeadm join
初始化worker节点并加入到cluster

2.3 kubeadm upgrage
升级k8s集群到一个新的版本

2.4 kubeadm config
2.5 kubeadm reset
还原所有kubeadm init 和kubeadm join操

2.6 kubeadm token
管理kubeadm join的tokens

2.7 kubeadm version

以上是关于kubernetes-常用命令集的主要内容,如果未能解决你的问题,请参考以下文章

常用 Kubernetes 命令

常用 Kubernetes 命令

常用 Kubernetes 命令

常用 Kubernetes 命令

常用 Kubernetes 命令

常用 Kubernetes 命令