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

相关文章

Spring Boot 整合 SSE的高级实践(Server-Sent Events)

《SpringBoot整合SSE的高级实践(Server-SentEvents)》SSE(Server-SentEvents)是一种基于HTTP协议的单向通信机制,允许服务器向浏览器持续发送实... 目录1、简述2、Spring Boot 中的SSE实现2.1 添加依赖2.2 实现后端接口2.3 配置超时时

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

Redis分片集群的实现

《Redis分片集群的实现》Redis分片集群是一种将Redis数据库分散到多个节点上的方式,以提供更高的性能和可伸缩性,本文主要介绍了Redis分片集群的实现,具有一定的参考价值,感兴趣的可以了解一... 目录1. Redis Cluster的核心概念哈希槽(Hash Slots)主从复制与故障转移2.

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio