问题初现
前几天和朋友聊到蔚来汽车,想打开蔚来的官网 https://www.nio.cn/ 看看,可是在我电脑上访问后,网页上却显示出了非常可爱的,与整体风格不搭的字体。
前几天和朋友聊到蔚来汽车,想打开蔚来的官网 https://www.nio.cn/ 看看,可是在我电脑上访问后,网页上却显示出了非常可爱的,与整体风格不搭的字体。
Note
这篇文章多年前是与 自己搭建一个k8s环境、从部署 httpd 入手,理清 k8s 配置中的 containerPort、port、nodePort、targetPort 一起规划的 #Kubernetes 系列文章之一,但因为太懒没有写完。(当时规划了大长篇,结果只发了两篇 😅)
时隔三年,我已经把博客迁移到 #K3s 后,发现仍然是这套东西,所以还是有记录一下的必要的。
对于现代站点,通常会选择使用 HTTPS 来保护数据的传输,我的博客就使用 Let's Encrypt 颁发的免费证书。在还没有用 Kubernetes/K3s 之前,我使用 acme.sh 来完成 Let's Encrypt 颁发证书所需的一系列验证、获取证书并安装到 Nginx 中,以及证书即将到期时的续订。
而在 Kubernetes 集群中,我们可以通过 cert-manager 来做到同样的事情。
本文结合安装在 #Debian 里的 K3s,实践:
大家知道,我有一个用于查看 IPv4 和 IPv6 地址的站点 https://ip.bun.plus。
最近切换成 #K3s 后,发现获取到的 X-Forwarded-For
和 X-Real-Ip
都是集群内网的地址。在网上搜索后发现有很多人在问。
首先按 #traefik 文档 Forwarded Headers,配置 trafik 始终转发 Forwarded 头。编辑或新建 /var/lib/rancher/k3s/server/manifests/traefik-config.yaml
文件:
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: traefik
namespace: kube-system
spec:
valuesContent: |-
additionalArguments:
- "--entryPoints.web.forwardedHeaders.insecure"
加入 --entryPoints.web.forwardedHeaders.insecure
后,等待 traefik 应用配置,也试了重启 k3s、重启宿主机,都没有效果。
然后经过了各种尝试(详见后文“大无语事件”部分)。
最后在 @Kevin 的帮助下,才发现应该为 traefik 设置 externalTrafficPolicy: Local
。仍然编辑 /var/lib/rancher/k3s/server/manifests/traefik-config.yaml
文件:
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: traefik
namespace: kube-system
spec:
valuesContent: |-
additionalArguments:
- "--entryPoints.web.forwardedHeaders.insecure"
# 追加下面的内容
service:
spec:
externalTrafficPolicy: Local
k8s文档介绍了 externalTrafficPolicy: Local
的用途和弊端。
注:文中各种内网、公网 IP 仅为示例,不保证所有 IP 都可以访问,且你的环境中 IP 可能不同。
在上一篇文章 自己搭建一个k8s环境 中,我们一顿操作猛如虎,搭建出了由 1 个 master 和 1 个 worker 节点组成的 k8s 集群,大概是这样的效果: