kubectl陈述式资源管理

embedded/2024/11/14 19:39:49/

目录

概念

kubectl的基础命令

*每天常用的查看集群的基本信息

deployment的部署方式

deployment 的特点

基于deployment创建pod

手动缩容

service的类型以及工作原理

创建service

service的类型

修改service的类型为nodeport

**nodeport实验:对外暴露端口

滚动更新以及回滚

对版本进行滚动更新

回滚

销毁


概念

kubectl 是陈述式资源管理方式(命令行)   管理就是增删改查

资源对象包含pod、控制器、service,我们创建资源对象时会用声明式,用yaml文件写的

陈述式命令的开头是 kubectl 

k8s项目的生命周期:发布——修改——更新——回滚——销毁

kubectl的基础命令

kubectl version  查看集群的版本

kubectl api-resources  查看资源对象的版本和简写

kubectl cluster-info  查看集群的信息

journalctl -u kubelet -f 和 tail -f /var/log/messages  查看集群的日志

*每天常用的查看集群的基本信息

kubectl get cs  查看集群组件的健康状态

kubectl get node  查看节点的状态

kubectl get pod  查看默认命名空间里面当前运行的pod   默认命名空间是default

了解即可:

name:pod的名称

ready:1/1 表示正常状态

status :running  表示运行   

只有1/1和running才表示pod属于正常状态

restarts 表示pod的重启次数。因为自愈功能,pod在非正常状态下,会自动进行重启,状态正常之后就不会再进行重启。    

AGE:当前pod的运行时间

kubectl create ns xy102 创建命名空间

kubectl delete ns xy102  删除命名空间

kubectl get all  查看当前命名空间的所有资源

kubectl get pod -o wide  查看pod的详细信息 (pod被部署在哪个节点上)

deployment的部署方式

资源对象的部署方式叫做deployment。它是无状态部署方式:pod的名称是随机生成的。

deployment 的特点

1.创建时可以指定副本数(pod的数量)、

2.滚动更新:先更新一个,更新好了之后再更新余下的pod

3.自我修复:默认的策略就是重启容器,删除pod相当于重启pod

4.支持回滚:如果更新有问题,可以恢复到上一个版本

5.支持pod数量的扩容和缩容(手动)

基于deployment创建pod

首先要kubectl create ns xy102 创建命名空间

kubectl create deployment test1 --image=nginx:1.22 --replicas=3 -n xy102  基于deployment创建的pod

kubectl delete pod test1-86776958-5br7q -n xy102  重启pod,不能删除

基于 deployment创建的pod, delete pod 相当于重启,不能删除pod

kubectl run nginx1 --image=nginx:1.22 -n xy102   run直接创建pod  删除这个就是真的删除

kubectl describe pod -n xy102 test1-86776958-5br7q  查看这个pod的详细情况

创建pod流程:调度策略(把pod部署到哪个节点上)——拉取镜像——创建容器——运行容器

kubectl describe deployments.apps -n xy102 test1 查看创建的资源对象的信息

kubectl logs -f test1-86776958-5br7q -n xy102 查看pod的日志

kubectl exec -it -n xy102 test1-86776958-5br7q bash   进入pod内的容器

手动缩容

方式一:命令行: kubectl scale deployment nginx1 -n xy102 --replicas=1

方式二:在yaml文件:kubectl edit deployment nginx1 -n xy102  

进入之后修改replicas即可

注:pod的ip地址随着pod的生命周期有可能会发生变化,内部访问我们通过pod的ip可以直接访问,外部访问不会受到影响。

service的类型以及工作原理

service如何与pod进行关联,这种关联不受pod的ip地址的变化影响

创建service

kubectl expose deployment nginx1 --port=80 --target-port=80 --name=nginx - n xy102

注:前一个port是集群的service的端口,是和容器内的80做的映射

kubectl get svc  查看service

service的类型

1.ClusterIP 默认类型,提供集群内部的一个虚拟ip地址。是用来让其他的pod来访问的,pod可以通过这个service的ip地址直接访问到内部的容器。只能内部访问,外部不能访问。是内部组件通信使用。(对内)

2. NodePort:在每个节点(集群的所有节点)都会开放一个端口,外部就可以通过本机的ip+端口(nodeport端口)访问pod内的容器服务。每个节点nodeport的端口都是一致的,端口是有范围的:30000-32767  (对外)

修改service的类型为nodeport

kubectl edit svc -n xy102 nginx1

此时80是service端口   31151是所有节点上开放的端口(所有的节点主机本机ip都能访问)

