19-29-k8s-基本命令-yaml-kubectl

news/2024/12/27 4:18:37/

19-k8s-基本命令-yaml-kubectl:

Kubernetes 集群的命令行工具kubectl

1、kubectl 命令格式:

kubectl [command] [type] [name] [flags]
参数:
command:指定要对资源执行的操作,例如create、get、describe、delete
type:指定资源类型,资源类型是大小写敏感的,开发者能够以单数 、复数 和 缩略的形式
kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
name:指定资源的名称,名称也是大小写敏感的,如果省略名称,则会显示所有的资源,例如
kubectl get pods
flags:指定可选的参数,例如,可用 -s 或者 -server参数指定Kubernetes API server的地址和端口

2、kubectl 帮助命令

# 获取kubectl的命令
kubectl --help
# 获取某个命令的介绍和使用
kubectl get --help
kubectl create --help

3、kubectl基础命令

命令介绍
create通过文件名或标准输入创建资源
expose将一个资源公开为一个新的Service
run在集群中运行一个特定的镜像
set在对象上设置特定的功能
get显示一个或多个资源
explain文档参考资料
edit使用默认的编辑器编辑一个资源
delete通过文件名,标准输入,资源名称或标签来删除资源

4、kubectl部署命令

命令介绍
rollout管理资源的发布
rolling-update对给定的复制控制器滚动更新
scale扩容或缩容Pod数量,Deployment、ReplicaSet、RC或Job
autoscale创建一个自动选择扩容或缩容并设置Pod数量

5、kubectl集群管理命令

命令介绍
certificate修改证书资源
cluster-info显示集群信息
top显示资源(CPU/M)
cordon标记节点不可调度
uncordon标记节点可被调度
drain驱逐节点上的应用,准备下线维护
taint修改节点taint标记

6、kubectl 其它命令

命令介绍
apply通过文件名或标准输入对资源应用配置
patch使用补丁修改、更新资源的字段
replace通过文件名或标准输入替换一个资源
convert不同的API版本之间转换配置文件
label更新资源上的标签
annotate更新资源上的注释
completion用于实现kubectl工具自动补全
api-versions打印受支持的API版本
config修改kubeconfig文件(用于访问API,比如配置认证信息)
help所有命令帮助
plugin运行一个命令行插件
version打印客户端和服务版本信息

Kubernetes 集群YAML文件详解

yaml菜鸟教程:https://www.runoob.com/w3cnote/yaml-intro.html

1、YAML 文件概述

k8s 集群中对资源管理和资源对象编排部署都可以通过声明样式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到 YAML 格式文件中,我们把这种文件叫做资源清单文件,通过 kubectl 命令直接使用资源清单文件就可以实现对大量的资源对象进行编排部署

2、YAML 文件书写格式

(1)YAML 介绍

YAML :仍是一种标记语言。为了强调这种语言以数据做为中心,而不是以标记语言为重点。

YAML 是一个可读性高,用来表达数据序列的格式。

(2)YAML 基本语法

* 使用空格做为缩进

* 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

* 低版本缩进时不允许使用 Tab 键,只允许使用空格

* 使用#标识注释,从这个字符一直到行尾,都会被解释器忽略

3、YAML 数据结构

对象:键值对的集合,又称为映射(mapping) / 哈希(hashes) / 字典(dictionary)

# 对象类型:对象的一组键值对,使用冒号结构表示
name: Tom
age: 18
# yaml 也允许另一种写法,将所有键值对写成一个行内对象
hash: {name: Tom, age: 18}

数组:

# 数组类型:一组连词线开头的行,构成一个数组
People
- Tom
- Jack# 数组也可以采用行内表示法
People: [Tom, Jack]

4、YAML 组成部分

主要分为了两部分,一个是控制器的定义 和 被控制的对象。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-as3biRCT-1670132229157)(png/image-20220312145939459.png)]

在一个YAML文件的控制器定义中,有很多属性名称

属性名称介绍
apiVersionAPI版本
kind资源类型
metadata资源元数据
spec资源规格
replicas副本数量
selector标签选择器
templatePod模板
metadataPod元数据
specPod规格
containers容器配置

5、YAML 快速编写

一般借助工具来创建yaml

1、使用kubectl create命令

这种方式一般用于资源没有部署的时候,我们可以直接创建一个YAML配置文件

# 尝试运行,并不会真正的创建镜像
kubectl create deployment web --image=nginx -o yaml --dry-run

或者我们可以输出到一个文件中

kubectl create deployment web --image=nginx -o yaml --dry-run > hello.yaml

2、使用kubectl get命令导出yaml文件

可以首先查看一个目前已经部署的镜像

kubectl get deploy

然后我们导出 nginx的配置

