惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Troy Hunt's Blog
Latest news
Latest news
Vercel News
Vercel News
S
SegmentFault 最新的问题
V
Vulnerabilities – Threatpost
博客园 - Franky
P
Privacy International News Feed
A
Arctic Wolf
T
The Blog of Author Tim Ferriss
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
T
Tor Project blog
Jina AI
Jina AI
GbyAI
GbyAI
The Hacker News
The Hacker News
博客园 - 叶小钗
Google DeepMind News
Google DeepMind News
T
Threatpost
C
CERT Recently Published Vulnerability Notes
P
Proofpoint News Feed
Scott Helme
Scott Helme
WordPress大学
WordPress大学
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Microsoft Azure Blog
Microsoft Azure Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园 - 司徒正美
A
About on SuperTechFans
Recorded Future
Recorded Future
爱范儿
爱范儿
L
LangChain Blog
V
V2EX
C
Cybersecurity and Infrastructure Security Agency CISA
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
K
Kaspersky official blog
Webroot Blog
Webroot Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
D
DataBreaches.Net
宝玉的分享
宝玉的分享
Google Online Security Blog
Google Online Security Blog
C
Cisco Blogs
L
Lohrmann on Cybersecurity
Help Net Security
Help Net Security
AWS News Blog
AWS News Blog
M
MIT News - Artificial intelligence
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY

博客园 - Lemo_wd

flutter —— iOS 的构建与分发 flutter —— 理解 iOS 的依赖管理 wireguard 入门 Pr 入门 为什么 TCP 是3次握手4次挥手? 给 ssh 私钥文件配置统一口令 滚动部署零碎笔记1 Clickhouse 物化视图与投影 Clickhouse 主键索引 Clickhouse 核心概念 ClickHouse 案例学习 —— 使用 ClickHouse 探索 GitHub 统计信息 linux Tun/Tap 虚拟网卡 Clickhouse 的 kafka Engine 集成 Clickhouse 表引擎 —— MergeTree 局域网中的设备间的流量转发 d3.js 构建股权架构图并绘制双向节点树 final cut pro 入门 d3.js 构建股权架构图并绘制股权百分比 flutter 的滚动控制 —— 滚动类组件的内部与整体滚动
k3s 基础 —— 将 traefik 替换为 ingress-nginx
Lemo_wd · 2025-10-28 · via 博客园 - Lemo_wd

部署

移除 traefik

修改 systemd

systemctl edit --full k3s

编辑下面这行,增加 --disable=traefik

ExecStart=/usr/local/bin/k3s \
    server --disable=traefik

重启服务

systemctl restart k3s

部署 ingress-nginx

创建 ingress-nginx.yaml

apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
  name: ingress-nginx
  namespace: kube-system
spec:
  chart: https://github.com/kubernetes/ingress-nginx/releases/download/helm-chart-4.13.3/ingress-nginx-4.13.3.tgz
#  repo:  https://helm-charts.itboon.top/ingress-nginx
#  chart: ingress-nginx
  version: 4.13.3
  set:
    controller.service.type: "LoadBalancer"
    controller.replicaCount: "1"
    global.image.registry: "k8s.nju.edu.cn"

注:若 chart 拉取失败可以考虑使用镜像仓库

部署

kubectl -f ingress-nginx.yaml

配置 HTTPS

1.申请证书

2.生成secret

kubectl create secret tls nginx-tls-secret \
  --cert=tls.crt \
  --key=tls.key \
  -n kube-system

3.修改 ingress-nginx.yaml

apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
  name: ingress-nginx
  namespace: kube-system
spec:
  chart: https://xxxx/ingress-nginx-4.13.3.tgz
  version: 4.13.3
  set:
    controller.service.type: "LoadBalancer"
    controller.replicaCount: "1"
    global.image.registry: "k8s.nju.edu.cn"
    controller.extraArgs.default-ssl-certificate: "kube-system/nginx-tls-secret" # 新增

4.重新部署

kubectl -f ingress-nginx.yaml

k3s ingress 服务架构说明

L4 层负载均衡

  • 服务名称: svclb-ingress-nginx-controller-037bed5e-tzwzx
  • 工作层级: L4(传输层)
  • 部署方式: 每个节点部署一个实例
  • 主要职责: 拦截节点流量并转发至 L7 层的 Ingress Controller

L7 层 Ingress 控制器

  • 服务名称: ingress-nginx-con troller-589bfd97d9-zh6vc
  • 工作层级: L7(应用层)
  • 部署方式: 单一实例(高可用场景可扩展)
  • 主要职责: 根据域名将流量路由至对应的后端服务

流量流向

客户端请求 → L4 负载均衡 → L7 Ingress Controller → 后端服务

路由配置

示例1:部署 rabbitmq

部署 rabbitmq 服务:rabbitmq.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: msq
---
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
  name: rabbitmq
  namespace: kube-system
spec:
  repo: https://helm-charts.itboon.top/bitnami
  chart: rabbitmq
  version: 16.0.14
  targetNamespace: msq
  #set:
    #global.imageRegistry: docker.m.daocloud.io
  valuesContent: |-
    communityPlugins: "https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v4.1.0/rabbitmq_delayed_message_exchange-4.1.0.ez"
    extraPlugins: "rabbitmq_auth_backend_ldap rabbitmq_delayed_message_exchange"
    auth:
      username: xxxx
      password: aaaa

配置路由:rabbitmq-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: rabbitmq-management-ingress
  namespace: msq
spec:
  ingressClassName: nginx
  rules:
  - host: xxx-rabbitmq.domain.com
    http:
      paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: rabbitmq
              port:
                number: 15672

示例2:部署静态网站

准备静态文件:/www/plane/index.html, /www/plane/js/**, /www/plane/css/** 等

准备通用的 nginx 配置文件:spa.nginx.conf

server {
    listen 80 default_server;
    #listen  [::]:80;
    gzip_static on;
    gzip_proxied  any;
    root   /usr/share/nginx/html;
    location / {
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
    location = /index.html {
        expires -1;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {
        expires 14d;
    }
}

部署 webapp 服务:plweb.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: plweb-deploy
  namespace: xxxx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: plweb
  template:
    metadata:
      labels:
        app: plweb
    spec:
      containers:
      - name: plweb
        image: nginx:alpine
        ports:
        - containerPort: 80
        volumeMounts:
        - name: plweb
          mountPath: /usr/share/nginx/html
        - name: nginxconf
          mountPath: /etc/nginx/conf.d/default.conf
      volumes:
      - name: plweb
        hostPath:
          path: /www/plane
          type: Directory
      - name: nginxconf
        hostPath:
          path: /www/spa.nginx.conf
          type: File
---
apiVersion: v1
kind: Service
metadata:
  name: plweb-svc
  namespace: xxxx
spec:
  selector:
    app: plweb
  ports:
  - port: 80
    targetPort: 80

配置路由:webapp-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: webapp-ingress
  namespace: xxxx
spec:
  ingressClassName: nginx
  rules:
  - host: xx.xxx.com
    http:
      paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: plweb-svc
              port:
                number: 80

示例3:kubernetes-dashboard

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: k8s-dashboard-ingress
  namespace: kubernetes-dashboard
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
    nginx.ingress.kubernetes.io/secure-backends: "true"
    nginx.ingress.kubernetes.io/ssl-verify: "false"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  ingressClassName: nginx
  rules:
  - host: k8s-dashboard.xxxx.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: kubernetes-dashboard
            port:
              number: 443