《Kubernetes部署篇:Ubuntu20.04基于外部etcd+部署kubernetes1.24.16集群(多主多从)》

一、架构图

如下图所示:

在这里插入图片描述


二、环境信息

1、部署规划

主机名K8S版本系统版本内核版本IP地址备注
k8s-master-631.24.16Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.63master节点 + etcd节点
k8s-master-641.24.16Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.64master节点 + etcd节点
k8s-master-651.24.16Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.65master节点 + etcd节点
k8s-worker-661.24.16Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.66worker节点
----192.168.1.146vip
k8s-lb-01-Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.185Nginx + keepalived
k8s-lb-02-Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.205Nginx + keepalived

2、集群网段

宿主机集群Pod网段集群Service网段
192.168.1.0/2410.48.0.0/1610.96.0.0/16

说明:Kubernetes高可用集群基于kubeadm工具部署,其中etcd集群采用二进制方式部署。由于测试机器数量有限,etcd服务部署在master节点上,你可以根据自己需要,使用单独的主机部署etcd集群服务。


三、安装和配置先决条件

3.1、主机名设置

说明:分别在对应的节点IP上设置主机名。

root@lolaage-virtual-machine:~#  hostnamectl set-hostname k8s-master-63
root@lolaage-virtual-machine:~#  hostnamectl set-hostname k8s-master-64
root@lolaage-virtual-machine:~#  hostnamectl set-hostname k8s-master-65
root@lolaage-virtual-machine:~#  hostnamectl set-hostname k8s-worker-66
root@lolaage-virtual-machine:~#  hostnamectl set-hostname k8s-lb-01
root@lolaage-virtual-machine:~#  hostnamectl set-hostname k8s-lb-02

3.2、配置主机hosts

说明:以下操作无论是master节点和worker节点均需要执行。

root@lolaage-virtual-machine:~# vim /etc/hosts
192.168.1.63  k8s-master-63
192.168.1.64  k8s-master-64
192.168.1.65  k8s-master-65
192.168.1.66  k8s-worker-66

3.3、关闭防火墙

说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。

root@lolaage-virtual-machine:~# ufw disable && systemctl stop ufw && systemctl disable ufw

3.4、关闭swap分区

说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。

root@lolaage-virtual-machine:~# swapoff -a
root@lolaage-virtual-machine:~# sed -i '/swap/ s/^/#/'  /etc/fstab

3.5、时间时区同步

说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。

1、设置时区为Asia/Shanghai,如果已经是则请忽略

root@k8s-master-65:~# timedatectlLocal time: 五 2023-03-31 14:11:36 CSTUniversal time: 五 2023-03-31 06:11:36 UTCRTC time: 五 2023-03-31 06:11:36    Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes                       NTP service: active                    RTC in local TZ: no  

2、使用chrony同步时间

root@k8s-master-63:~# apt install chrony -y
root@k8s-master-63:~# vim /etc/chrony/chrony.conf
server ntp.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp1.aliyun.com minpoll 4 maxpoll 10 iburst
#pool ntp.ubuntu.com        iburst maxsources 4
#pool 0.ubuntu.pool.ntp.org iburst maxsources 1
#pool 1.ubuntu.pool.ntp.org iburst maxsources 1
#pool 2.ubuntu.pool.ntp.org iburst maxsources 2root@k8s-master-63:~# systemctl enable chronyd.service
root@k8s-master-63:~# systemctl restart chronyd.service
root@k8s-master-63:~# systemctl status chronyd.service

阿里云NTP服务器地址列表,状态检测如下所示:
在这里插入图片描述

chrony客户端上的一些常用命令:

# 1、查看可用的时间同步源
chronyc sources -v
# 2、查看时间同步源的状态
chronyc sourcestats -v
# 3、对客户端系统时间进行强制同步
chronyc -a makestep

3.6、修改内核参数

说明:以下操作无论是master节点、worker节点均需要执行。

说明:有一些ipv4的流量不能走iptables链,因为linux内核是一个过滤器,所有流量都会经过他,然后再匹配是否可进入当前应用进程去处理,所以会导致流量丢失。配置k8s.conf文件,如下所示:

# 1、加载br_netfilter和overlay模块
root@k8s-master-63:~# cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
root@k8s-master-63:~# modprobe overlay
root@k8s-master-63:~# modprobe br_netfilter
# 2、设置所需的sysctl参数,参数在重新启动后保持不变
root@k8s-master-63:~# cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF
# 3、应用sysctl参数而不重新启动
root@k8s-master-63:~# sysctl --system

