k8s资源管理操作——陈述式管理方式

目录

陈述式资源管理方式

1、常用的kubernetes管理命令

1)查看版本信息

2)查看资源对象简写

3)查看集群信息

4)配置kubectl自动补全

5)node节点查看日志

2、资源管理命令

1)创建资源

2)查看资源

3)删除资源

4)进入Pod中的容器

5)查看Pod容器的日志

6)扩容或缩容

7)将资源暴露为新的Service,向外提供服务

8)更新资源

9)回滚资源

3、service 的 type 类型

4、Service与Pod如何关联的?

5、service的端点

6、集群内Pod资源滚动更新的方式

        1)蓝绿发布

        2)红黑发布

        3)灰度发布(金丝雀发布)

        4)滚动发布


陈述式资源管理方式

1、常用的kubernetes管理命令

1)查看版本信息

kubectl version

2)查看资源对象简写

kubectl api-resources

3)查看集群信息

kubectl cluster-info

4)配置kubectl自动补全

source <(kubectl completion bash)

5)node节点查看日志

journalctl -u kubelet -f

2、资源管理命令

1)创建资源

格式:kubectl create [-n <命名空间>] <资源类型> <资源名称> [选项]或kubectl run <资源名称> --image=镜像 --replicas=副本数 --port=容器端口选项:    --image=镜像 --replicas=副本数 --port=容器端口
例子:
//创建一个命名空间kubectl create ns heitui     #ns是资源类型名、heitui是资源名称,自定义
//在heitui命名空间创建一个Pod资源kubectl create -n heitui deployment nginx-ht --image=nginx
#deployment是Pod的资源控制器名称,nginx-ht是自定义创建的Pod名称,--image=nginx指定使用的镜像

2)查看资源

格式:kubectl get [-n <命名空间>] <资源类型|all> [资源名称] [-o wide|yaml|json] [-w]//查看 master 节点状态
kubectl get componentstatuses
kubectl get cs//查看命名空间
kubectl get namespace
kubectl get ns
//命令空间的作用:用于允许不同 命名空间 的 相同类型 的资源 重名的//查看default命名空间的所有资源
kubectl get all [-n default]

格式:kubectl get [-n <命名空间>] <资源类型|all> [资源名称] [-o wide|yaml|json] [-w]//查看命名空间kube-public 中的pod 信息
kubectl get pods -n heitui//查看某个资源的详细信息
kubectl describe deployment nginx-ht -n heitui
或
kubectl describe pod nginx-ht-74cbf7dd5c -n heitui

3)删除资源

格式:kubectl delete [-n <命名空间>] <资源类型> <资源名称>|--all [--force --grace-period=0]--force --grace-period=0      立即终止Pod运行并强制删除资源//删除heitui命名空间的Pod资源kubectl delete -n heitui deployment nginx-htkubectl -n heitui pods    #查看heitui命名空间的pod
//删除heitui命名空间kubectl delete ns heituikubectl get ns    #查看所有命名空间

4)进入Pod中的容器

格式:kubectl exec -it [-n <命名空间>] <Pod资源名称> [-c 容器名称] sh|bash//进入到Pod容器中kubectl exec -it -n heitui nginx-ht-5dcc469667-dkxh8 bash

5)查看Pod容器的日志

格式:kubectl logs [-n <命名空间>] <Pod资源名称> [-c 容器名称] [-f] [-p]-f:实时查看日志-p:查看Pod容器重启前的日志
//查看Pod容器的日志kubectl logs -n heitui nginx-ht-5dcc469667-dkxh8

6)扩容或缩容

格式:kubectl scale [-n <命名空间>] <deployment|statefulset> <资源名称> --replicas=副本数//扩容kubectl scale -n heitui deployment nginx-ht --replicas=3
//缩容kubectl scale -n heitui deployment nginx-ht --replicas=1

7)将资源暴露为新的Service,向外提供服务

格式:kubectl expose [-n <命名空间>] deployment <资源名称> --name <自定义svc资源名称> --type <svc资源类型> --port <clusterIP的端口> --targetPort <容器的端口>svc资源类型有 ClusterIP|NodePort|LoadBalancer|ExternalName例子:kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

8)更新资源

格式://更改模板信息kubectl set image deployment <deployment资源名称> <容器名>=<镜像名>//更改选择器标签kubectl set selector service <svc资源名称> '标签key=value'例子://将nginx 版本更新为 1.15 版本kubectl set image deployment/nginx nginx=nginx:1.15//处于动态监听 pod 状态,由于使用的是滚动更新方式,所以会先生成一个新的pod,然后删除一个旧的pod,往后依次类推kubectl get pods -w

