当前位置: 首页 > news >正文

Kubernetes(八) Ingress 与配置资源管理详解

一、Kubernetes Ingress 深度解析

1.1 为什么需要 Ingress

传统的 NodePort Service 虽然能将集群内服务暴露给外部客户端,但存在显著问题:

  • ​端口管理困难​​:一个端口只能服务一个应用,需要提前规划

  • ​维护成本高​​:Service 数量多时端口不连续,难以管理

  • ​功能局限​​:基于四层调度,无法实现七层负载均衡特性

​Ingress 解决方案​​:

  • 提供高级流量管理能力

  • 通过 Ingress Controller 接收所有入口流量

  • 使用 Ingress 资源定义流量转发规则

1.2 Ingress 核心架构

组件构成
  • ​Ingress 资源​​:定义路由规则的 API 对象(类似 nginx.conf)

  • ​Ingress Controller​​:实际执行转发的负载均衡器

工作原理
  1. Controller 监听 API Server 感知 Ingress 规则变化

  2. 动态生成 Nginx 配置并写入 /etc/nginx.conf

  3. 执行 reload 使配置生效

  4. 实现基于域名/路径的请求转发

1.3 三种部署方式对比

方式一:DaemonSet + HostNetwork(生产推荐)

​优势​​:

  • 性能最优,请求链路最短

  • 直接使用宿主机网络,无额外 NAT

​部署步骤​​:

# 1. 节点标记
kubectl label node node02 ingress=true# 2. 修改为 DaemonSet 并启用 HostNetwork
apiVersion: apps/v1
kind: DaemonSet
spec:template:spec:hostNetwork: truenodeSelector:ingress: "true"
方式二:Deployment + NodePort

​适用场景​​:

  • 测试环境

  • 前置有负载均衡器的场景

​特点​​:

  • 通过 NodePort 暴露,多一层 NAT

  • 大流量场景可能影响性能

方式三:LoadBalancer(云环境)

​适用场景​​:

  • 公有云环境

  • 需要云厂商负载均衡器支持

1.4 Ingress 实战配置

基础路由配置
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: nginx-app-ingress
spec:rules:- host: www.example.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-svcport: number: 80
HTTPS 配置
# 生成证书
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout tls.key -out tls.crt \-subj "/CN=nginxsvc/O=nginxsvc"# 创建 Secret
kubectl create secret tls tls-secret --key tls.key --cert tls.crt
高级功能
  • ​BasicAuth 认证​​:基于 HTTP 基础认证

  • ​重写规则​​:URL 重写和重定向

  • ​多域名路由​​:基于虚拟主机的流量分发

二、Pod 控制器详解

2.1 控制器类型对比

控制器

有状态

特点

适用场景

Deployment

无状态应用、滚动更新

Web 服务、API

StatefulSet

稳定网络标识、有序部署

数据库、中间件

DaemonSet

每个节点运行一个 Pod

日志收集、监控

Job/CronJob

一次性/周期性任务

批处理、备份

2.2 关键控制器深度解析

StatefulSet(有状态应用)

​核心特性​​:

  • ​稳定网络标识​​:Pod 名称和 DNS 名称固定

  • ​持久化存储​​:每个 Pod 独立 PVC

  • ​有序部署​​:按顺序创建/删除(0→N-1)

​架构组件​​:

  1. ​Headless Service​​:提供 DNS 解析

  2. ​VolumeClaimTemplate​​:为每个 Pod 提供独立存储

  3. ​StatefulSet​​:管理 Pod 生命周期

apiVersion: apps/v1
kind: StatefulSet
metadata:name: mysql
spec:serviceName: "mysql"replicas: 3template:metadata:labels:app: mysqlspec:containers:- name: mysqlimage: mysql:5.7volumeMounts:- name: datamountPath: /var/lib/mysqlvolumeClaimTemplates:- metadata:name: dataspec:accessModes: ["ReadWriteOnce"]resources:requests:storage: 10Gi
DaemonSet(节点级部署)

​典型应用​​:

  • 日志收集代理(Fluentd、Filebeat)

  • 监控数据采集(Node Exporter)

  • 存储服务客户端(Ceph、GlusterFS)

apiVersion: apps/v1
kind: DaemonSet
metadata:name: node-exporter
spec:selector:matchLabels:app: node-exportertemplate:metadata:labels:app: node-exporterspec:containers:- name: node-exporterimage: prom/node-exporter:latestports:- containerPort: 9100

三、配置资源管理

3.1 Secret 安全管理

类型与应用场景

类型

用途

示例

Opaque

用户自定义敏感数据

数据库密码

dockerconfigjson

镜像仓库认证

私有仓库登录