3.7、启用IPVS模式

说明:以下操作无论是master节点、worker节点节点均需要执行。

# kube-proxy开启ipvs的前提需要加载以下的内核模块
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4

注意:如果出现modprobe: FATAL: Module nf_conntrack_ipv4 not found in directory /lib/modules/5.15.0-69-generic错误,这是因为使用了高内核,当前内核版本为5.15.0-69-generic,在高版本内核已经把nf_conntrack_ipv4替换为nf_conntrack了。

# 1、安装ipvs
root@k8s-master-63:~#  apt -y install ipvsadm ipset sysstat conntrack
# 2、加载内核模块脚本
root@k8s-master-63:~# cat > /etc/profile.d/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
# 3、赋予权限
root@k8s-master-63:~# chmod 755 /etc/profile.d/ipvs.modules
# 4、执行加载模块脚本
root@k8s-master-63:~# bash /etc/profile.d/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

四、安装etcd集群

4.1、生成etcd集群相关证书

说明:手动创建证书比较麻烦,这里采用了etcd证书一键生成工具来创建etcd相关证书,可以在任意一节点主机上生成etcd集群相关证书。

操作步骤如下图所示:
在这里插入图片描述
1、有一些ipv4的流量不能走iptables链,因为linux内核是一个过滤器,所有流量都会经过他,然后再匹配是否可进入当前应用进程去处理,所以会导致流量丢失。配置k8s.conf文件,如下所示:

2、其中ca-key.pem、ca.pem、apiserver-etcd-client.pem、apiserver-etcd-client-key.pem文件是kube-apiserver连接etcd所需证书。这4个证书文件必须要上传到 所有master节点上,需提前手动创建好证书存放目录。其中ca-key.pem、ca.pem建议目录为/etc/kubernetes/pki/etcd,apiserver-etcd-client.pem、apiserver-etcd-client-key.pem建议目录为 /etc/kubernetes/pki

3、其中ca-key.pem、ca.pem、healthcheck-client-key.pem、healthcheck-client.pem、peer-key.pem、peer.pem、server-key.pem、server.pem是etcd集群所需要证书。这8个证书文件必须要上传到 所有etcd节点上。这8个证书文件建议目录为/etc/kubernetes/pki/etcd。

4、如果某一个节点如k8s-master-63节点,它即为master节点,也是etcd节点,则证书文件列表如下所示:
在这里插入图片描述

5、这里就默认在k8s-master-63(即192.168.1.63)节点上生成相关证书,并将证书分别复制到etcd各个节点相应目录及master节点相关目录下,其中证书目录需提前创建好,当前K8S集群环境apiserver节点和etcd节点为同一主机,所以拷贝完之后证书文件列表如上图所示,这里就以k8s-master-63(即192.168.1.63)节点展示,其它节点也跟这个一样。

证书文件秘钥文件建议路径节点说明
ca.pemca-key.pem/etc/kubernetes/pki/etcd etcd所在节点etcd集群ca根证书
peer.pempeer-key.pem/etc/kubernetes/pki/etcd etcd所在节点etcd集群peer证书
server.pemserver-key.pem/etc/kubernetes/pki/etcd etcd所在节点etcd集群server证书
healthcheck-client.pemhealthcheck-client-key.pem/etc/kubernetes/pki/etcd etcd所在节点etcd集群client证书
apiserver-etcd-client.pemapiserver-etcd-client-key.pem/etc/kubernetes/pki apiserver所在节点apiserver连接etcd客户端证书

4.2、二进制安装etcd集群

4.2.1、下载软件包

说明:以下操作须在etcd所有节点操作。

wget https://github.com/etcd-io/etcd/releases/download/v3.5.6/etcd-v3.5.6-linux-amd64.tar.gz
tar axf etcd-v3.5.6-linux-amd64.tar.gz 
mv etcd-v3.5.6-linux-amd64/etcd* /usr/bin

4.2.2、创建Service文件

说明:以下操作只需在etcd01节点操作。

