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

2023-05-16

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.txt

template.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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

19-29-k8s-基本命令-yaml-kubectl 的相关文章

  • RTX 线程通信之——内存池

    文章目录 Memory Pool为什么需要内存池 xff1f 什么是内存池 xff1f RTX内存池API 案例 xff1a 按键控制LED灯定义相关创建相关执行相关实验效果 小结参考资料 Memory Pool 内存池 Memory Po
  • springboot项目多环境配置及常见配置名的含义

    强烈推荐大家想学习springboot项目相关知识的 xff0c 可以看一下Gitee上大佬整理的Spring Boot基础教程 xff0c 非常适合初学者和进阶学习 xff1a 传送门 我们在进行项目开发时 xff0c 经常同一个应用需要
  • 聊聊linux中的文件种类、文件名、文件扩展名

    linux中的文件种类 文件名 文件扩展名详解 在使用 ls l指令后可以看到文件的类型 xff0c 其中第一个字符就是代表的文件的类型 xff0c 常见的文件类型是一般文件 和目录文件d 文件的类型 1 正规文件 xff08 regula
  • 华为2288 v5服务器安装centos7.9教程

    华为2288 v5服务器安装centos7 9教程 一 准备工作二 centos启动盘制作三 删除 配置RAID四 选择启动项1 开机按F112 选择u盘启动 五 centos安装1 选择语言2 选择安装方式3 选择安装位置 xff08 重
  • Pytorch-gpu版安装教程【注意:无需提前安装cuda和cudnn】

    Pytorch gpu版安装教程 注意 xff1a 无需提前安装cuda和cudnn 1 首先确保你已经安装好Anaconda2 查看自己电脑上显卡的信息 xff0c 通过显卡控制面板查看3 如何根据想要的cuda的版本下载相应的显卡驱动程
  • python调用有道翻译API进行翻译

    python调用有道翻译API进行翻译 步骤 python调用有道翻译API进行翻译准备调用API所需的APPID以及秘钥1 有道智云注册账号2 有道智云注册账号3 创建实例 xff0c 绑定应用4 查看官方文档 python实现对有道翻译
  • Linux安装cuda10.2

    Linux安装cuda10 2 安装其他版本的cuda也可以参考以下步骤 A 进入NVIDIA官网下载安装文件 百度搜索cuda 10 2 点开第一个网页 找到对应自己系统版本的安装文件命令 在命令行中执行给出的代码 xff0c 下载安装文
  • Windows 10 安装anaconda

    Windows 10 安装anaconda 1 下载anaconda安装包2 安装Anaconda3 配置Anaconda环境变量4 检验是否安装成功4 anaconda换源5 python换源 1 下载anaconda安装包 网页搜索清华
  • 排序算法-基数排序

    排序算法 基数排序 算法思想 基数排序是采用多关键字排序思想 xff08 即基于关键字各位的大小进行排序地 xff09 xff0c 借助 分配 收集 两种操作对单逻辑关键字进行排序 基数排序又分为最高位优先 MSD 降序 排序和最低位优先
  • No module named ‘cv2‘ 解决方法

    No module named cv2 解决方法 1 安装opencv python 在使用的虚拟环境中 xff0c 输入以下命令 pip span class token function install span opencv pyth
  • AttributeError:module ‘distutils‘ has no attribute ‘version

    AttributeError module distutils has no attribute 39 version 在使用torch utils tensorboard时 xff0c 出现错误 xff1a 出错语句from torch
  • CPU、GPU、NPU的区别

    CPU GPU NPU的区别 CPU CPU xff08 CentralProcessing Unit xff09 中央处理器 xff0c 是一块超大规模的集成电路 xff0c 主要逻辑架构包括控制单元Control xff0c 运算单元A
  • jdk(Linux+Windows)环境变量配置

    Windows jdk环境变量配置 xff1a PATH JAVA HOME bin JAVA HOME jre bin CLASSPATH JAVA HOME lib JAVA HOME lib tools jar JAVA HOME l
  • 并发编程-生产者消费者模式Java代码实现

    并发编程 生产者消费者模式Java代码实现 生产者消费者模式 生产者仅负责产生结果数据 xff0c 不关心数据该如何处理 xff0c 而消费者专心处理结果数据 消息队列是有容量限制的 xff0c 满时不会再加入数据 xff0c 空时不会再消
  • Java自定义线程池详解及代码实现(非直接调用ThreadPoolExecutor)

    JJava自定义线程池详解及代码实现 非直接调用ThreadPoolExecutor JDK中的线程池函数ThreadPoolExecutorJDK中的线程池执行任务时的流程自定义线程池业务分析自定义线程池的代码实现 注释详尽1 定义阻塞队
  • BIO、NIO、IO多路复用(select/poll/epoll)、信号驱动IO、异步IO

    BIO NIO IO多路复用 select poll epoll 信号驱动IO 异步IO Linux用户空间和内核空间阻塞IO xff08 Blocking IO xff09 非阻塞IO xff08 Noblocking IO xff09
  • 离散数学对学计算机有什么用?

    离散数学是计算机专业的一门重要基础课 它所研究的对象是离散数量关系和离散结构数学结构模型 由于数字电子计算机是一个离散结构 xff0c 它只能处理离散的或离散化了的数量关系 xff0c 因此 xff0c 无论计算机科学本身 xff0c 还是
  • VistualBox开机后台启动虚拟机

    有时候我们想学习使用其它的系统时 xff0c 总会面临一个问题 xff0c 装系统 装双系统吧 xff0c 总觉得别扭 xff0c 而且反复切换让人头大 使用虚拟机吧 xff01 每一次都得启动虚拟机然后启动虚拟机中的系统 xff0c 体验
  • ubuntu下循环登录的解决方法

    用老师的电脑跑完程序后出现的情况 xff1a ubuntu下每个的账户输入密码后黑屏一闪后回到登录界面 考虑可能的原因是1 xff0c 磁盘满了 xff0c 无法启动2 xff0c 非法关机 进行尝试 xff1a ctrl 43 alt 4
  • Python,批量删除txt文本指定行

    本文解决问题 xff1a 批量删除多行txt文本中的内容 思路 xff1a 1 找出需要删除行的 id xff08 就是需要删除那些行 xff0c 把这是第几行给记录下来 xff09 2 将原文本内容不需要删除的行 赋予到 新的列表 xff

随机推荐