支持 amd64和 arm64环境
bash init-config.sh
- 配置必要的内核加载
- 配置必要的网络环境
安装docker-ce安装1.26.6版本的k8s工具
cnproxy
: 国内网络环境,套了一层代理,防止出现github等访问失败的特殊处理脚本dual-stack
: 增加了对ipv6的支持。ipv4和ipv6双栈支持。
- 修改
config.yaml
文件,为你自己的配置 - master节点的机器上执行:
# 安装k3s
sudo ./install-master.sh
# 复制秘钥到当前账号
mkdir -p $HOME/.kube
sudo cp -i /etc/rancher/k3s/k3s.yaml $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
如果你的网络对github的release下载不友好。
请使用
sudo ./install-master-cnproxy.sh
代替。
- 安装web控制面板,这里使用的是Kuboard。
kubectl apply -f kuboard-v3.yaml
- 安装 helm 包管理器
- 通过 apt源安装 (国内可能会被墙 或者速度慢)
bash install-helm.sh
sudo apt-get remove helm
- 通过snap包安装 (ubuntu自带snap)
bash install-helm-snap.sh
sudo snap remove helm
- 通过二进制包安装:
去
https://github.com/helm/helm/releases
下载安装即可
- 通过 apt源安装 (国内可能会被墙 或者速度慢)
- 安装证书免费签发工具cert-manager
bash install-CRDs-with-customdns.sh
helm uninstall cert-manager --namespace cert-manager
- 安装ingress(1.3.0),这里有两种方式安装,二选一:
- hostport。会占用本机的80和443端口。如果本机不需要nginx或者nginx配置成其他端口,可以使用。
kubectl apply -f ingress_hostport.yaml
- nodeport。会随机生成两个端口,分别代表http和https端口。不会占用本机的80和443。
kubectl apply -f ingress_nodeport.yaml
安装完成后,执行
kubectl get svc -n ingress-nginx
可以看到 80和443分别映射出来的端口。输入
kubectl get pod -n ingress-nginx
查看ingress的安装进度。等所有pod都ok了,就可以了。kbuectl delete -f ingress_hostport.yaml
或者kbuectl delete -f ingress_nodeport.yaml
填你安装的时候选择的方式。 - (可选,非必须) 添加dnspod(实际是腾讯云接口)的dns证书签名验证方式
需要先安装 cert-manager 才能安装该 cert-manager的插件。
- 通过 https://console.cloud.tencent.com/cam/capi 获取
secretid
和secretkey
. - 修改
install-qcloud-cm.sh
中的对应的参数 - 执行
bash install-qcloud-cm.sh
- 证书申请demo:
- 修改
test-dnspod-cert.yaml
中的域名、证书名、命名空间 - 执行
kubectl -f test-dnspod-cert.yaml
- 修改
helm uninstall cert-manager-webhook-dnspod -n cert-manager
- 通过 https://console.cloud.tencent.com/cam/capi 获取
- (可选,非必须) 添加cloudflare 方式进行dns证书签名
- 打开
clouflare-cm.yaml
填入你的对应信息。 apiTokenSecretRef
和apiKeySecretRef
二选一。注释掉另一方。- 执行
kubectl apply -f clouflare-cm.yaml
- 证书申请demo:
- 修改
test-cf-cert.yaml
中的域名、证书名、命名空间 - 执行
kubectl -f test-cf-cert.yaml
- 修改
kubectl delete -f clouflare-cm.yaml
- 打开
- (可选,非必须) 添加aliyun的dns证书签名验证方式
需要先安装 cert-manager 才能安装该 cert-manager的插件。
- 通过 https://ak-console.aliyun.com/?spm=5176.2020520001.0.0.dCHOyj#/accesskey 获取
Access Key ID
和Access Key Secret
. - 修改
install-aliyun-cm.sh
中的对应的参数 - 执行
bash install-aliyun-cm.sh
- 证书申请demo:
- 修改
test-alidns-cert.yaml
中的域名、证书名、命名空间 - 执行
kubectl -f test-alidns-cert.yaml
- 修改
kubectl delete -f alidns.yaml
- 通过 https://ak-console.aliyun.com/?spm=5176.2020520001.0.0.dCHOyj#/accesskey 获取
- 修改
install-node.sh
文件,K3S_URL
的地址为你的 master的对应地址。 - 执行
sudo ./install-node.sh
文件
如果你的网络对github的release下载不友好。
请使用
sudo ./install-node_cnproxy.sh
代替。
sudo k3s-killall.sh
sudo k3s-uninstall.sh
(for master) orsudo k3s-agent-uninstall.sh
(for node)
进入到 ingress-nginx命名空间。
推荐使用hostport方式安装。如果你有2台机器,那么请将ingress-nginx-controller
的副本数调整为2。
如果你是5台设备,对应副本数调整为5.确保每台机器上都运行一个ingress-nginx-controller
。
因为默认生成的证书有效期只有1年,所以每年都需要更新一次系统证书。
K3s 证书的轮换非常简单,只需要在过期前 90 天内重启 K3s 的服务即可,而且重启 K3s 服务不会影响 业务容器。
但是k3s的证书 是由k3s进程重新启动来自行判断进行轮换的。因此需要在部署的机器上添加一个 crontab的配置。每个月重启一次k3s的服务。
0 19 1 * * systemctl restart k3s