K8S集群实践之十:虚拟机部署阶段性总结

目录

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.ia192.168.0.16010.0.2.10
worker0.c0.k8s.ia192.168.0.16110.0.2.11
worker1.c0.k8s.ia192.168.0.16210.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等要求安稳性高的服务就尽量不要部署在上面了,另需做好快照准备,以便及时恢复。

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
搭建K8s集群一般需要至少两个节点,你可以在Ubuntu虚拟上搭建一个包含两个节点的集群。下面是一个简单的流程: 1. 在Ubuntu虚拟上安装Kubernetes和Docker: ``` sudo apt-get update sudo apt-get install docker.io sudo apt-get install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo touch /etc/apt/sources.list.d/kubernetes.list echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl ``` 2. 初始化K8s集群,并将第一个节点设置为主节点: ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 3. 安装网络插件: ``` sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 4. 将其他节点加入到集群中: ``` sudo kubeadm join <主节点IP>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash> ``` 5. 部署一个Deployment: ``` sudo kubectl create deployment nginx --image=nginx ``` 6. 部署一个Service: ``` sudo kubectl expose deployment nginx --port=80 --type=LoadBalancer ``` 7. 通过Service的IP地址访问部署的Nginx服务。 8. 进行弹性部署,可以通过以下命令来修改Deployment的副本数: ``` sudo kubectl scale deployment nginx --replicas=3 ``` 以上是一个简单的K8s集群搭建流程,可以根据实际需要进行适当的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bennybi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值