kubectl get deploy nginx -o=yaml --export > nginx.yaml

然后会生成一个 nginx.yaml 的配置文件

6、k8s,yaml常用字段

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IfujlLCk-1670132229158)(png/image-20220312151149252.png)]

spec 主要对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yheSYMCf-1670132229159)(png/image-20220312151257438.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cBXhscao-1670132229159)(png/image-20220312151307404.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tsLZqJrW-1670132229159)(png/image-20220312151316681.png)]
在这里插入图片描述

额外的参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GMYHZJV1-1670132229160)(png/image-20220312151331281.png)]

kubectl命令详解

kubectl更多命令 kubectl --help

https://kubernetes.io/docs/reference/kubectl/

1、kubectl子命令详解:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、kubectl可操作的资源对象详解

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3、kubectl公共参数说明

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Y7eGeDr-1670132229164)(png/image-20220312154300541.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TrIy9Ooa-1670132229164)(png/image-20220312154321423.png)]

每个子命令(如create、delete. get等)还有其特定的命令行参数,可以通过$ kubectl [command] --help命令进行查看。

4、kubectl格式化输出列表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MWbtVIyg-1670132229165)(png/image-20220312154736406.png)]

kubectl常用操作实例

常用的输出格式示例如下。

(1)显示Pod的更多信息,例如NodeIP等:
$ kubectl get pod <pod-name> -o wide
(2)以YAML格式显示Pod的详细信息:
$ kubectl get pod <pod-name> -o yaml
(3)以自定义列名显示Pod的信息:
$ kubectl get pod <pod-name> -o custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
(4)基于自定义列明配置文件进行输出
$ kubectl get pod <pod-name> -o custom-columns-file=template.txttemplate.txt文件的内容如下:
NAME			RSRC
metadata.name	metadata.resourceVersion
输出结果为:
NAME		RERC
pod-name	52305
(5)将输出结果按某个字段排序,可以通过--sort-by 参数以jsonpath表达式进行指定
kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>
kubectl get pods --sort-by=.metadata.name

kubectl apply (以文件或stdin 部署或更新一个或多个资源)

基于example service.yamn中的定义创建一个 Service资源:
kubectl apply -f example-service.yaml
使用example-controller.yaml中的定义创建一个Replication Controller资源:
kubectl apply -f example-controller.yaml
使用<directory>目录下所有:yaml、.yml 和.json文件中的定义进行创建:
kubectl apply -f <directory>

kubectl get (列出一个或多个资源对象的信息)

以文本格式列出所有Pod:
kubectl get pods
以文本格式列出所有Pod,包含附加信息( 如Node IP):
kubect1 get pods -0 wide
以文本格式列出指定名称的RC;
kobectl get replicationcontroller <rc-name>
以文本格式列出所有RC和Service
kubectl get rc services
以文本格式列出所有Dacemonset,包括未初始化的Daemonset:
kubectl get ds --include-uninitialized
列出在节点server01上运行的所有pod(仅显示namespace为default的):
kubectl get pods --field-selector=spec.nodeName=server01

kubectl describe(显示一个或多个资源的详细信息)

显示名称为<node name>的节点的详细信息:
Rubectl describe nodes	<node-name>
显示名称为<pod-name>的Pod的详细信息:
kubect1 describe pods/<pod-name>
显示名称为<rc name>的RC控制器管理的所有Pod的详细信息:
kubect1 describe pods <rc-name>
描述所有Pod的详细信息:
kubect1 describe pods

对kubectl get和kubectl describe命令说明如下。
kubectl get 命令常用于查看同资源类型的一个或多个资源对象, 可以使用-o 或–output参数自定义输出格式,还可以通过-w或–watch 参数开启对资源对象更新的监控。
kubectl describe命令更侧重于描述指定资源的各方面详细信息,通过对API Server的多个API调用来构建结果视图。例如通过kubetl describe node命令不仅会返回节点信息,还会返回在其上运行的Pod的摘要、节点事件等信息。

kubectl delete
该命令可以使用文件,stdin的输人删除指定的资源对象,还可以通过标签选择器、名称、资源选择器等条件来限定待删除的资源范围。
使用在pod.yaml文件中指定的类型和名称删除Pod:

kubectl delete -f pod.yaml
删除所有带有'<label-key>=<label-value>'标签的Pod和Service:
Kubectl delete pods,services -1 <label-key>=<label-value>
删除所有Pod.包括未初始化的Pod:
kubectl delete pods -al1

kubectl exec (在Pod的容器中运行命令)

在名称为<pod-name>的Pod的第1个容器中运行date命令并打印输出结果:
kubectl exec <pod-name> -- date
在指定的容器中运行date命令并打印输出结果:
Kubectl exec <pod-name> -c <container-name> - date
在Pod的第1个容器中运行/bin/bash命令进人交互式TTY终端界面:
kubectl exec -ti <pod-name> -- /bin/bash

