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

2024-02-16 06:44

本文主要是介绍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.yamlnetwork:ethernets:ens33:dhcp4: trueens34:dhcp4: falseaddresses: [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/* /optsystemctl restart kubelet

4. 关于KubeSphere

安装方式评论
All in one 一键式安装不靠谱,错误很多
基于已装好的K8S集群上安装靠谱

- 解决Error: failed calling webhook "users.iam.kubesphere.io"

set ks-controller-manage hostNetwork: truekubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io users.iam.kubesphere.io 

5. 总结几点 

- K8s的集群鲁棒性相对比较脆弱,断电或不正常重启都极可能造成集群服务不能启动(6443 api不能访问之类的),所以ceph等要求安稳性高的服务就尽量不要部署在上面了,另需做好快照准备,以便及时恢复。

这篇关于K8S集群实践之十:虚拟机部署阶段性总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/713799

相关文章

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

k8s部署MongDB全过程

《k8s部署MongDB全过程》文章介绍了如何在Kubernetes集群中部署MongoDB,包括环境准备、创建Secret、创建服务和Deployment,并通过Robo3T工具测试连接... 目录一、环境准备1.1 环境说明1.2 创建 namespace1.3 创建mongdb账号/密码二、创建Sec

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或