[云原生2.] Kurbernetes资源管理 ---- (陈述式资源管理方式)

1. K8s管理资源的方法类别

1.1 陈述式资源管理方式

主要依赖命令行工具kubectl进行管理
可理解为使用一条命令和参数选项来实现资源的管理操作

1.2 声明式资源管理方式

主要依赖统一资源配置清单进行管理
可以理解为使用yaml配置文件的定义来实现资源的管理操作

1.3 GUI式资源管理方法

主要依赖图形化操作界面进行管理

2. 陈述式资源管理方式

k8s中文文档:http://docs.kubernetes.org.cn/683.html

2.1 命令行工具 ---- Kubelet

2.1.1 简介

kubectl 是官方的CLI命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为 apiserver 能识别的信息,进而实现管理 k8s 各种资源的一种有效途径

2.1.2 特性

  • 优点
    1.可以满足90%以上的使用场景
    2.对资源的增、删、查操作比较容易

  • 缺点
    1.命令冗长,复杂,难以记忆
    2.特定场景下,无法实现管理需求
    3.对资源的修改麻烦,需要patch来使用json串更改。

2.1.3 kubelet拓展命令

#kubectl 的命令大全
kubectl --help-h 
#查看k8s版本信息
kubectl version

在这里插入图片描述

#查看资源对象简写
kubectl api-resources

在这里插入图片描述

#查看集群信息
kubectl cluster-info

在这里插入图片描述

#node节点查看日志
journalctl -u kubectl -f

在这里插入图片描述

2.1.4 kubectl基本语法

kubectl [command] [Type] [NAME] [flags]
command:	子命令	用于操作kubernetes集群资源对象的命令	
TYPE:	资源对象的类型	区分大小写,能以单数,复数或者简写形式表示	
NAME:	资源对象的名称	区分大小写,如果不指定名称,系统则将返回属于TYPE的全部对象的列表	
flags:	子命令的可选参数	

2.1.5 Kubectl工具的自动补全

#二进制安装的k8s,kubectl工具没有自动补全功能(其他方式安装的未验证)
#可以使用以下方式开启命令自动补全
vim /etc/bashrcsource <(kubectl completion bash)

在这里插入图片描述在这里插入图片描述

2.2 k8s Service 的类型

2.2.1 NodePort

在这里插入图片描述
Service的端口号映射到每个Node的一个端口号上,这样集群中的任意Node都可以作为Service的访问入口地址,即NodeIP:NodePort
每个端口只能是一种服务,端口范围只能是 30000-32767

2.2.2 ClusterIP

默认值,它是Kubernetes系统自动分配的虚拟IP(Cluster IP:Port),只能在集群内部访问

2.2.3 LoadBalancer

在这里插入图片描述
LoadBalancerNodePort很相似,目的都是向外部暴露一个端口,区别在于LoadBalancer会在集群的外部再来做一个负载均衡设备,而这个设备需要外部环境支持的,外部服务发送到这个设备上的请求,会被设备负载之后转发到集群中

2.2.4 ExternalName

在这里插入图片描述
ExternalName类型的服务用于将集群外的服务定义为Kubernetes的集群的Service,并且通过externalName字段指定外部服务的地址,可以使用域名或IP格式,集群内的客户端应用通过访问这个Service就能访问外部服务了。

2.3 k8s Service 的端点类型

在这里插入图片描述
Service是通过标签选择器绑定Pod的标签来关联Pod的端点(Endpoint)。

2.3.1 Port

Service 的ClusterIP 使用的端口

2.3.2 NodePort

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

2.3.3 TargetPort

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

2.3.4 ContainerPort

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

K8S集群内部的客户端可以通过  http://clusterIP:port  -->  podIP:containerPortK8S集群外部的客户端可以通过  http://nodeIP:nodePort -->  podIP:containerPort

3. 陈述式资源管理方式的基础命令

3.1 创建

run为一次性的创建运行,删除后不会自动生成,没有pod控制器。

create创建的,删除后还会自动生成,有pod控制器,拥有副本集控制。

3.1.1 创建命名空间

kubectl create ns <name>
#示例
kubectl create ns scj

在这里插入图片描述

3.1.2 create子命令

kubectl create [-n <命名空间>] <资源类型> <资源名称> [选项]--image=镜像 --replicas=副本数 --port=容器端口
#示例
kubectl create service <service-name> --tcp=<port>:<target-port>kubectl create pod <pod-name> --image=<container-image>kubectl create deployment <deployment-name> --image=<container-image>

3.1.3 run子命令

#创建并运行
kubectl run <资源名称> --image=镜像 --replicas=副本数 --port=容器端口

3.2 get ---- 查看基本信息

