130 行
4.9 KiB
Markdown
130 行
4.9 KiB
Markdown
## 手动安装方法
|
|
|
|
需要在每个节点上执行以下命令 节点系统需求 debian 11+ ubuntu 20.04+
|
|
|
|
### 替换hostname
|
|
|
|
hostname为最终的节点名称 方便后期管理
|
|
|
|
```shell
|
|
export HOSTNAME=YOU_SHOULD_MODIFY_THIS_HOSTNAME
|
|
hostnamectl set-hostname $HOSTNAME && reboot
|
|
```
|
|
|
|
### 安装tailscale 构建集群节点网络层
|
|
|
|
如果是单机集群 可以不安装 但考虑到集群扩展性 此处推荐安装
|
|
安装后请到tailscale官网申请一个auth key (免费服务)
|
|
|
|
优势:
|
|
|
|
- 通过tailscale构建集群网络层 可以夸不同的云服务商进行组网 甚至是与内网环境下的服务器进行组网 (家里云启动~)
|
|
- tailscale的网络层是基于wireguard的 速度快、延迟低 可以动态路由不同的节点流量
|
|
|
|
```shell
|
|
curl -fsSL https://tailscale.com/install.sh | sh
|
|
```
|
|
|
|
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
|
|
```
|
|
|
|
### k3s 节点配置
|
|
|
|
将不同节点类型的config写入节点 以供后续安装k3s使用
|
|
|
|
采用config.yaml的方式进行配置(非环境变量) 使集群配置能够进行git版本控制
|
|
|
|
参考roles/k3s/templates下的配置文件模版
|
|
|
|
根据节点类型, 将上述文件中的内容写入到此处
|
|
|
|
```shell
|
|
mkdir -p /etc/rancher/k3s && vim /etc/rancher/k3s/config.yaml
|
|
```
|
|
|
|
### 安装k3s
|
|
|
|
此处注意安装类型 是server 还是 agent
|
|
如果是agent节点 请将最后的server替换为agent
|
|
|
|
```shell
|
|
curl -sfL https://get.k3s.io | \
|
|
INSTALL_K3S_VERSION=v1.34.2+k3s1 \
|
|
sh -s - server
|
|
```
|
|
|
|
### 国内安装加速
|
|
|
|
如果服务器在国内 请使用国内的安装脚本 速度会快很多
|
|
|
|
```shell
|
|
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \
|
|
INSTALL_K3S_VERSION=v1.34.2+k3s1 \
|
|
INSTALL_K3S_MIRROR=cn \
|
|
sh -s - server
|
|
```
|
|
|
|
### 镜像加速地址
|
|
|
|
如果服务器在国内 请将registries.yaml文件内容写入到此处
|
|
以免后安装的镜像拉取失败
|
|
|
|
```shell
|
|
vim /etc/rancher/k3s/registries.yaml
|
|
```
|
|
|
|
### 查看serverToken
|
|
|
|
如果后续安装从节点或者工作节点 需要将master.config.yaml中的token替换为此处的token
|
|
以便从节点以及工作节点能够加入到集群中
|
|
|
|
```shell
|
|
cat /var/lib/rancher/k3s/server/node-token
|
|
```
|
|
|
|
### 查看api server config
|
|
|
|
以供本地连接到集群, 进行集群管理.
|
|
将下命令的输出,替换到本地的~/.kube/config中.
|
|
|
|
注意将其中的输出中的server地址替换master节点的ip地址或者域名
|
|
|
|
```shell
|
|
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
|
|
```
|
|
|
|
### 节点网络优化
|
|
|
|
在 `inventory/group_vars/all.yml` 的 `tailscale_control_plane_relay_peers` 中填写差链路节点的公网 DNS 名称(例如 `tthk.node.dev.cm`),然后执行 `ansible-playbook playbooks/site.yml --tags control-plane-relay`。DNS 必须直接解析到节点公网地址,不能经过 CDN 代理。
|
|
|
|
规则仅部署到 master:拒绝这些对端到 Tailscale UDP 41641 的直连探测,使其与控制平面的连接回落到中继。其他节点之间仍按 Tailscale 正常规则选择直连;粒度为对端节点,不能仅针对解密后的 TCP 6443。不要使用节点级强制 DERP 环境变量。
|
|
|
|
规则由独立 nftables 表和 systemd 服务持久化,不保存或清空 Kubernetes/Tailscale 的动态规则。timer 每 5 分钟重新解析全部 A/AAAA 地址;解析或规则校验失败时保留已有规则。同一公网 NAT 下的节点会共同受该地址规则影响;DNS 未列出的其他公网或内网直连地址不在限制范围内。清空名单并重跑即可取消限制。
|
|
|
|
Tailscale 1.102.3 没有受支持的按 peer 强制 DERP 设置:ACL/grants 控制访问权限,`via` 选择出口节点、子网路由器或 app connector;Peer Relay 的授权也只允许在直连不可用时使用中继。`nodeAttrs` 中的 `only-tcp-443` 和调试变量 `TS_DEBUG_ALWAYS_USE_DERP`、`TS_DEBUG_NEVER_DIRECT_UDP` 都作用于整个节点,不能限定到控制平面。参考 [grants 路由说明](https://tailscale.com/docs/reference/syntax/grants#routing-specifications)、[Peer Relay](https://tailscale.com/docs/features/peer-relay)、[节点属性源码](https://github.com/tailscale/tailscale/blob/v1.102.3/tailcfg/tailcfg.go) 和 [调试开关源码](https://github.com/tailscale/tailscale/blob/v1.102.3/wgengine/magicsock/debugknobs.go)。
|