ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

使用 Meshery 设计模式在 Kubernetes 中部署 Node Feature Discovery

使用 Meshery 设计模式在 Kubernetes 中部署 Node Feature Discovery 云原生微服务运维DevOps【免费下载链接】mesheryMeshery, the cloud native manager项目地址https://gitcode.com/GitHub_Trending/me/meshery点击查看免费下载导读本文围绕 Meshery 目录Catalog中发布的 node-feature-discovery 设计模式展开讲解如何借助 Meshery 将 Kubernetes Node Feature DiscoveryNFD作为可视化设计模式导入、部署与定制。读者将掌握 NFD 的 master / worker / gc 三组件架构、RBAC 与 CRD 模型、以及通过mesheryctl design import一键导入该模式的具体操作方式。模式概览NFD 是什么NFD 是 Kubernetes 的一个官方 add-on用于检测每个节点的硬件特性如 CPU 指令集、内存、网卡、GPU、内核模块等和系统配置信息并把检测到的特性以**节点标签node labels**的形式对外通告。NFD 提供了灵活的配置和扩展点可以覆盖厂商级、应用级的各种自定义节点打标需求。在 Meshery 中该能力被打包为一个可导入的设计模式Design其元数据定义在 docs/catalog/workloads/736a8f97-c3f8-4481-888a-1eff27414caa.md模式版本0.0.1兼容 Kubernetes模式的完整设计文件位于 docs/data/catalog/736a8f97-c3f8-4481-888a-1eff27414caa/0.0.1/design.yml模式实际内容基于 NFD v0.16.0镜像registry.k8s.io/nfd/node-feature-discovery:v0.16.0与 Kubernetes v1.32.0-alpha.3 模型生成。注意官方文档指出 NFD 存在若干 Caveats 与使用注意事项如标签数量限制、拓扑感知调度依赖等生产环境部署前请务必评估官方 NFD v0.16 的 introduction 与相关说明本文不展开外部链接只聚焦仓库内可见的模式内容。设计模式包含的核心组件从 design.yml 的components数组可以看到该模式将 NFD 的完整部署拆解为多个可编排的组件包括三个核心工作负载与配套的 RBAC、CRD 与配置资源组件Kind作用node-feature-discovery-masterDeployment汇总各节点 worker 上报的特性统一决策并写节点标签/污点node-feature-discovery-workerDaemonSet在每个节点上实际执行特性探测向 master 上报node-feature-discovery-gcDeployment周期清理过期的 NodeFeature 资源GC 回收三个 ServiceAccount / Role / RoleBinding / ClusterRole / ClusterRoleBindingRBAC为上述工作负载授予最小化 API 权限nodefeatures.nfd.k8s-sigs.io等 CRDCustomResourceDefinition提供 NodeFeature / NodeFeatureRule / NodeFeatureGroup 三类自定义资源node-feature-discovery-master-conf/worker-confConfigMapmaster 与 worker 的配置文件nfd-master.conf/nfd-worker.confmasterNFD 控制中枢master 以 Deployment 方式部署replicas: 1通过下列参数控制行为-crd-controllertrue -feature-gatesNodeFeatureAPItrue -feature-gatesNodeFeatureGroupAPIfalse -metrics8081-crd-controllertrue启用 CRD 控制器使 master 可以把 worker 上报的特性写入NodeFeature等自定义资源NodeFeatureAPItrue/NodeFeatureGroupAPIfalse在 NFD v0.16 中分别开关 NodeFeature 与 NodeFeatureGroup 两个 API本模式默认关闭 Group API对外暴露grpc(8080)与metrics(8081)两个端口并通过 gRPC 健康检查livenessProbe/readinessProbe指向 8082 端口间隔 10s保障可用性。调度上master 配置了 nodeAffinitypreferredDuringSchedulingIgnoredDuringExecution倾向调度到带node-role.kubernetes.io/master或node-role.kubernetes.io/control-plane标签的控制面节点并携带对应 toleration 以容忍控制面节点的NoSchedule污点。worker每节点探测代理worker 以 DaemonSet 形式部署保证每个节点都运行一个探测实例。它通过 hostPath 挂载主机的关键路径来读取硬件与系统信息挂载点宿主路径用途/host-boot/boot读取内核镜像与启动配置/host-etc/os-release/etc/os-release读取发行版信息/host-sys/sys读取 sysfs 硬件信息/host-usr/lib、/host-lib/usr/lib、/lib探测内核模块等/host-proc/swaps/proc/swaps检测 swapsource.d/、features.d//etc/kubernetes/node-feature-discovery/...自定义 hook 与特性脚本扩展点worker 使用ClusterFirstWithHostNetDNS 策略并注入NODE_NAME、POD_NAME、POD_UID三个字段环境变量在NodeFeatureAPItrue时worker 会为所在节点创建NodeFeature资源对应 Role 只授予对nodefeatures的create/get/update权限。gc过期特性回收gc 以 Deploymentreplicas: 1运行通过-gc-interval1h控制回收周期。其 ClusterRole 授予对 nodes 的list/watch对nodes/proxy的get对topology.node.k8s.io的noderesourcetopologies的delete/list对nfd.k8s-sigs.io的nodefeatures的delete/list。模式中的自定义资源CRD模型设计模式中内置了三个 NFD 自定义资源的 OpenAPI schema供 Meshery 可视化编排与校验NodeFeatureNamespacednodefeatures.nfd.k8s-sigs.io核心字段为spec.features包含三类特性数据flags布尔型特征集合只含名称、无取值attributes字符串值特征集合如 CPU 型号、内核版本instances实例型特征集合每个实例如一块网卡拥有多个 attribute 键值对。NodeFeatureRuleClusternodefeaturerules.nfd.k8s-sigs.io用于基于特性做节点自定义打标签、加注解、加污点、声明扩展资源。每条 rule 支持matchFeatures/matchAny对特性做匹配操作符包括In、NotIn、InRegexp、Exists、DoesNotExist、Gt、Lt、GtLt、IsTrue、IsFalse命中后的输出labels、annotations、taintsNoSchedule/PreferNoSchedule/NoExecute、extendedResources、vars以及labelsTemplate/varsTemplate动态模板。NodeFeatureGroupNamespaced可选nodefeaturegroups.nfd.k8s-sigs.ioshortNamenfg通过featureGroupRules把符合条件的节点归组并在status.nodes中列出匹配节点。本模式默认NodeFeatureGroupAPIfalse如需要可自行开启对应 feature gate。安全基线最小权限与加固该模式对三个容器统一应用了严格的安全上下文runAsNonRoot: true禁止以 root 运行readOnlyRootFilesystem: true根文件系统只读capabilities.drop: [ALL]丢弃全部 Linux capabilitiesallowPrivilegeEscalation: false禁止权限提升。资源请求/限制按角色区分master 为100m/128Mi请求、300m/4Gi上限worker 为5m/64Mi请求、200m/512Mi上限gc 为10m/128Mi请求、20m/1Gi上限保证在声明式模式下即可预览每一份资源配额。RBAC 全部采用最小权限设计例如 master 的 ClusterRole 只包含对 nodes、nodefeatures 等的get/patch/update/list/watch权限以及针对协调锁nfd-master.nfd.kubernetes.io的 lease 操作。在 Meshery 中导入与使用该模式目录条目docs/catalog/workloads/736a8f97-c3f8-4481-888a-1eff27414caa.md中声明了安装方式使用 mesheryctl 导入设计文件命令格式为mesheryctl design import -f 设计文件路径或 URL -s source-type -n name对应的落地实现位于 mesheryctl/internal/cli/root/design/import.go-f指定本地文件路径或远程 URL源码通过utils.IsValidUrl(file)判断走文件还是 URL 分支-s可选地指定源类型支持Helm Chart、Kubernetes Manifest、Meshery Design、Docker Compose-n指定设计名称缺省时使用文件名命令最终向/api/pattern/import发起 POST服务端返回导入成功的设计及其 IDutils.TruncateID(pattern.ID.String())。从 mesheryctl/internal/cli/root/design/import.go 中还可以看到对设计格式的约束支持 YAML 与 TGZ仅 Helm以及 OCI 格式的 Meshery Design 文件远程 URL 必须是可直接下载的文件地址。导入后即可在 Meshery 的可视化画布中看到本文所述的全部 NFD 组件及其关系deployment↔pod↔container 的 alias 关系、RBAC 与 ServiceAccount 之间的 binding/permission 边、Namespace 归组关系等可在此基础上修改参数并部署到集群。如何验证与进一步定制导入成功后建议按以下顺序验证确认三个工作负载就绪kubectl -n default get deploy,ds | grep node-feature-discovery检查 CRD 已注册kubectl get crd | grep nfd.k8s-sigs.io查看节点标签是否生成kubectl get node --show-labels观察feature.node.kubernetes.io/...前缀标签按需编辑nfd-worker.conf/nfd-master.confConfigMap 调整探测开关或通过 NodeFeatureRule 定义自己的标签规则。由于该模式以声明式设计文件存储于 docs/data/catalog/736a8f97-c3f8-4481-888a-1eff27414caa/0.0.1/design.yml任何参数修改都会在重新导入后体现为组件配置差异适合以 Git 化方式对节点打标策略做版本管理。小结Meshery 目录中的 node-feature-discovery 模式把 NFD v0.16 的整套部署master、worker、gc、RBAC、CRD、ConfigMap 与安全上下文完整建模为可视化设计使用者只需一条mesheryctl design import -f命令即可获得可编辑、可审查、可复现的声明式基础设施既降低了 NFD 上手门槛也为硬件异构集群的节点标签治理提供了标准化的交付载体。赞分享云原生微服务运维DevOps【免费下载链接】mesheryMeshery, the cloud native manager项目地址https://gitcode.com/GitHub_Trending/me/meshery点击查看免费下载相关推荐Kubernetes Node Feature Discovery 使用与部署指南Kubernetes Node Feature Discovery 使用与部署指南 1. 项目目录结构及介绍 Kubernetes Node Feature DMeshery 目录模式解析使用 Meshery 设计文件在 Kubernetes 上部署 cert-manager v1.18.2Meshery 目录模式解析使用 Meshery 设计文件在 Kubernetes 上部署 cert manager v1.18.2 导读 本文以 docs/云原生微服务运维DevOps使用 Meshery 在 Kubernetes 上部署 WordPress 与 MySQLMeshMap 设计模式实战解析使用 Meshery 在 Kubernetes 上部署 WordPress 与 MySQLMeshMap 设计模式实战解析 本篇技术指南基于 Meshery云原生微服务运维DevOps创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表