访问的流程:在宿主机上开放的端口31151——service的80端口——pod里面容器的80端口

**nodeport实验:对外暴露端口

流程图:

deployment的标签是app=nginx1

由于service匹配的标签是app=nginx1,只要资源对象的标签包含app=nginx1,所以都可以通过service进行转发

kubectl edit pod nginx2 -n xy102 进入yaml文件

把labels指向app=nginx1

实验结果:

此时访问本机的31151端口 就能访问到所有的pod

总结:nodeport:service根据标签来匹配对应的pod,只要标签匹配,都能转发打到指定的pod内的容器。

3.LoadBalancer:云平台的运营商(阿里云、腾讯云)提供loadbalancer的地址     地址需要付费

提供之后也是通过访问负载均衡的地址,来实现pod的流量转发

4.ExternalName:把service的名称映射到DNS的域名上。就是让pod去访问集群外部的资源,而且设置为此类型service将不能提供四层负载均衡服务。

滚动更新以及回滚

对版本进行滚动更新

kubectl set image deployment/nginx1 nginx=nginx:1.18 -n xy102

此时 kubectl get pod -o wide -n xy102 即可查看是否正则更新

kubectl rollout history deployment/nginx1 -n xy102  查看还原点

数字大小决定了距离上次更新操作的远近,数字越大,就是最近的一次操作

kubectl set image deployment/nginx1 nginx=nginx:1.20 --record -n xy102       record添加更新记录

回滚

kubectl rollout undo  deployment/nginx1 --to-revision=5 -n xy102 回滚

销毁

所以基于deployment创建的资源对象的pod如果要删除,首先要先删除deployment,然后再删除service,最后再删除命名空间。


http://www.ppmy.cn/embedded/102306.html

相关文章

Windows Edge 兼容性问题修复

​ 大家好,我是程序员小羊! 前言: Windows Edge 浏览器自2015年发布以来,经历了多次更新与优化,尤其在2020年基于 Chromium 引擎的新版 Edge浏览器发布后,其功能和兼容性大幅提升。然而,尽管如此…

FFmpeg的入门实践系列四(AVS)

欢迎诸位来阅读在下的博文~ 在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力 文章目录 前期博客参考书籍一、AVS简介二、基于FFmpeg配置AVS2 前期博客 FFmpeg的入门实践系列一(环境搭建) FFmpeg的入门实践系列…

美国高防服务器测评

美国高防服务器通常具有出色的硬件配置和网络性能,以及强大的DDoS防御能力。rak小编为您整理发布美国高防服务器测评。 美国高防服务器因其地理位置和网络基础设施的优势,通常被认为在防御分布式拒绝服务(DDoS)攻击方面具有较高的能力。面对日益增长的网…

vue面试题十九

一、在Vue 3中,如何处理事件?与Vue 2相比有什么变化? 在Vue 3中,事件处理是一个核心概念,它允许开发者创建交互式的用户界面。Vue 3中的事件处理机制与Vue 2相比,在细节和性能上都有所提升和变化。以下是对…

filter过滤器和reduce求和以及

1. filter()过滤器 filter() 是 JavaScript 数组的一个方法&#xff0c;而不是 Vue.js 或 UniApp 特有的过滤器。filter() 方法用于创建一个新数组&#xff0c;其包含通过所提供函数实现的测试的所有元素。 <template>{{sum}} </template><script setup>im…

Python酷库之旅-第三方库Pandas(106)

目录 一、用法精讲 461、pandas.DataFrame.lt方法 461-1、语法 461-2、参数 461-3、功能 461-4、返回值 461-5、说明 461-6、用法 461-6-1、数据准备 461-6-2、代码示例 461-6-3、结果输出 462、pandas.DataFrame.gt方法 462-1、语法 462-2、参数 462-3、功能 …

TCP并发服务器多线程和多进程方式以及几种IO模型

1. 阻塞 I/O&#xff08;Blocking I/O&#xff09; 在阻塞 I/O 模型中&#xff0c;当应用程序发起 I/O 操作时&#xff0c;整个进程会被阻塞&#xff0c;直到操作完成。在这个过程中&#xff0c;应用程序无法执行其他任务&#xff0c;必须等待 I/O 操作的完成。 特点&#xf…

什么是微服务?

在这个日益数字化和竞争激烈的时代&#xff0c;企业对软件的敏捷性、可维护性和可扩展性的要求越来越高&#xff0c;在这种需求下微服务孕育而生&#xff0c;微服务架构提供了一种适应变化的灵活方式&#xff0c;使企业能够更加敏捷地创新、交付价值&#xff0c;并在技术和业务…