#基本格式
kubectl get <resource> [-o wide|json|yaml] [-n namespace]
获取资源的相关信息,-n指定命令空间,-o指定输出格式
resource可以是具体资源名称,如pod nginx- xxx;也可以是资源类型,如pod; 或者all (仅展示几种核心资源,并不完整)--all-namespaces 或-A :表示显示所有命令空间,
--show-labels :显示所有标签
-l x:仅显示标签为x的资源
-l x=y:仅显示包含x标签,且值为y的资源

3.2.1 Kubernetes 集群组件的状态

kubectl get componentstatuses 
kubectl get cs #简写

在这里插入图片描述

get pods --show-labels
#查看有哪些标签,面试常问

3.2.2 命名空间

命名空间在 Kubernetes 中主要用于隔离和管理资源名称。

每个命名空间具有自己的资源名称空间,保证了资源名称的唯一性。

#获取当前集群中所有命名空间的列表kubectl get namespace 
kubectl get ns #简写

在这里插入图片描述

#获取命名空间中的所有资源的列表kubectl get all [-n namespace]
#不指定命名空间,则默认查看default命名空间

在这里插入图片描述

3.2.3 Service(服务)

kubectl get service
kubectl get svc 

在这里插入图片描述

3.2.4 pod信息

kubectl get pods [-n namespace] [-o wide|json|yaml]
kubectl get pods --all-namespaces -o wide

在这里插入图片描述

3.2.5 Node(节点)列表

kubectl get nodes

在这里插入图片描述

3.3 describe ---- 查看资源详细信息

#基本格式
kubectl describe [-n <命名空间>] <资源类型> <资源名称>
#示例
#先根据kubectl get pods -A,找到要查看的资源
kubectl describe pod etcd-master01 -n kube-system

在这里插入图片描述

3.4 logs ---- 查看日志

kubectl logs [-n <命名空间>] <Pod资源名称> [-c 容器名称] [-f] [-p]
#查看Pod容器的日志
选项对象功能
-n命名空间用于指定 Pod 所属的命名空间,如果不指定命名空间,将默认使用默认命名空间
-c容器名称,可选的容器参数用于指定要获取日志的容器名称,如果 Pod 中只有一个容器,可以省略此参数
-f可选的跟踪参数用于告诉命令持续输出日志
-p可选的先前参数用于获取已经终止的 Pod 的先前日志如果 Pod 重新创建或重新调度,该参数可以用来获取先前的日志
#举个例子
kubectl logs -n kube-system  kube-proxy-ggw6p

在这里插入图片描述

3.5 delete ---- 删除指定的资源

Pod没有重启的概念,重启的是容器 被自动删除和重新创建

#删除命名空间app
kubectl delete [-n <命名空间>] <资源类型> <资源名称>|--all [--force --grace-period=0]
#示例
kubectl delete pod nginx-764b95f4c5-7t65m 

在这里插入图片描述

#若pod无法删除, 总是处于terminate状态, 则要强行删除pod
kubectl delete pod <name> [-n namespace ] --force --grace-period=0#grace-period表示过渡存活期,默认30s,在删除pod之前允许POD慢慢终止其上的容器进程,从而优雅退出,0表示立即终止pod。

3.6 exec ---- 跨主机登录容器

kubectl exec可以跨主机登录容器,docker exec 只能在容器所在主机上登录。

kubectl exec -it [-n <命名空间>] <Pod资源名称> [-c 容器名称] sh|bash
#示例
kubectl exec -it  nginx-764b95f4c5-hsj59 sh

在这里插入图片描述

3.7 scale ---- replicas(副本数)

用于调整 Kubernetes 集群中 Deployment 或 StatefulSet 对象的副本数量

kubectl scale [-n <命名空间>] <deployment|statefulset> <资源名称> --replicas=副本数
#增加副本数(扩容)
kubectl scale deployment nginx --replicas=6

在这里插入图片描述

#减少副本数(缩容)
kubectl scale deployment nginx --replicas=1

在这里插入图片描述

kubectl scale deployment nginx --replicas=0
#reolicas=0等于清空

4. 项目的生命周期

创建–>发布–>更新–>回滚–>删除

4.1 创建-----kubectl create命令

创建并运行一个或多个容器镜像。

创建一个deploymentjob 来管理容器。

kubectl create --help
kubectl create service <svc资源类型> <svc资源名称> --tcp=<clusterIP的端口:容器的端口>
#举个例子 
#启动 nginx 实例,暴露容器端口 80,设置副本数 3
kubectl create deployment nginx --image=nginx:1.14 --port=80 --replicas=3kubectl get pods
kubectl get all

在这里插入图片描述

4.2 发布-----kubectl expose命令

将资源暴露为新的 Service。