1、etcd01节点etcd.service文件如下所示:
root@k8s-master-63:~# cat /etc/systemd/system/etcd.service 
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
Documentation=https://github.com/coreos[Service]
Type=notify
WorkingDirectory=/var/lib/etcd
ExecStart=/usr/bin/etcd \--name=etcd01 \--cert-file=/etc/kubernetes/pki/etcd/server.pem \--key-file=/etc/kubernetes/pki/etcd/server-key.pem \--peer-cert-file=/etc/kubernetes/pki/etcd/peer.pem \--peer-key-file=/etc/kubernetes/pki/etcd/peer-key.pem \--trusted-ca-file=/etc/kubernetes/pki/etcd/ca.pem \--peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.pem \--initial-advertise-peer-urls=https://192.168.1.63:2380 \--listen-peer-urls=https://192.168.1.63:2380 \--listen-client-urls=https://192.168.1.63:2379,http://127.0.0.1:2379 \--advertise-client-urls=https://192.168.1.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/99057.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法刷题之数组篇(1)】

目录 1.leetcode-59. 螺旋矩阵 II&#xff08;题2.题3相当于二分变形&#xff09;2.leetcode-33. 搜索旋转排序数组3.leetcode-81. 搜索旋转排序数组 II(与题目2对比理解)&#xff08;题4和题5都是排序双指针&#xff09;4.leetcode-15. 三数之和5.leetcode-18. 四数之和6.leet…

ByteV“智农”平台--数字乡村可视化

“智农”平台基于自主可控的数字孪生技术、物联网技术、大数据技术&#xff0c;构建全流程的新型农业一体化管理平台&#xff0c;围绕产运销管理全流程&#xff0c;实现生产->存储->包装->运输->销售的全链条管理。融合农业数据管理、农业数据预警显示、多维数据综…

回归预测 | MATLAB实现IPSO-SVM改进粒子群优化算法优化支持向量机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现IPSO-SVM改进粒子群优化算法优化支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现IPSO-SVM改进粒子群优化算法优化支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xf…

Java智慧工地系统源码(微服务+Java+Springcloud+Vue+MySQL)

智慧工地系统是依托物联网、互联网、AI、可视化建立的大数据管理平台&#xff0c;是一种全新的管理模式&#xff0c;能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度&#xff0c;以及施工过程管理的进度、质量、安全三…

WPF国际化的实现方法(WpfExtensions.Xaml)

https://blog.csdn.net/eyupaopao/article/details/120090431 resx资源文件实现 resx资源文件&#xff0c;实现的过程比第一种复杂&#xff0c;但resx文件本身编辑比较简单&#xff0c;维护起来比较方便。需要用到的框架&#xff1a;WpfExtensions.Xaml 为每种语言添加.resx资…

Nginx的介绍

本资料转载于传智教育-解锁你的IT职业薪未来&#xff0c;仅用于学习和讨论&#xff0c;如有侵权请联系 视频地址&#xff1a;04-Nginx的优点_哔哩哔哩_bilibili 资源文档&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1RlFl92FdxRUqc858JSxPSQ 提取码&#xff1a;12…

Postman接口自动化测试实例

一.实例背景 在实际业务中&#xff0c;经常会出现让用户输入用户密码进行验证的场景。而为了安全&#xff0c;一般都会先请求后台服务器获取一个随机数做为盐值&#xff0c;然后将盐值和用户输入的密码通过前端的加密算法生成加密后串传给后台服务器&#xff0c;后台服务器接到…

每个.NET开发都应掌握的C#委托事件知识点

上篇文章讲述了C#接口的知识点&#xff0c;本文将介绍C#委托事件知识点。C#作为.NET开发的核心语言之一&#xff0c;提供了丰富的特性来支持面向对象编程和事件驱动的模型。其中&#xff0c;委托和事件是C#中不可或缺的关键概念&#xff0c;每个.NET开发者都应该深入理解它们的…

常用字符串匹配算法

一、BF匹配 BF算法中的BF是Brute Force的缩写&#xff0c;中文叫作暴力匹配算法&#xff0c;也叫朴素匹配算法。 BF算法的时间复杂度很高&#xff0c;是O(nm)&#xff0c;但在实际的开发中&#xff0c;它却是一个比较常用的字符串匹配算法。 第一&#xff0c;实际的软件开发中…

JVM——配置常用参数,GC调优策略

