本文共 15452 字,大约阅读时间需要 51 分钟。
原文格式更绚丽,转载自:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
本文收录在
1、使用kubectl
1.1 介绍
kubectl用于运行Kubernetes集群命令的管理工具。
1.2 语法
1 |
|
- command:指定要在一个或多个资源执行的操作,例如操作create,get,describe,delete。TYPE:指定资源类型Resource types。
- Name区分大小写,如果省略Name,则显示所有资源的详细信息,例如:$ kubectl get pods。
1.3 选项
Operation | Description | Syntax |
annotate | 为一个或多个资源添加注释 | kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] |
api-versions | 列出支持的API版本。 | kubectl api-versions [flags] |
apply | 对文件或stdin的资源进行配置更改。 | kubectl apply -f FILENAME [flags] |
attach | 连接到一个运行的容器,既可以查看output stream,也可以与容器(stdin)进行交互。 | kubectl attach POD -c CONTAINER [-i] [-t] [flags] |
autoscale | 自动扩容/缩容由replication controller管理的一组pod。 | kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags] |
cluster-info | 显示有关集群中master和services的终端信息。 | kubectl cluster-info [flags] |
config | 修改kubeconfig文件。有关详细信息,请参阅各个子命令。 | kubectl config SUBCOMMAND [flags] |
create | 从file或stdin创建一个或多个资源。 | kubectl create -f FILENAME [flags] |
delete | 从file,stdin或指定label 选择器,names,resource选择器或resources中删除resources。 | kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags] |
describe | 显示一个或多个resources的详细状态。 | kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags] |
edit | 使用默认编辑器编辑和更新服务器上一个或多个定义的资源。 | kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags] |
exec | 对pod中的容器执行命令。 | kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]] |
explain | 获取各种资源的文档。例如pod,node,services等 | kubectl explain [--include-extended-apis=true] [--recursive=false] [flags] |
expose | 将 replication controller,service或pod作为一个新的Kubernetes service显示。 | kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [----external-ip=external-ip-of-service] [--type=type] [flags] |
get | 列出一个或多个资源。 | kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags] |
label | 添加或更新一个或多个资源的flags。 | kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] |
logs | 在pod中打印容器的日志。 | kubectl logs POD [-c CONTAINER] [--follow] [flags] |
patch | 使用strategic merge 补丁程序更新资源的一个或多个字段。 | kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags] |
port-forward | 将一个或多个本地端口转发到pod。 | kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags] |
proxy | 在Kubernetes API服务器运行代理。 | kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags] |
replace | 从file或stdin替换资源。 | kubectl replace -f FILENAME |
rolling-update | 通过逐步替换指定的replication controller及其pod来执行滚动更新。 | kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC) [flags] |
run | 在集群上运行指定的镜像。 | kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [flags] |
scale | 更新指定replication controller的大小。 | kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags] |
stop | 已弃用 | kubectl stop |
version | 显示客户端和服务器上运行的Kubernetes版本。 | kubectl version [--client] [flags] |
1.4 示例演示
(1)简单的查询操作
查询节点详细信息
1 2 3 4 5 |
|
查看版本
1 2 3 |
|
查看集群信息
1 2 3 |
|
2、run运行
2.1 介绍
创建并运行一个或多个容器镜像。
2.2 命令
1 |
|
2.3 常用选项
- --port:要暴露的端口
- --replicas:期望创建几个Pod,默认1个
- --dry-run:true为干跑
2.4 演示
(1)运行一个nginx的pod
1 2 |
|
(2)在master上查询验证
1 2 3 4 5 6 7 8 9 |
|
(3)在部署的node节点上查询
1 2 3 |
|
(4)访问pod内的nginx服务
1 2 3 4 5 |
|
3、delete删除
3.1 介绍
- 通过配置文件名、stdin、资源名称或label选择器来删除资源。
- 支持JSON和YAML格式文件。可以只指定一种类型的参数:文件名、资源名称或label选择器。
3.2 语法
1 |
|
3.3 演示
删除刚才的pod,立刻会生成一个新的pod,因为此pod是控制器管理的
1 2 3 4 5 6 7 8 |
|
4、expose暴露
4.1 介绍
- 将资源暴露为新的Kubernetes Service。
- 指定deployment、service、replica set、replication controller或pod ,并使用该资源的选择器作为指定端口上新服务的选择器。deployment 或 replica set只有当其选择器可转换为service支持的选择器时,即当选择器仅包含matchLabels组件时才会作为暴露新的Service。
- 资源包括(不区分大小写):pod(po),service(svc),replication controller(rc),deployment(deploy),replica set(rs)
4.2 语法
1 |
|
4.3 常用选项
- --port:暴露在service上的端口
- --target-port:容器中的端口
4.4 演示
(1)将nginx-deploy控制器中相关的Pod资源创建一个名为nginx的服务
1 2 3 4 5 6 7 8 9 10 |
|
(2)验证,在集群内部节点访问服务
1 2 3 4 5 |
|
(3)删除pod,立即生产新的pod,但是service还是不变,继续提供服务,只是指定到新的pod
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
5、scale动态扩容/缩容
5.1 介绍
- 扩容或缩容 Deployment、ReplicaSet、Replication Controller或 Job 中Pod数量。
- scale也可以指定多个前提条件,如:当前副本数量或 --resource-version ,进行伸缩比例设置前,系统会先验证前提条件是否成立。
5.2 语法
1 |
|
5.3 演示
(1)先运行名为myapp标签选择器的2个pod,镜像是我用于测试演示自己构建的
1 2 3 4 5 6 7 8 9 |
|
(2)创建service,并验证
1 2 3 4 5 6 7 8 9 10 11 12 |
|
(3)使用scale,将pod扩容到5个
1 2 3 4 5 6 7 8 9 |
|
(4)使用scale,将pod缩容到3个
1 2 3 4 5 6 |
|
6、set动态升级版本
6.1 介绍
(1)set
- 配置应用资源。
- 使用这些命令能帮你更改现有应用资源一些信息。
- 子命令:image、resources、selector、subject
(2)set image
- 更新现有的资源对象的容器镜像。
- 可使用资源对象包括(不区分大小写):pod (po)、replicationcontroller (rc)、deployment (deploy)、daemonset (ds)、job、replicaset (rs)
6.2 语法
1 |
|
6.3 演示
将镜像版本从v1升级到v2版
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
7、rollout undo回滚版本
7.1 介绍
(1)rollout
- 对资源进行管理
- 可用资源包括:deployments、daemonsets
- 子命令:history(查看历史版本)、pause(暂停资源)、resume(恢复暂停资源)、status(查看资源状态)、undo(回滚版本)
(2)rollout undo
回滚pod到之前的版本。
7.2 语法
1 |
|
7.3 演示
1 2 3 4 5 6 7 8 9 10 |
|
8、edit编辑修改
8.1 介绍
- 使用默认编辑器,编辑服务器上定义的资源。
- 使用命令行工具获取的任何资源都可以使用edit命令编辑。edit命令会打开使用KUBE_EDITOR,GIT_EDITOR 或者EDITOR环境变量定义的编辑器,可以同时编辑多个资源,但所编辑过的资源只会一次性提交。edit除命令参数外还接受文件名形式。
- 文件默认输出格式为YAML。要以JSON格式编辑,请指定“-o json”选项。
- 如果在更新资源时报错,将会在磁盘上创建一个临时文件来记录。在更新资源时最常见的错误是几个用户同时使用编辑器更改服务器上资源,发生这种情况,你需要将你的更改应用到最新版本的资源上,或者更新保存的临时副本。
8.2 语法
1 |
|
8.3 演示
(1)修改service,将类型type: ClusterIP,修改为type: NodePort;修改后,可以在集群外访问到pod中的服务
1 2 3 4 5 6 7 8 9 10 |
|
(2)在集群外的主机上访问了
9、label标签
9.1 介绍
更新(增加、修改或删除)资源上的 label(标签)。
- label 必须以字母或数字开头,可以使用字母、数字、连字符、点和下划线,最长63个字符。
- 如果--overwrite 为 true,则可以覆盖已有的 label,否则尝试覆盖 label 将会报错。
- 如果指定了--resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。
9.2 语法
1 |
|
9.3 演示
(1)运行一个标签为app=nginx的pod
1 2 |
|
(2)-l 指定标签,实现标签过滤
1 2 3 4 5 6 7 8 9 |
|
(3)打一个新的标签
1 2 3 4 5 |
|
(4)修改标签
1 2 3 4 5 |
|
9.4 标签选择器
(1)等值关系:=,==,!=
1 2 3 4 5 6 7 8 9 10 11 |
|
(2)集合关系
- KEY in (VALUE1,VALUE2,...):集合中存在此健
- KEY notin (VALUE1,VALUE2,...):集合中不存在此健
- KEY:存在此健
- !KEY:不存在此健
1 2 3 4 5 6 7 8 |
|
未完待续,后续还会补充更多的kubectl 应用及演示。
转载地址:https://blog.csdn.net/HD243608836/article/details/100694341 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!