Loading

云服务器安装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

posted @ 2022-09-26 11:38  sstu  阅读(467)  评论(0编辑  收藏  举报