kubectl expose --help
kubectl expose [-n <命名空间>] deployment <资源名称> --name <自定义svc资源名称> --type <svc资源类型> --port <clusterIP的端口> --targetPort <容器的端口>ClusterIP|NodePort|LoadBalancer|ExternalName
#示例
#为deployment的nginx创建service,
#并通过Service的80端口转发至容器的80端口上
#Service的名称为nginx-service,类型为NodePort
kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

在这里插入图片描述

#查看pod网络状态详细信息和 Service暴露的端口
kubectl get pods,svc -o wide#查看关联后端的节点
kubectl get endpoints#查看 service 的描述信息
kubectl describe svc nginx

在这里插入图片描述

curl 10.244.3.3:80
curl 10.244.3.4:80
curl 10.244.4.3:80curl 192.168.67.100:30724#在master01操作 查看访问日志
kubectl logs nginx-d9d8cf5c7-6zpc2
kubectl logs nginx-d9d8cf5c7-85rvh 
kubectl logs nginx-d9d8cf5c7-nffcz 

在这里插入图片描述

4.3 更新 ----- kubectl set命令

更改现有service的一些信息

kubectl set --help
#更新 Kubernetes 集群中某个 Deployment 的容器镜像
kubectl set image deployment <deployment资源名称> <容器名>=<镜像名>
#更改 Kubernetes 中服务对象的标签选择器
kubectl set selector service <svc资源名称> '标签key=value'
#示例#查看当前 nginx 的版本号
curl -I http://192.168.67.100:30724

在这里插入图片描述

#将nginx 版本更新为 1.15 版本
kubectl set image deployment/nginx nginx=nginx:1.15kubectl get pods,svc -o wide

在这里插入图片描述

#再次查看nginx版本号
curl -I 192.168.67.100:31134

在这里插入图片描述

4.4 回滚 ----- kubectl rollout 命令

#查看指定 deployment 资源的历史记录,包括版本号、更新时间和事件
kubectl rollout history deployment <deployment资源名称>#回滚
kubectl rollout undo deployment <deployment资源名称> [--to-revision=N]指定版本回滚#状态
kubectl rollout status deployment <deployment资源名称>
#示例
#查看历史版本
kubectl rollout history deployment/nginx #执行回滚到上一个版本
kubectl rollout undo deployment/nginx#检查回滚状态
kubectl rollout status deployment/nginx

在这里插入图片描述

#执行回滚到指定版本
kubectl rollout undo deployment/nginx --to-revision=1

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

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

相关文章

算法-双指针-简单-移动零

记录一下算法题的学习2 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2…

【分享】Excel“只读方式”的两种模式

查阅Excel表格的时候&#xff0c;担心不小心修改了内容&#xff0c;可以给Excel设置以“只读方式”打开&#xff0c;这样就算修改了内容也不能直接保存表格。Excel表格可以设置两种“只读方式”&#xff0c;一起来看看吧&#xff01; “只读方式” 1&#xff1a; 打开Excel表…

华为 Mate 60 Pro 拆解:陆制零件比率上升至47% | 百能云芯

近日&#xff0c;日经新闻联合研究公司Fomalhaut Techno Solutions对华为 Mate 60 Pro 进行了拆解&#xff0c;揭示了这款于8月发布的新型智能手机的成本结构。拆解结果显示&#xff0c;该手机的国产零部件比例达到了47%&#xff0c;相较于三年前的 Mate 40 Pro&#xff0c;提高…

S25FL256S介绍及FPGA实现思路

本文介绍 S25FL256S 这款 FLASH 芯片&#xff0c;并进行 FPGA 读写控制的实现&#xff08;编程思路及注意事项&#xff09;。 文章目录 S25FL-S 介绍管脚功能说明SPI 时钟模式SDRDDR 工作模式FLASH存储阵列&#xff08;地址空间映射&#xff09;常用寄存器及相关指令Status Reg…

Android 14 Beta 1

Android 14的第一个 Beta 版&#xff0c;围绕隐私、安全、性能、开发人员生产力和用户定制等核心主题构建&#xff0c;同时继续改进平板电脑、可折叠设备等大屏幕设备的体验。我们一直在完善 Android 14 的功能和稳定性方面取得稳步进展&#xff0c;现在是时候向开发者和早期采…

mysql之搭建MHA架构实现高可用

1、定义 全称是masterhigh avaliabulity。基于主库的高可用环境下可以实现主从复制及故障切换&#xff08;基于主从复制才能故障切换&#xff09; MHA最少要求一主两从&#xff0c;半同步复制模式 2、作用 解决mysql的单点故障问题。一旦主库崩溃&#xff0c;MHA可以在0-30…

Elasticsearch:检索增强生成 (Retrieval Augmented Generation -RAG)