tls

SSL/TLS 证书

HTTPS 证书

service-account-token

API 访问令牌

ServiceAccount

创建与使用
# 命令行创建
kubectl create secret generic app-secret \--from-literal=username=admin \--from-literal=password=secret123# YAML 定义(Base64 编码)
echo -n 'admin' | base64
apiVersion: v1
kind: Secret
metadata:name: app-secret
type: Opaque
data:username: YWRtaW4=password: c2VjcmV0MTIz
使用方式

​环境变量注入​​:

env:
- name: DB_PASSWORDvalueFrom:secretKeyRef:name: app-secretkey: password

​Volume 挂载​​:

volumes:
- name: secret-volumesecret:secretName: app-secret

3.2 ConfigMap 配置管理

创建方式对比

方法

命令示例

适用场景

文件

--from-file=config.properties

配置文件

目录

--from-file=config-dir/

多配置文件

字面值

--from-literal=key=value

简单配置

热更新机制

​Volume 挂载支持热更新​​:

volumes:
- name: config-volumeconfigMap:name: app-config

​触发滚动更新​​:

kubectl patch deployment myapp -p \'{"spec":{"template":{"metadata":{"annotations":{"version":"v2"}}}}}'
最佳实践
  1. ​配置与镜像分离​​:提高可移植性

  2. ​环境差异化配置​​:不同环境使用不同 ConfigMap

  3. ​配置版本管理​​:结合 GitOps 实践

四、总结与最佳实践

4.1 Ingress 总结

  • ​生产推荐​​:DaemonSet + HostNetwork 模式

  • ​高可用方案​​:多节点部署 + LVS/Keepalived

  • ​安全加固​​:TLS 证书、访问控制、速率限制

  • ​监控告警​​:Prometheus 监控 Controller 指标

4.2 控制器选择指南

  • ​无状态 Web 服务​​:Deployment

  • ​有状态数据库​​:StatefulSet + 持久化存储

  • ​节点级守护进程​​:DaemonSet

  • ​定时任务​​:CronJob

4.3 配置管理原则

  1. ​敏感信息​​:始终使用 Secret,配合 RBAC 控制访问

  2. ​普通配置​​:ConfigMap 实现配置与代码分离

  3. ​安全编码​​:Base64 编码不是加密,需要网络传输加密

  4. ​更新策略​​:理解热更新限制,合理设计重启策略

4.4 生产环境建议

  • ​资源限制​​:为 Controller 设置合理的资源请求和限制

  • ​HPA 配置​​:根据流量自动扩缩容

  • ​备份策略​​:定期备份重要配置和证书

  • ​灾难恢复​​:制定 Controller 故障的应急预案

通过合理运用 Ingress 流量管理和配置资源管理,可以构建出高效、安全、易维护的 Kubernetes 应用架构。

http://www.dtcms.com/a/509834.html

相关文章:

  • 词爱站的关键词湛江正规网站制作方案
  • 网站开发后端语言安徽弘泰建设管理有限公司网站
  • 直播网站开发框架wordpress 社交网站
  • 学做网站视频教程如何搞好职业学校网站的建设和管理
  • 网站建设域名注册熊掌号ssr网站开发
  • 常州建站费用网络推广建设期的网站
  • ps设计网站首页界面重庆娱乐公司
  • 佛山做推广网站的长沙装修公司名单
  • 沈阳seo搜索排名优化wordpress优化版源码
  • 郑州做网站哪个国内WordPress相册插件
  • 哪个网站ppt模板免费下载泰安网站建设有哪些
  • 网站设计的发展趋势微信怎么开自己的公众号
  • 网站建设iis配置河北招投标信息服务平台
  • 智慧团建网站几点关闭h5网站开发公司
  • 中小学网站建设规范大型的网站建设公司
  • 如何做自己的个人网站网站建设的职责
  • c 怎么做网站开发做网站需要交印花税
  • 免费网站域名注册个人襄州区城乡建设局网站
  • 网站建设服务合同 印花税网站空间不够用
  • 全flash网站下载跨境电商平台有哪些app
  • 环保设备东莞网站建设wordpress开发手册下载
  • 建设网站 无法显示图片搜索引擎优化的定义是什么
  • 快递网站域名更换宁波海曙网站开发公司电话
  • 自然堂官方网站建设网站怎么建设好看
  • 哈尔滨网站搭建页面设计制作网站
  • 无法访问网站怎么看别人网站是怎么做的
  • 短视频剪辑自学seo外链推广工具
  • 如何做游戏推广网站cms是网站吗
  • 企业网站的规划与建设wordpress本地批量传文章
  • 网站资料如何做脚注佳匠网站建设