kubectl logs ( 打印Pod中容器的日志)

kubect1 1ogs <pod-name>
显示Pod中名称为<container name>的容器输出到stdout的日志:
kubectl 1ogs <pod-name> -c <container-name>
持续监控显示Pod中的第1个容器输出到stdou的日志,类似于tail.f命令的功能:
kubectl logs -f <pod-name>

在线编辑运行中的资源对象
可以使用kubecl edit命令编辑运行中的资源对象,例如使用下面的命令编辑运行中的一个(部署)Deployment:
$ kubectl edit deploy nginx
在命令运行之后,会通过YAML格式展示该对象的文本格式定义,用户可以对代码进行编辑和保存,从而完成对在线资源的直接修改。

将Pod的端口号映射到宿主机
将pod 的80端口映射到宿主机的888端口,客户端即可通过http://:8888访问容器服务了:
kubectl port-forward --addres 0.0.0.0 \ pod/nginx-6ddbbc47fb-sfdcv 8888:80

在容器和Node之间复制文件
把Pod(默认为第1个容器)中的/etc/fstab 文件复制到宿主机的/tmp目录下:
kubectl cp nginx-6ddbbc47fb-sfdcv:etc/fstab /tmp/fstab

设置资源对象的标签
为名为“defult"的命名空间设置"testing=true" 标签:

kubectl label namespaces default testing-true

kubectl还可以自定义创建和使用命令行插件。

学习路径:https://space.bilibili.com/302417610/,如有侵权,请联系q进行删除:3623472230


http://www.ppmy.cn/news/1889.html

相关文章

Thinkpad x13 锐龙安装 Archlinux 记录

硬件配置&#xff1a; 笔记本影响cpu显卡内存硬盘ThinkPad X13 锐龙版r7 4750U核显16g1TB 山寨固态&#xff08;大华&#xff09;镜像准备 https://archlinux.org/download/ http://mirrors.163.com/archlinux/iso/2022.12.01/ 每次安装都检查iso镜像是否是网站最新的&#x…

前端入门学习笔记四十七

<!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><p>JavaScript 算数运算符</p><p id "a"></p><script>var x 9 9;document.getElemen…

模拟百度网盘

linux下基于多线程和tcp去实现了一个模拟网盘,实现cs之间的下载互传大文件,实现断点续传,秒传,利用md5进行校验,实时显示百分比 整体框架: 整个项目是在Linux环境下用C语言开发的,基于TCP协议,采用多线程的socket通信方式。 普通上传和秒传:客户端会先计算文件的MD…

浅析 em 和 rem

em 和 rem 都是相对长度单位 em 是相对于父级元素的font-size 大写来定义自身的大小 rem 是相对于根节点&#xff08;html{}, body{}, :root{}&#xff09;font-size来定义大小 Talk is cheap, show me the code !(空谈无用&#xff0c;上代码) em <html><head>…

【深度学习】常用算法生成对抗网络、自编码网络、多层感知机、反向传播等讲解(图文解释 超详细)

觉得有帮助请点赞关注收藏~~~ 一、生成对抗网络GAN Generative Adversarial Network 两个组件组成&#xff1a;一个生成器&#xff0c;用于生成虚拟数据&#xff0c;另一个是鉴别器&#xff0c;用于(GAN)生成式深度学习算法&#xff0c;可创建类似于训练数据的新数据实例。 G…

SpringBoot的创建的使用

哈喽呀&#xff0c;你好呀&#xff0c;欢迎呀&#xff0c;快来看一下这篇宝藏博客吧~~~ 目录 1、Spring Boot快速扫盲 2、Spring Boot 项目创建 3、运行项目 4 、输出hello world 5、注意事项--包路径错误 6、小结 1、Spring Boot快速扫盲 在创建SpringBoot项目前,我们得…

postgresql 数据库导出和导入

简介 本篇文章主要介绍PostgreSQL库和表的导出和导入以及常用的数据库管理工具的使用 一、数据库的导出和导入 1. 使用pgAdmin导出和导入数据库 导出 导入 新建数据库&#xff0c;右键Restore 2. 使用Navicate导出和导入数据库 导出 选择要导出的数据库&#xff0c;点…

数据库 - [ 视图 事务 ]

目录 视图 事务&#xff08;Transaction&#xff09; Oracle对象教程&#xff1a;视图(View)创建使用&#xff0c;视图(View)实际上是一张或者多张表上的预定义查询&#xff0c;这些表称为基表。从视图中查询信息与从表中查询信息的方法完全相同。只需要简单的SELECT…FROM即…