作者&#xff1a;JOE MCELROY 什么是检索增强生成 (RAG) 以及该技术如何通过提供相关源知识作为上下文来帮助提高 LLMs 生成的响应的质量。 生成式人工智能最近取得了巨大的成功和令人兴奋的成果&#xff0c;其模型可以生成流畅的文本、逼真的图像&#xff0c;甚至视频。 就语…

二叉树的创建与遍历

目录 前言&#xff1a; 二叉树的概念与结构 二叉树的链式存储 二叉树的创建 二叉树的销毁 二叉树结点个数计算 二叉树叶子结点个数计算 二叉树第k层节点个数的计算 二叉树高度的计算 二叉树查找值为x的结点 二叉树的遍历 二叉树的前序遍历 二叉树的中序遍历 二叉树…

代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结

代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结 文章链接&#xff1a;两个字符串的删除操作、编辑距离、编辑距离总结 视频链接&#xff1a;两个字符串的删除操作、编辑距离 1. LeetCode 583. 两个字符串的删除操作 1.1 思…

计算机编程入门软件,计算机编程初学入门什么语言

计算机编程入门软件&#xff0c;计算机编程初学入门什么语言 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#xff0c;而且可以开发大型的软件&#xff0c;象如图这个实例就是…

科研学习|研究方法——逻辑回归系数的显著性检验(python实现)

1. 背景 回归方程与回归系数的显著性检验 2. statsmodels 库 statsmodels库可以用来做逻辑回归、线性回归。并且会在summary中给出显著性检验的结果。最终我们想要的就是如下图的报告。 3. 计算过程 如果我们使用的sklearn构建的逻辑回归就没有办法直接输出这个报告&#xff0c…

swiper垂直方向全屏实现鼠标滚轮滚动一下切换一屏

效果 20231116092014 添加mousewheelControl: true,这个属性即可 <div class"swiper-container"><div class"swiper-wrapper"><div class"swiper-slide" > <div class"" style"height: 100%; background-…

如何使用iPhone15在办公室观看家里电脑上的4k电影?

如何使用iPhone15在办公室观看家里电脑上的4k电影&#xff1f; 文章目录 如何使用iPhone15在办公室观看家里电脑上的4k电影&#xff1f;1.使用环境要求&#xff1a;2.下载群晖videostation&#xff1a;3.公网访问本地群晖videostation中的电影&#xff1a;4.公网条件下使用电脑…

jenkins+centos7上传发布net6+gitlab

工作中实践了一下jenkins的操作&#xff0c;所以记录一下这次经验&#xff0c;没有使用到docker 先看下成果&#xff1a; 选择发布项目 选择要发布的分支 构建中 发布成功 开始 首先安装好jenkins并注册自己的jenkins账号 因为我们的项目代码管理使用的是gitlab&#xff0c…

使用python电脑轻量级控制手机—adb命令和手机投屏

文章目录 一、通过无线连接手机和电脑二、使用adb命令轻量级控制手机二、使用scrcpy控制手机 通过电脑控制手机有多种方式如appnium等&#xff0c;本文介绍的是两种轻量级的方案&#xff0c;使用adb命令刚和手机投屏。 一、通过无线连接手机和电脑 1、手机设置 开发者选项—us…

【视觉SLAM十四讲学习笔记】第二讲——初识SLAM

专栏系列文章如下&#xff1a; 【视觉SLAM十四讲学习笔记】第一讲 一个机器人&#xff0c;如果想要探索某一块区域&#xff0c;它至少需要知道两件事&#xff1a; 我在什么地方——定位周围环境是什么样——建图 一方面需要明白自身的状态&#xff08;即位置&#xff09;&#…

Spring Boot 整合xxl-job实现分布式定时任务

xxl-job介绍 XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 xxl是xxl-job的开发者大众点评的许雪里名称的拼音开头。 设计思想 将调度行为抽象形成“调度…

高频CSS面试题

给大家推荐一个实用面试题库 1、前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;web前端面试题库 BFC 块级格式上下文(block format context)是页面一块独立的渲染区域&#xff0c;具有一套独立的渲染规则 内部的…

芯科科技推出新的8位MCU系列产品,扩展其强大的MCU平台

新的BB5系列为简单应用提供更多开发选择 中国&#xff0c;北京 - 2023年11月14日 – 致力于以安全、智能无线连接技术&#xff0c;建立更互联世界的全球领导厂商Silicon Labs&#xff08;亦称“芯科科技”&#xff0c;NASDAQ&#xff1a;SLAB&#xff09;&#xff0c;今日宣布…

Elasticsearch的配置学习笔记

文/朱季谦 Elasticsearch是一个基于Lucene的搜索服务器。它提供一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口&#xff0c;Elasticsearch是用Java语言开发的。 关于Elasticsearch系列笔记&#xff0c;主要从Elasticsearch的配置、核心组件、架构设计、使…