云服务器安装k3s集群
本文依托于上文wireguard组网后的安装过程。请先参考上文组网成功。
WireGuard多云组网教程:https://www.cnblogs.com/sstu/p/16729281.html
一、master节点安装
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - \
--node-external-ip 101.43.x.x \
--advertise-address 101.43.x.x \
--node-ip 10.88.88.1 \
--flannel-iface wg0
- --node-external-ip 101.x.x.x 为节点设置外部IP,阿里云VPC的外网IP并未直接绑定到虚拟机网卡上,所以我要设置这个参数,避免k3s组件在设置loadbalance时,将内网IP当作公网IP使用。
- --advertise-address 101.x.x.x 用于设置kubectl工具以及子节点进行通讯使用的地址,可以是IP,也可以是域名,在创建apiserver证书时会将此设置到有效域中。
- --node-ip 10.88.88.1 如果不设置这个参数,那么第一张网卡设备上的IP就会被选中,所以这个IP常是内网IP。但我自行组建了虚拟局域网,所以需要指定虚拟局域网的IP(也就是WireGuard的IP)。
- --flannel-iface wg0 wg0是WireGuard创建的网卡设备,我需要使用虚拟局域网来进行节点间的通信,所以这里需要指定为wg0。
- --docker 用 docker 代替 containerd (使用docker需要先安装docker容器)
查看服务运行状态
systemctl status k3s
kubectl get nodes
二、Agent 安装
获取主机token
cat /var/lib/rancher/k3s/server/node-token
执行安装命令
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn \
K3S_URL=https://10.88.88.1:6443 \
K3S_TOKEN=K102803f039205da17a8c64b462dcf0fbd6fe49d8ef0088e69730edcce985928aa2::server:f41b75abd85e423eaf6e1dce4df2c67c
sh -s - \
--node-external-ip 42.192.x.x \
--node-ip 10.88.88.2 \
--flannel-iface wg0
参数:
- K3S_Token 去 cat /var/lib/rancher/k3s/server/node-token 获取即可。
- K3S_URL 需要设置master的通信地址端口,端口默认是6443,IP地址就是虚拟网域的IP,这样流量就会通过WireGuard加密传输。
- node-external-ip 为节点公网地址
- node-ip 节点虚拟IP地址
查看服务运行状态
systemctl status k3s-agent
三、卸载服务
卸载server
/usr/local/bin/k3s-uninstall.sh
卸载agent
/usr/local/bin/k3s-agent-uninstall.sh
如果是用docker安装的,还需要删除容器
关闭所有容器
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
删除所有容器
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
四、安装Kubernetes-Dashboard面板
在主机执行如下命令
kubectl apply -f https://cdn.990520.xyz/gh/kubernetes/dashboard@v2.5.0/aio/deploy/recommended.yaml
获取 Kubernetes-Dashboard 访问令牌
kubectl -n kubernetes-dashboard describe secret default-token | grep '^token' | awk '{print $2}'
v1.24+
kubectl -n kubernetes-dashboard create token default
添加路由,可以域名访问
export MY_KUBEDASH_HOST=master.xxx.com
cat <<EOF | kubectl apply -f -
kind: ServersTransport
apiVersion: traefik.containo.us/v1alpha1
metadata:
name: kubernetes-dashboard-transport
namespace: kubernetes-dashboard
spec:
serverName: $MY_KUBEDASH_HOST
insecureSkipVerify: true
---
kind: IngressRoute
apiVersion: traefik.containo.us/v1alpha1
metadata:
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(\`$MY_KUBEDASH_HOST\`)
priority: 10
services:
- kind: Service
name: kubernetes-dashboard
namespace: kubernetes-dashboard
serversTransport: kubernetes-dashboard-transport
port: 443
tls:
certResolver: default
EOF
创建管理用户
cat <<EOF | kubectl apply -f -
kind: ServiceAccount
apiVersion: v1
metadata:
name: admin
namespace: kubernetes-dashboard
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin
namespace: kubernetes-dashboard
EOF
获取管理员令牌
老版本
kubectl -n kubernetes-dashboard describe secret admin-token | grep '^token' | awk '{print $2}'
v1.24+
kubectl -n kubernetes-dashboard create token admin
访问域名,用获取到的token登录
地址:https://master.xxx.com/#/login
后台首页
节点监控
node节点没有监控到一些内存信息,待解决。
持续更新中。。。
参考文章
https://www.cnsre.cn/posts/211119132529/
https://blog.csdn.net/wq1205750492/article/details/124883196
https://docs.rancher.cn/docs/k3s/_index/
https://blog.csdn.net/wq1205750492/article/details/124883196
https://docs.rancher.cn/docs/k3s/installation/kube-dashboard/_index/
http://tnblog.net/aojiancc6/article/details/7046