Kubernetes 的资源管理方式
集群架构
Docker 是每一个节点(包括 Master 节点和 Node 节点)的运行时环境。
kubelet 负责控制所有容器的启动和停止等,保证每个节点(包括 Master 节点和 Node 节点)正常工作,并且帮助 Node 节点和 Master 节点进行交互。
Master 节点的关键组件:
- kubelet(监工):所有节点必备的。控制当前节点所有 Pod 的生命周期以及与 api-server 交互等工作。
- kube-api-server:负责接收所有请求。集群内对集群的任何修改都是通过命令行、UI 将请求发给 api-server 才能执行的。api-server 是整个集群操作对内、对外的唯一入口,不包含我们后来部署应用暴露端口的方式。
- kube-proxy:整个节点的网络流量负责。
- cri:容器运行时环境(如:Docker 、Podman 等)。
Node 节点的关键组件:
- kubelet(监工):所有节点必备的。控制当前节点所有 Pod 的生命周期以及与 api-server 交互等工作。
- kube-proxy:整个节点的网络流量负责。
- cri:容器运行时环境(如:Docker 、Podman 等)。
资源管理方式
① 命令式对象管理:直接通过命令去操作 Kubernetes 的资源。
kubectl run nginx-pod --image=nginx:1.17.1 --port=80
② 命令式对象配置:通过命令配置和配置文件去操作 Kubernetes 的资源。
kubectl create/patch/delete -f nginx-pod.yaml
③ 声明式对象配置:通过 apply 命令和配置文件去操作 Kubernetes 的资源。
kubectl apply -f nginx-pod.yaml
类型 | 操作 | 适用场景 | 优点 | 缺点 |
命令式对象管理 | 对象 | 测试 | 简单 | 只能操作活动对象,无法审计、跟踪 |
命令式对象配置 | 文件 | 开发 | 可以审计、跟踪 | 项目大的时候,配置文件多,操作麻烦 |
声明式对象配置 | 目录 | 开发 | 支持目录操作 | 意外情况下难以调试 |
命令式对象管理
kubectl 命令
- kubectl 是 Kubernetes 集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署。
参数:
- command:指定要对资源执行的操作,如:create、get 、delete 等。
- type:指定资源的类型,如:deployment 、pod 、service 等。
- name:指定资源的名称,名称大小写敏感。
- flags:指定额外的可选参数。
[root@k8s-master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-65c4bffcb6-f9b55 1/1 Running 0 81m
[root@k8s-master ~]# kubectl get pod nginx-65c4bffcb6-f9b55 -o yaml
apiVersion: v1
kind: Pod
metadata:annotations:cni.projectcalico.org/containerID: c1ccb59bf2b30c580de0ee177f1eb122047ce0b066df816b434c559c0b89c094cni.projectcalico.org/podIP: 10.244.169.129/32cni.projectcalico.org/podIPs: 10.244.169.129/32creationTimestamp: "2024-12-27T10:04:42Z"generateName: nginx-65c4bffcb6-labels:app: nginxpod-template-hash: 65c4bffcb6name: nginx-65c4bffcb6-f9b55namespace: defaultownerReferences:- apiVersion: apps/v1blockOwnerDeletion: truecontroller: truekind: ReplicaSetname: nginx-65c4bffcb6uid: c04281de-fdb0-4f23-8309-8c4adb140977resourceVersion: "9026"uid: 4a282996-80b5-4cc8-85a1-1ccd0c22a090
spec:containers:- image: nginx:1.14-alpineimagePullPolicy: IfNotPresentname: nginxresources: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: FilevolumeMounts:- mountPath: /var/run/secrets/kubernetes.io/serviceaccountname: kube-api-access-mz6pkreadOnly: truednsPolicy: ClusterFirstenableServiceLinks: truenodeName: k8s-node2preemptionPolicy: PreemptLowerPrioritypriority: 0restartPolicy: AlwaysschedulerName: default-schedulersecurityContext: {}serviceAccount: defaultserviceAccountName: defaultterminationGracePeriodSeconds: 30tolerations:- effect: NoExecutekey: node.kubernetes.io/not-readyoperator: ExiststolerationSeconds: 300- effect: NoExecutekey: node.kubernetes.io/unreachableoperator: ExiststolerationSeconds: 300volumes:- name: kube-api-access-mz6pkprojected:defaultMode: 420sources:- serviceAccountToken:expirationSeconds: 3607path: token- configMap:items:- key: ca.crtpath: ca.crtname: kube-root-ca.crt- downwardAPI:items:- fieldRef:apiVersion: v1fieldPath: metadata.namespacepath: namespace
status:conditions:- lastProbeTime: nulllastTransitionTime: "2024-12-27T10:04:42Z"status: "True"type: Initialized- lastProbeTime: nulllastTransitionTime: "2024-12-27T10:04:58Z"status: "True"type: Ready- lastProbeTime: nulllastTransitionTime: "2024-12-27T10:04:58Z"status: "True"type: ContainersReady- lastProbeTime: nulllastTransitionTime: "2024-12-27T10:04:42Z"status: "True"type: PodScheduledcontainerStatuses:- containerID: docker://d10a9daced59d3ab91e06aed7456808c727d450fdbb7b21be5180957f37e16baimage: nginx:1.14-alpineimageID: docker-pullable://nginx@sha256:485b610fefec7ff6c463ced9623314a04ed67e3945b9c08d7e53a47f6d108dc7lastState: {}name: nginxready: truerestartCount: 0started: truestate:running:startedAt: "2024-12-27T10:04:57Z"hostIP: 192.168.58.233phase: RunningpodIP: 10.244.169.129podIPs:- ip: 10.244.169.129qosClass: BestEffortstartTime: "2024-12-27T10:04:42Z"
- 基本命令:
命令 | 翻译 | 命令作用 |
create | 创建 | 创建一个资源 |
edit | 编辑 | 编辑一个资源 |
get | 获取 | 获取一个资源 |
patch | 更新 | 更新一个资源 |
delete | 删除 | 删除一个资源 |
explain | 解释 | 展示资源文档 |
- 运行和调试:
命令 | 翻译 | 命令作用 |
run | 运行 | 在集群中运行一个指定的镜像 |
expose | 暴露 | 暴露资源为 Service |
describe | 描述 | 显示资源内部信息 |
logs | 日志 | 输出容器在 Pod 中的日志 |
attach | 缠绕 | 进入运行中的容器 |
exec | 执行 | 执行容器中的一个命令 |
cp | 复制 | 在 Pod 内外复制文件 |
rollout | 首次展示 | 管理资源的发布 |
scale | 规模 | 扩(缩)容 Pod 的数量 |
autoscale | 自动调整 | 自动调整 Pod 的数量 |
- 高级命令:
命令 | 翻译 | 命令作用 |
apply | 应用 | 通过文件对资源进行配置 |
label | 标签 | 更新资源上的标签 |
- 其他命令:
命令 | 翻译 | 命令作用 |
cluster-info | 集群信息 | 显示集群信息 |
version | 版本 | 显示当前 Client 和 Server 的版本 |
资源类型(type)
- Kubernetes 中所有的内容都抽象为资源,可以通过下面的命令进行查看:
[root@k8s-master ~]# kubectl api-resources
- 经常使用的资源如下所示:
- 集群级别资源:
资源名称 | 缩写 | 资源作用 |
nodes | no | 集群组成部分 |
namespaces | ns | 隔离 Pod |
- Pod资源:
资源名称 | 缩写 | 资源作用 |
Pods | po | 装载容器 |
- Pod资源控制器:
资源名称 | 缩写 | 资源作用 |
replicationcontrollers | rc | 控制 Pod 资源 |
replicasets | rs | 控制 Pod 资源 |
deployments | deploy | 控制 Pod 资源 |
daemonsets | ds | 控制 Pod 资源 |
jobs | 控制 Pod 资源 | |
cronjobs | cj | 控制 Pod 资源 |
horizontalpodautoscalers | hpa | 控制 Pod 资源 |
statefulsets | sts | 控制 Pod 资源 |
- 服务发现资源:
资源名称 | 缩写 | 资源作用 |
services | svc | 统一 Pod 对外接口 |
ingress | ing | 统一 Pod 对外接口 |
- 存储资源:
资源名称 | 缩写 | 资源作用 |
volumeattachments | 存储 | |
persistentvolumes | pv | 存储 |
persistentvolumeclaims | pvc | 存储 |
- 配置资源:
资源名称 | 缩写 | 资源作用 |
configmaps | cm | 配置 |
secrets | 配置 |
查看,创建,删除名称空间
[root@k8s-master ~]# kubectl get ns
NAME STATUS AGE
default Active 46h
kube-node-lease Active 46h
kube-public Active 46h
kube-system Active 46h
[root@k8s-master ~]# kubectl create ns dev
namespace/dev created
[root@k8s-master ~]# kubectl get ns
NAME STATUS AGE
default Active 46h
dev Active 2s
kube-node-lease Active 46h
kube-public Active 46h
kube-system Active 46h
[root@k8s-master ~]# kubectl delete ns dev
namespace "dev" deleted
[root@k8s-master ~]# kubectl get ns
NAME STATUS AGE
default Active 46h
kube-node-lease Active 46h
kube-public Active 46h
kube-system Active 46h
相关文章:
Kubernetes 的资源管理方式
集群架构 Docker 是每一个节点(包括 Master 节点和 Node 节点)的运行时环境。 kubelet 负责控制所有容器的启动和停止等,保证每个节点(包括 Master 节点和 Node 节点)正常工作,并且帮助 Node 节点和 Maste…...

layui动态拼接生成下拉框验证必填项失效问题
利用 jQuery 动态拼接下拉框时,lay-verify"required" 失效了,有以下几种原因。 1. <form></form>标签 加入 layui 类,class"layui-form" 。提交按钮上加自动提交,lay-submit ""; 。需…...
VUE3+VITE简单的跨域代理配置
出于安全考虑,未设置前端白名单,前端开发时,需要配置代理。 在本地创建一个虚拟服务器,发送请求数据,同时接受请求的数据, 利用服务器与服务器间,交互,不会有跨域问题,也…...

Xdebug
1、开启xdebug扩展 2、修改一下php.ini文件 xdebug.remote_enable 1 xdebug.remote_autostart 13、vscode安装插件php debug 4、生成launch.json文件,好像啥都不用改 5、vscode没有配置php路径的,需要去配置: 6、发起请求 8、代码断…...

IDEA | SpringBoot 项目中使用 Apifox 上传接口
目录 1 安装 Apifox Helper 插件2 获取 Apifox 的 API 访问令牌3 IDEA 中设置 API 访问令牌4 IDEA 中上传接口5 常见问题5.1 如何自动设置目录名5.2 如何自动设置接口名5.3 如何更改上传位置 Apifox 官方指南: https://apifox.com/help/applications-and-p…...
列表分页返回对象
列表分页返回对象 仅针对于新项目,因为一般进入公司后项目都是已经搭建好的,只需要在原有框架基础上操作就可以了,但是遇到从0开始的项目并且还没有架构需要自己搭框架的时候就需要自己想办法找各种封装格式。 下面记录分页列表返回的封装格式…...

微软edge浏览器 v131.0.2903.99便携版
前言 Microsoft Edge浏览器是个新浏览器,它用起来很简单,界面也很清爽。这个浏览器功能特别多,里面还带了微软的小助手Contana,能帮用户做不少贴心的事儿。它支持安装各种小工具(插件),还能在网…...
Prometheus 专栏 —— Prometheus入门介绍
Prometheus 是? Prometheus 是一个开源的服务监控系统和时序数据库,主要用于收集、存储、查询和告警时间序列数据,这些数据通常反映了系统或者应用的状态或性能 Prometheus 的基本功能是? 数据采集数据存储数据查询告警通知 Prometheus 监控核心组件?…...

元宇宙在教育行业主要有哪些应用场景?
近两年来,元宇宙风潮在全球范围内迅速掀起了一股新的浪潮,“元宇宙”已成为各行各业探索新发展方向的热门话题,教育行业亦不例外。那么元宇宙在教育行业主要有哪些应用场景呢? 以下为主要适用场景: 课程实践ÿ…...

JZ31 栈的压入、弹出序列
题目来源:栈的压入、弹出序列_牛客题霸_牛客网 题目:如下 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序…...

电脑缺失libcurl.dll怎么解决?详解电脑libcurl.dll文件丢失问题
一、libcurl.dll文件丢失的原因 libcurl.dll是一个用于处理URL传输的库文件,广泛应用于各种基于网络的应用程序。当这个文件丢失时,可能会导致相关应用程序无法正常运行。以下是libcurl.dll文件丢失的一些常见原因: 软件安装或卸载不完整&a…...

Ribbon、Nacos
目录 Ribbon 常见负载算法 切换负载均衡算法 Nacos注册中心 下载和运行 微服务模块接入注册中心 consumer-80模块 配置类 Controller Nacos配置中心 Nacos分类配置(实现配置隔离) DataID方案 Group方案 Namespace方案 总结 Ribbon Ribbon…...

SpringCloudAlibaba实战入门之路由网关Gateway初体验(十一)
Spring Cloud 原先整合 Zuul 作为网关组件,Zuul 由 Netflix 公司提供的,现在已经不维护了。后面 Netflix 公司又出来了一个 Zuul2.0 网关,但由于一直没有发布稳定版本,所以 Spring Cloud 等不及了就自己推出一个网关,已经不打算整合 zuul2.0 了。 一、什么是网关 1、顾明…...

【C语言练习(18)—指针传递参数练习】
C语言练习(18) 文章目录 C语言练习(18)前言问题问题解析 前言 指针的使用很方便参数之间的传递,通过交换数字,来练习函数之间指针传递数据。 问题 利用函数交换两个数字的大小 问题解析 例如a5;b10;想…...

外网访问 Docker 容器的可视化管理工具 DockerUI
DockerUI 是一个 docker 容器镜像的可视化图形化管理工具,DockerUI 可以用来轻松构建、管理和维护 docker 环境。让用户维护起来更方便。 本文就介绍如何安装使用 DockerUI 并结合路由侠内网穿透来访问 DockerUI。 第一步,安装 DockerUI 1,…...

Edge SCDN酷盾安全重塑高效安全内容分发新生态
在数字化浪潮不断推进的今天,互联网内容的分发效率与安全性已成为企业业务发展的关键要素。酷盾安全推出的Edge Secure Content Delivery Network(Edge SCDN),不仅集成了分布式DDoS防护、CC防护、WAF防护及BOT行为智能分析等安全加…...

NodeRed使用心得,实现增删改查等
使用场景介绍 在VUE中使用nodeRed实现对节点的 增删改查等功能,且储存成功之后下点击时启动对应流程 安装与配置 1.安装NodeRed npm install -g --unsafe-perm node-red 安装完成后,你可以通过运行以下命令来启动Node-RED node-red-start2. 配置文件 N…...

【docker系列】打造个人私有网盘zfile
1. 介绍 是一个适用于个人的在线网盘(列目录)程序,可以将你各个存储类型的存储源,统一到一个网页中查看、预览、维护,再也不用去登录各种各样的网页登录后管理文件 2. 需要环境 2.1 硬件需求 CPU:至少1核 内存:推荐…...

协议幻变者:DeviceNet转ModbusTCP网关开启机器手臂智能新纪元
技术背景DeviceNet是一种广泛应用于工业自动化领域的现场总线标准,它能够实现控制器与现场设备之间的高效通信,常用于连接各种传感器、执行器以及其他工业设备,如机器人、电机驱动器等,具有实时性强、可靠性高的特点。而ModbusTCP…...

[计算机网络]OSPF协议
开放最短路径优先OSPF 1)OSPF的工作方式 1>和谁交换消息 使用洪泛法,向本自治系统的所有路由器发送消息。 2>交换什么消息 发送的消息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。 链路状态就是说…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...

MeshGPT 笔记
[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭!_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...

英国云服务器上安装宝塔面板(BT Panel)
在英国云服务器上安装宝塔面板(BT Panel) 是完全可行的,尤其适合需要远程管理Linux服务器、快速部署网站、数据库、FTP、SSL证书等服务的用户。宝塔面板以其可视化操作界面和强大的功能广受国内用户欢迎,虽然官方主要面向中国大陆…...
Linux中INADDR_ANY详解
在Linux网络编程中,INADDR_ANY 是一个特殊的IPv4地址常量(定义在 <netinet/in.h> 头文件中),用于表示绑定到所有可用网络接口的地址。它是服务器程序中的常见用法,允许套接字监听所有本地IP地址上的连接请求。 关…...
中国政务数据安全建设细化及市场需求分析
(基于新《政务数据共享条例》及相关法规) 一、引言 近年来,中国政府高度重视数字政府建设和数据要素市场化配置改革。《政务数据共享条例》(以下简称“《共享条例》”)的发布,与《中华人民共和国数据安全法》(以下简称“《数据安全法》”)、《中华人民共和国个人信息…...

关于 ffmpeg设置摄像头报错“Could not set video options” 的解决方法
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/148515355 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...