9)回滚资源

格式:kubectl rollout history deployment <deployment资源名称>    #查看历史版本kubectl rollout undo deployment <deployment资源名称> [--to-revision=N]
#不加--to-revision=N,默认回滚到前一个版本,反之指定版本回滚kubectl rollout status deployment <deployment资源名称>    #查看回滚的状态

Kubernetes 之所以需要 Service,一方面是因为 Pod 的 IP 不是固定的(Pod可能会重建),另一方面则是因为一组 Pod 实例之间总会有负载均衡的需求

3、service 的 type 类型

1)ClusterIP

        提供一个集群内部的虚拟IP以供Pod访问(Service默认类型)

2)NodePort

        在每个node上打开一个端口以供外部访问,且每个node端口都是一样的,集群外部的程序通过NodeIP:Nodeport的方式访问集群内的Service,每个端口只能是一种服务,端口范围只能是30000~32767。

3)LoadBalancer

        使用云负载设备和service做映射,外部用户通过云负载设备即可将请求转发到node节点,再通过NodeIP:NodePort访问service并转发给其他关联的Pod

4)ExternalName

        相当于给一个外部地址做别名,集群内的Pod可以通过这个service访问相关的外部服务

4、Service与Pod如何关联的?

Service 通过 标签选择器(Label Selector) 绑定Pod的标签来关联Pod的端点。

对于容器应用而言,Kubernetes 提供了基于 VIP(虚拟IP) 的网桥的方式 去 访问 Service,再由 Service 重定向到相应的 Pod。

5、service的端点

        1)port

service的clusterIP使用的端口

        2)nodePort

在NodePort类型的service定义的端口,在每个node节点上开启的端口,即nodeIP使用的端口,默认范围30000~32767

        3)targetPort

service将发送给port或nodePort的请求转发给Pod的容器端口,需与containerPort一致

        4)containerPort

创建Pod时所指定的容器端口

最后K8s集群内部的客户端可以通过访问  http://clusterIP:port ----------->podIP:containerPort(Pod容器提供的服务)

K8s集群外部的客户端可以通过访问  http://nodeIP:nodePort------->podIP:containerPort(Pod容器提供的服务)

6、集群内Pod资源滚动更新的方式

        Pod资源滚动更新的方式有:蓝绿发布、红黑发布、灰度发布(金丝雀发布)、滚动发布

        1)蓝绿发布

定义:以最小的停机时间做服务升级的策略

        需要维护的两个版本的环境分别为“蓝环境”和“绿环境”,简单说就是,“绿环境”就是目前正在使用的,能够正常使用的环境,而“蓝环境”就是需要更新到的版本使用的环境。

        发布流程:

首先将一半的服务流量从负载均衡列表中移除,并且更新服务版本,验证新版本没有问题后,将生产环境指向蓝环境,然后对于老版本的绿环境进行版本升级,最后将所有流量加回负载均衡。

如下图升级过程:

两套环境交替升级,旧版本会保留一定时间后在做升级,便于回滚

优点:

  • 升级过程无需停机,用户感知小
  • 升级/回滚速度快。

缺点:

  • 资源成本高

        2)红黑发布

定义:与蓝绿发布类似,红黑发布也是通过两套环境完成软件版本的升级,将当前环境称为红环境,新版本环境为黑环境。

发布流程:

首先需要申请新资源用于部署黑环境,在黑环境部署新版本的服务,黑环境部署完成后,一次性将生产流量指向黑环境,最后释放红环境的资源。

发布流程图如下:

        3)灰度发布(金丝雀发布)

定义:灰度发布属于增量发布,新老版本同时为用户提供服务,主要目的是保证系统的可用性

发布流程:

在现有的环境中对一定比例的服务进行升级,升级到新版本后,结合旧版本的其他服务一同提供服务,在新版本的的服务不出现错误时,再升级一定比例服务,以此类推,知道所有服务都升级完成。

发布流程图如下:

特点:

  • 用户体验影响小,灰度发布过程出现问题影响范围较小
  • 新版本功能逐步发布,可以逐步评估新版服务性能、稳定性和健康状态
  • 发布自动化程度不够,发布期间可能引发服务中断

        4)滚动发布

滚动发布是指每次只升级一个或多个服务,升级完成后加入生产环境,不断执行这个过程,直到集群中的全部升级成新版本。

滚动发布有几个参数

