目录
1. 说明:
2. 安装准备
2.1 每个节点设置双网卡,一卡做网桥(外部访问),一卡做NAT(集群内网访问)
2.2 准备一个可用的代理服务器
3. 由于虚拟机崩溃(停电,宿主机自更),所导致的K8s集群不能启动问题处理
4. 关于KubeSphere
5. 总结几点
1. 说明:
经过了之前的捣鼓,觉得还是有必要再写一篇总结经验,以后少走弯路。
曾经实践过的方案:
集群方案 | 遇到的主要问题 | 建议 |
香橙派+树莓派搭建集群 | - 性能问题,网络稳定性问题,尤其是wifi环境下 - 软件对ARM64的支持 - 由于缺少附加原硬盘,CEPH难以安装 | 简单的K8S应用 |
基于VirtualBox7.x 虚拟机搭建的集群 | - 性能问题,虚拟网卡 PING连耗时比VMWare多一个数量级 - 资源消耗大 - CEPH安装后表现极不稳定 | 令人失望,好处是可以导出标准化版本的虚拟机格式 |
基于VMWare WorkStation Pro 虚拟机搭建的集群 | - 只能以快照形式存在,不能导出标准化虚拟机格式 | 性能卓越,相对稳定 |
2. 安装准备
2.1 每个节点设置双网卡,一卡做网桥(外部访问),一卡做NAT(集群内网访问)
Name | 网桥网卡 (esp03-VirtualBox/ ens33-VMWare) | Nat 网卡 (esp04-VirtualBox /ens34-VMWare) 编辑 |
---|---|---|
master0.c0.k8s.ia | 192.168.0.160 | 10.0.2.10 |
worker0.c0.k8s.ia | 192.168.0.161 | 10.0.2.11 |
worker1.c0.k8s.ia | 192.168.0.162 | 10.0.2.12 |
注意使用VMWare时
- NAT网卡指定IP范围,从 10.0.2.0开始,然后在虚拟机内指定IP
# cat /etc/netplan/00-installer-config.yaml
network:
ethernets:
ens33:
dhcp4: true
ens34:
dhcp4: false
addresses: [10.0.2.10/24]
version: 2
- 网桥网卡需指定桥接的物理网卡,不然启动后会拿不到具体IPV4 address,如图: 虚拟网络编辑器
2.2 准备一个可用的代理服务器
# 编辑 /etc/hosts
定义 proxy-server0
# 添加容器代理配置 (/lib/systemd/system/containerd.service)
[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd
Environment="HTTP_PROXY=http://proxy-server0:1081"
Environment="HTTPS_PROXY=http://proxy-server0:1081"
Environment="NO_PROXY=*.k8s.ia,*.aliyun.com,*.aliyuncs.com,*.huaweicloud.com,localhost,127.0.0.1,0.0.0.0,10.0.0.0/8,172.17.0.0/12,192.168.0.0/16"
# 添加当前用户代理配置 (~/.profile)
export http_proxy=http://proxy-server0:1081
export https_proxy=http://proxy-server0:1081
export no_proxy=*.k8s.ia,*.aliyun.com,*.aliyuncs.com,*.huaweicloud.com,localhost,127.0.0.1,0.0.0.0,10.0.0.0/8,172.17.0.0/12,192.168.0.0/16
重启服务,测试下 curl www.google.com
3. 由于虚拟机崩溃(停电,宿主机自更),所导致的K8s集群不能启动问题处理
出错:The connection to the server apiserver.k8s:6443 was refused - did you specify the right host or port
目前没找到合适的完全恢复方法,下面的命令只能在丢失一些etcd数据的情况下恢复kubelet服务:
mv /var/lib/etcd/member/* /opt
systemctl restart kubelet
4. 关于KubeSphere
安装方式 | 评论 |
All in one 一键式安装 | 不靠谱,错误很多 |
基于已装好的K8S集群上安装 | 靠谱 |
- 解决Error: failed calling webhook "users.iam.kubesphere.io"
set ks-controller-manage hostNetwork: true
kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io users.iam.kubesphere.io
5. 总结几点
- K8s的集群鲁棒性相对比较脆弱,断电或不正常重启都极可能造成集群服务不能启动(6443 api不能访问之类的),所以ceph等要求安稳性高的服务就尽量不要部署在上面了,另需做好快照准备,以便及时恢复。