服务器情况
IP | 配置 | 系统 | 任务 |
172.18.11.232 | 2核、4G内存、硬盘16,30 | CentOs7.8 | server1 |
172.18.11.233 | 2核、4G内存、硬盘16,30 | CentOs7.8 | server2 |
172.18.11.234 | 2核、4G内存、硬盘16,30 | CentOs7.8 | worker |
外部mysql数据库5.7以上
官网要求:
CPU 和 内存以下是高可用 K3s server 中节点的最低 CPU 和内存要求:部署规模节点VCPUSRAMSmallUp to 1024 GBMediumUp to 10048 GBLargeUp to 250816 GBX-LargeUp to 5001632 GBXX-Large500+3264 GB#磁盘集群性能取决于数据库性能。为了确保最佳速度,我们建议始终使用 SSD 磁盘来支持你的 K3s 集群。在云提供商上,您还需要使用允许最大 IOPS 的最小 size。#网络你应该考虑增加集群 CIDR 的子网大小,以免 Pod 的 IP 耗尽。你可以通过在启动时向 K3s 服务器传递 |
|
安装过程
server
1.安装server1,其中username、password、mysqlUrl、dataBase都是变量
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server --datastore-endpoint="mysql://username:password@tcp(mysqlUrl:3306)/dataBase"
2.查对应的K3s master 信息
命令:
k3s kubectl get nodes
结果:
[root@new-host-456 ~]# k3s kubectl get nodes
NAME STATUS ROLES AGE VERSION
new-host-456 Ready control-plane,master 2m5s v1.20.4+k3s1
表示已经有一个名字为”new-host-456“的节点信息,它的角色是master
详细的节点信息
kubectl get node -o wide
[root@new-host-456 ~]# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
new-host-456 Ready control-plane,master 57m v1.20.4+k3s1 172.18.11.105 <none> CentOS Linux 7 (Core) 3.10.0-1127.el7.x86_64 containerd://1.4.3-k3s3
测试集群容器的运行状况,执行如下命令
k3s kubectl get pods --all-namespaces
显示结果:
[root@new-host-456 ~]# k3s kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-854c77959c-cswvx 0/1 Running 0 13m
kube-system local-path-provisioner-5ff76fc89d-w5w4d 0/1 CrashLoopBackOff 7 13m
kube-system metrics-server-86cbb8457f-vm5t8 0/1 CrashLoopBackOff 7 13m
kube-system helm-install-traefik-7plt8 0/1 CrashLoopBackOff 7 13m
查看k3s状态
kubectl get all -n kube-system
通过 crictl info
命令可以查看 containerd
当前的配置信息
crictl info
3.开启防火墙对应端口
K3s Server节点的入站规则:
协议 | 端口 | 源 | 描述 |
TCP | 6443 | K3s agent 节点 | Kubernetes API Server |
UDP | 8472 | K3s server 和 agent 节点 | 仅对 Flannel VXLAN 需要 |
TCP | 10250 | K3s server 和 agent 节点 | Kubelet metrics |
TCP | 2379-2380 | K3s server 节点 | 只有嵌入式 etcd 高可用才需要 |
启动worker
1.查看server1中的token信息
cat /var/lib/rancher/k3s/server/node-token
2.在worker节点中安装,其中myServer、myNodeToken都是变量
命令如下:
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://myServer:6443 K3S_TOKEN=myNodeToken sh -
3.在server中输入命令确认
kubectl get node -o wide
结果如下,对比之前的结果可以发现多了一个worker
[root@new-host-456 ~]# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
new-host-456 Ready control-plane,master 62m v1.20.4+k3s1 172.18.11.105 <none> CentOS Linux 7 (Core) 3.10.0-1127.el7.x86_64 containerd://1.4.3-k3s3
new-host-452 Ready <none> 52s v1.20.4+k3s1 172.18.11.109 <none> CentOS Linux 7 (Core) 3.10.0-1127.el7.x86_64 containerd://1.4.3-k3s3
4.给new-host-452主机worker角色
kubectl label nodes new-host-452 node-role.kubernetes.io/worker=
安装仪表盘
在github中找到最新的版本进行下载
1.查看最新版本,浏览器加载下面链接
https://github.com/kubernetes/dashboard/releases
2.下载推荐的yaml文件,其中version是变量
https://raw.githubusercontent.com/kubernetes/dashboard/version/aio/deploy/recommended.yaml
3.为了便于访问,修改recommended.yaml文件中,设置servier中的type,和nodePort
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30002
selector:
k8s-app: kubernetes-dashboard
4.新增dashboard.admin-user.yml文件
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
dashboard.admin-user-role.yml文件
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
在server1中执行命令,我把yaml文件放到data目录中
k3s kubectl create -f /data/recommended.yaml -f /data/dashboard.admin-user-role.yml -f/data/dashboard.admin-user.yml
5.在浏览器中一下地址进行访问,其中serverIp可以是服务器中的任意一个地址,我这里是172.18.11.232,233,234
http://serverIp:30002
6.如下界面,需要输入token
7.输入命令查询令牌,将token贴入浏览器中点击”登录“可以直接查看已部署的k3s信息
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
问题
安装后启动问题,暂时没有影响,服务也启动的。通过命令查看是防火墙没关闭或者未添加端口导致无法访问其他节点
Job for k3s.service failed because the control process exited with error code. See "systemctl status k3s.service" and "journalctl -xe" for details.