From 2dec258d8b9645599f5cc143d31e4025a16d694e Mon Sep 17 00:00:00 2001 From: rohow Date: Fri, 11 Apr 2025 17:31:25 +0800 Subject: [PATCH] feat(README): update README --- README.md | 2 ++ apps/README.md | 24 ++++++++++++-------- install/README.md | 58 +++++++++++++++++++++++++++++++++++++---------- 3 files changed, 63 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index bc73974..04eaa0b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ ### k3s 部署仓库 让你快速拥有一个高可用的k3s集群 并且具有完备的生产级能力(监控、告警、防护、负载、备份) #### install 集群安装相关 + 参见 [install/README.md](install/README.md) #### apps 相关应用 + 参见 [apps/README.md](apps/README.md) diff --git a/apps/README.md b/apps/README.md index 7b818a8..6fa4c4c 100644 --- a/apps/README.md +++ b/apps/README.md @@ -7,9 +7,11 @@ kubectl apply -f apps/xxx -R ``` 举例: + ```shell kubectl apply -f apps/infra/data/redis -R ``` + 你可以一次性将所有的应用部署到k8s集群中 但是此处建议分开部署 每个文件夹单独执行 以保证不会出现错误与性能问题 注意!! 在部署前你需要替换yaml中的YOU_SHOULD_MODIFY_THIS_ 开头的字段 替换为自己的值 这些值的来源部分是自己生成的、部分是需要你自己去申请的 @@ -17,29 +19,31 @@ kubectl apply -f apps/infra/data/redis -R 比如说你需要去华为云申请一个access key id和secret key 还有一个bucket name 这些值需要你自己去申请 ### 应用说明 -kube文件夹下的请全部执行 此文件架内部为集群优化相关内容 + +./kube文件夹下的请全部执行 此文件架内部为集群优化相关内容 例如dns延迟优化 (patch-affinity.yaml 按需 仅在你想让k3s自带的system服务使用特定节点时使用 比如保留核心服务停留在高可用节点上) +- infra-net: 网络相关的应用 + - nginx: 负载均衡服务 替换集群默认的ingress(traefik) + - crowdsec: 安全防护服务 + - tailscale: 集群内网加速服务 如果对集群内网加速没有需求 可以不安装 +- infra-data: 数据存储相关的应用 + - redis: redis服务 + - postgresql-ha: postgresql服务 + - cloudnative: postgresql服务 操作符版本 推荐 - infra-devops: devops相关的应用 - gitea: git托管服务 - cert-manager: 证书管理服务 - reflector: 密钥同步服务 - velero: 备份服务 -- infra-data: 数据存储相关的应用 - - redis: redis服务 - - postgresql-ha: postgresql服务 - - cloudnative: postgresql服务 操作符版本 推荐 - infra-monitor: 监控相关的应用 - prometheus: 监控服务 - loki: 日志服务 -- infra-net: 网络相关的应用 - - nginx: 负载均衡服务 替换集群默认的ingress(traefik) - - crowdsec: 安全防护服务 - - tailscale: 集群内网加速服务 如果对集群内网加速没有需求 可以不安装 - apps: 其他应用 个人应用部分 - whoami: 测试服务 ### 调试集群内服务方法 运行此命令 + ```shell kubectl run -i --tty --rm --restart=Never \ --overrides='{"apiVersion": "v1", "spec": {"nodeSelector": {"kubernetes.io/hostname": "homea"}}}' \ @@ -48,8 +52,10 @@ kubectl run -i --tty --rm --restart=Never \ ``` ### 密钥相关 + 可以将helm部署中使用到的密钥放到k8s的secret中 然后使用reflector将secret中的密钥同步到其他namespace中 + ```shell kubectl -n infra-devops create secret generic s3-devcm-hw \ --from-literal=ACCESS_KEY_ID=xxxxx \ diff --git a/install/README.md b/install/README.md index f5ef31d..a0d7641 100644 --- a/install/README.md +++ b/install/README.md @@ -1,20 +1,25 @@ ## 安装方法 + 需要在每个节点上执行以下命令 节点系统需求 debian 11+ ubuntu 20.04+ ### 替换hostname + hostname为最终的节点名称 方便后期管理 + ```shell export HOSTNAME=YOU_SHOULD_MODIFY_THIS_HOSTNAME hostnamectl set-hostname $HOSTNAME && reboot ``` ### 安装tailscale 构建集群节点网络层 + 如果是单机集群 可以不安装 但考虑到集群扩展性 此处推荐安装 安装后请到tailscale官网申请一个auth key (免费服务) 然后后续的节点安装时需要将config.yaml中的 `YOU_SHOULD_MODIFY_THIS_JOIN_KEY` 替换为你申请的auth key 优势: + - 通过tailscale构建集群网络层 可以夸不同的云服务商进行组网 甚至是与内网环境下的服务器进行组网 (家里云启动~) - tailscale的网络层是基于wireguard的 速度快、延迟低 可以动态路由不同的节点流量 @@ -22,28 +27,35 @@ hostnamectl set-hostname $HOSTNAME && reboot curl -fsSL https://tailscale.com/install.sh | sh ``` -### 开启ip转发 +tailscale 需要开启ip转发 + ```shell echo 'net.ipv4.ip_forward = 1' | tee -a /etc/sysctl.d/99-tailscale.conf echo 'net.ipv6.conf.all.forwarding = 1' | tee -a /etc/sysctl.d/99-tailscale.conf sysctl -p /etc/sysctl.d/99-tailscale.conf ``` -### 新建目录 将不同节点类型的config写入 +### k3s 节点配置 + +将不同节点类型的config写入节点 以供后续安装k3s使用 + +采用config.yaml的方式进行配置(非环境变量) 使集群配置能够进行git版本控制 + master-init.config.yaml 是第一个master节点的配置 -master.config.yaml 是master从节点的配置 -agent.config.yaml 是agent节点的配置 +master.config.yaml 是master从节点的配置 (单节点不需要) +agent.config.yaml 是agent节点的配置 (单节点不需要) -如果是单机集群 只需要将master-init.config.yaml中的内容写入到config.yaml中即可 - -将上述文件中的内容写入到此处 +根据节点类型, 将上述文件中的内容写入到此处 ```shell mkdir -p /etc/rancher/k3s && vim /etc/rancher/k3s/config.yaml ``` -### 安装k3s 此处注意安装类型 是server 还是 agent +### 安装k3s + +此处注意安装类型 是server 还是 agent 如果是agent节点 请将最后的server替换为agent + ```shell curl -sfL https://get.k3s.io | \ INSTALL_K3S_VERSION=v1.32.3+k3s1 \ @@ -52,7 +64,8 @@ curl -sfL https://get.k3s.io | \ ### 国内安装加速 -如果服务器在国内 请使用国内的安装脚本 +如果服务器在国内 请使用国内的安装脚本 速度会快很多 + ```shell curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \ INSTALL_K3S_VERSION=v1.32.3+k3s1 \ @@ -61,18 +74,30 @@ curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \ ``` ### 镜像加速地址 + 如果服务器在国内 请将registries.yaml文件内容写入到此处 +以免后安装的镜像拉取失败 + ```shell vim /etc/rancher/k3s/registries.yaml ``` ### 查看serverToken -如果后续安装从节点 或者工作节点 需要将master.config.yaml中的token替换为此处的token + +如果后续安装从节点或者工作节点 需要将master.config.yaml中的token替换为此处的token +以便从节点以及工作节点能够加入到集群中 + ```shell cat /var/lib/rancher/k3s/server/node-token ``` -### 查看api server config 需要替换到.kube/config中 注意将其中的server地址替换为高可用地址 +### 查看api server config + +以供本地连接到集群, 进行集群管理. +将下命令的输出,替换到本地的~/.kube/config中. + +注意将其中的输出中的server地址替换master节点的ip地址或者域名 + ```shell cat /etc/rancher/k3s/k3s.yaml ``` @@ -80,18 +105,27 @@ cat /etc/rancher/k3s/k3s.yaml ## 以下为集群安装后的优化操作 可以选择性的执行 ### 给node添加地域标签 + +可优化不同地域的节点之间的流量 + ```shell kubectl label nodes tca topology.kubernetes.io/region=cn-sh kubectl label nodes tca svccontroller.k3s.cattle.io/enablelb="true" ``` ### 给master节点添加污点 + +如果你不想让master节点上运行pod, 可以添加污点. +保证master节点上只运行k3s的核心服务, 更稳定. + ```shell kubectl taint nodes tca node-role.kubernetes.io/master:NoSchedule ``` ### 节点网络优化 -可以在需要加速的节点屏蔽目标ip 比如85.113.71.11 让tailscale强制走drep服务器进行加速 + +可以在需要加速的节点屏蔽目标ip 比如85.113.71.11 让tailscale强制走drep服务器进行加速. + ```shell iptables -A OUTPUT -p udp --dport 41641 -d 85.113.71.11 -j DROP ```