3 desired                 #设置副本数期望值
25% max surge             #设置更新时允许创建的最大副本数/比例,向上取整
25% max unavailable       #设置更新时允许销毁的最大副本数/比例,向下取整

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/180278.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker 部署日志平台出错汇总

第一次运行elasticsearch:8.11.1镜像&#xff0c;报错如下&#xff1a; [rootmaster ~]# docker run --name es03 --net elastic -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.11.1 docker: Error response from daemon: driver failed programmi…

SystemVerilog学习 (5)——接口

一、概述 验证一个设计需要经过几个步骤&#xff1a; 生成输入激励捕获输出响应决定对错和衡量进度 但是&#xff0c;我们首先需要一个合适的测试平台&#xff0c;并将它连接到设计上。 测试平台包裹着设计,发送激励并且捕获设计的输出。测试平台组成了设计周围的“真实世界”,…

ExoPlayer架构详解与源码分析(8)——Loader

系列文章目录 ExoPlayer架构详解与源码分析&#xff08;1&#xff09;——前言 ExoPlayer架构详解与源码分析&#xff08;2&#xff09;——Player ExoPlayer架构详解与源码分析&#xff08;3&#xff09;——Timeline ExoPlayer架构详解与源码分析&#xff08;4&#xff09;—…

嵌入式养成计划-53----ARM--串口通信

一百三十四、串口通信 134.1 串口的概念 串口&#xff08;UART&#xff09;&#xff1a;Universal asynchronous receiver transmitter (USART/UART)&#xff0c;通用异步接收发送器通过串口可以实现两个不同机器之间的信息交互串口通信属于总线通信的一种 134.2 总线的概念…

服务名无效。 请键入 NET HELPMSG 2185以获得更多的帮助

遇到的问题是MySQL服务没有。 因为net start 服务名&#xff0c;启动的是win下注册的服务。此时&#xff0c;我系统中并没有注册mysql到服务中。即下面没有mysql服务。 mysqld --install net start mysql

OpenCV入门2——图像视频的加载与展示一些API

文章目录 题目OpenCV创建显示窗口OpenCV加载显示图片题目 OpenCV保存文件利用OpenCV从摄像头采集视频从多媒体文件中读取视频帧将视频数据录制成多媒体文件OpenCV控制鼠标关于[np.uint8](https://stackoverflow.com/questions/68387192/what-is-np-uint8) OpenCV中的TrackBar控…

Python---数据序列中的公共方法

公共方法就是 支持大部分 数据 序列。 常见公共方法---简单 运算符描述支持的容器类型合并字符串、列表、元组*复制字符串、列表、元组in元素是否存在字符串、列表、元组、字典not in元素是否不存在字符串、列表、元组、字典 案例&#xff1a; 合并 代码&#xff1a; # …

微机原理_9

一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案。 1.当运算结果的最高位为1时&#xff0c;标志位(&#xff09; A. CF1 B. OF1 C. SF1 D. ZF1 2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可…

windows安装maven,配置环境变量

官网下载&#xff1a; 其他版本找 Other Releases 配置环境变量 1、解压缩之后开始配置环境变量 2、右键此电脑&#xff0c;选中属性->高级系统设置->高级->环境变量。 3、①和②任选一个都可 ①在系统变量那边增加MAVEN_HOME&#xff0c;路径是解压缩后的文件路径。…

如何使用 Github Action 管理 Issue

本文作者为 360 奇舞团前端开发工程师 Daryl 前言 很多小伙伴打开 github 上的仓库都只使用Code查看代码&#xff0c;或者只是把 github 当成一个代码仓库&#xff0c;但是 github 还提供了很多好用的功能。 其中&#xff0c;GitHub Action就是一个很好用的功能&#xff0c;本文…

双点重发布路由策略实验

任务&IP分配如下&#xff1a; 双点重发布实验 第一步&#xff1a;配置IP地址&环回地址 以R1为例&#xff0c;R2、R3、R4同理 interface GigabitEthernet 0/0/0 ip address 12.0.0.1 24 interface GigabitEthernet 0/0/1 ip address 13.0.0.1 24 interface LookBack …

[Unity3D] C# 十进制、二进制、十六进制 之间进制的转换

//十进制 --> 二进制 int data 100; string bin Convert.ToString(data, 2); // “1100100”//十进制 --> 十六进制 int data 100; string hex “”;hex Convert.ToString(data, 16); // “64” hex “0X” Convert.ToString(data, 16); // “0X64” hex string.…