文章目录 JVM 配置常用参数Java内存区域常见配置参数概览堆参数回收器参数项目中常用配置常用组合 常用 GC 调优策略GC 调优原则GC 调优目的GC 调优策略 JVM 配置常用参数 Java内存区域常见配置参数概览堆参数&#xff1b;回收器参数&#xff1b;项目中常用配置&#xff1b;常…

【nodejs】用Node.js实现简单的壁纸网站爬虫

1. 简介 在这个博客中&#xff0c;我们将学习如何使用Node.js编写一个简单的爬虫来从壁纸网站获取图片并将其下载到本地。我们将使用Axios和Cheerio库来处理HTTP请求和HTML解析。 2. 设置项目 首先&#xff0c;确保你已经安装了Node.js环境。然后&#xff0c;我们将创建一个…

cuOSD(CUDA On-Screen Display Library)库的学习

目录 前言1. cuOSD1.1 Description1.2 Getting started1.3 For Python Interface1.4 Demo1.5 Performance Table 2. cuOSD案例2.1 环境配置2.2 simple案例2.3 segment案例2.4 segment2案例2.5 polyline案例2.6 comp案例2.7 perf案例 3. cuOSD浅析3.1 simple_draw函数 4. 补充知…

小程序中display:flex和v-show,v-show不生效,uni-app

小程序中display:flex和v-show&#xff0c;v-show不生效、、 解决方案&#xff1a; display&#xff1a;flex样式的优先级高于了v-show &#xff0c;v-show其实就是display&#xff1a;none&#xff0c;display&#xff1a;flex优先级高于display&#xff1a;none。 使用 :s…

【系统工具】开源服务器监控工具WGCLOUD初体验

经常看到服务器上传下载流量一直在跑&#xff0c;也不知道是啥软件在偷偷联网~~~官网地址&#xff1a;www.wgstart.com&#xff0c;个人使用是免费的。 WGCLOUD官网介绍 "WGCLOUD支持主机各种指标监测&#xff08;cpu使用率&#xff0c;cpu温度&#xff0c;内存使用率&am…

了解生成对抗网络 (GAN)

一、介绍 Yann LeCun将其描述为“过去10年来机器学习中最有趣的想法”。当然&#xff0c;来自深度学习领域如此杰出的研究人员的赞美总是对我们谈论的主题的一个很好的广告&#xff01;事实上&#xff0c;生成对抗网络&#xff08;简称GAN&#xff09;自2014年由Ian J. Goodfel…

K8s学习笔记1

一、课程介绍&#xff1a; 1、背景&#xff1a; 1&#xff09;从基础设备主机化向容器化转换。 2&#xff09;从人肉式运维工作模式向自动化运维模式转换。 3&#xff09;从自动化运维体系向全体系智能化运维模式转换。 2、课程目标人群: 1&#xff09;掌握Linux操作系统基…

【数据分享】2006-2021年我国城市级别的节约用水相关指标(免费获取\20多项指标)

《中国城市建设统计年鉴》中细致地统计了我国城市市政公用设施建设与发展情况&#xff0c;在之前的文章中&#xff0c;我们分享过基于2006-2021年《中国城市建设统计年鉴》整理的2006—2021年我国城市级别的市政设施水平相关指标、2006-2021年我国城市级别的各类建设用地面积数…

ES:一次分片设计问题导致的故障

### 现象&#xff1a; 1. 单节点CPU持续高 2.写入骤降 3.线程池队列积压&#xff0c;但没有reject 4.使用方没有记录日志 ### 排查 1.ES监控 只能看到相应的结果指标&#xff0c;无法反应出原因。 2.ES日志&#xff1a;大量日志打印相关异常&#xff08;routate等调用栈&a…

【仿写tomcat】六、解析xml文件配置端口、线程池核心参数

线程池改造 上一篇文章中我们用了Excutors创建了线程&#xff0c;这里我们将它改造成包含所有线程池核心参数的形式。 package com.tomcatServer.http;import java.util.concurrent.*;/*** 线程池跑龙套** author ez4sterben* date 2023/08/05*/ public class ThreadPool {pr…

微服务-Ribbon(负载均衡)

负载均衡的面对多个相同的服务的时候&#xff0c;我们选择一定的策略去选择一个服务进行 负载均衡流程 Ribbon结构组成 负载均衡策略 RoundRobinRule&#xff1a;简单的轮询服务列表来选择服务器AvailabilityFilteringRule 对两种情况服务器进行忽略&#xff1a; 1.在默认情…