《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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41979.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41979.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41979.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【抖音直播小玩法】介紹

一、是什么 直播小玩法是基于抖音直播場景的新型實時互動內容。直播小玩法由開發者自主開發&#xff0c;接入平臺并開放給抖音主播掛載使用。開發者提供創意&#xff0c;依托平臺生態&#xff0c;獲取收益。 介入標準&#xff1a; 企業開發者&#xff0c;暫不支持個人開發者…

DAMO-YOLO:實時目標檢測設計的報告

ReadPaperhttps://readpaper.com/pdf-annotate/note?pdfId4748421678288076801eId1920373270663763712 Abstract 在本報告中&#xff0c;我們提出了一種快速準確的目標檢測方法&#xff0c;稱為DAMO-YOLO&#xff0c;它比最先進的YOLO系列實現了更高的性能。DAMO-YOLO 通過…

C++ Primer Plus: 第10章(2)

第10章編程題&#xff1a; &#xff08;1&#xff09; Account.h: #ifndef ACCOUNT_H_ #define ACCOUNT_H_#include <string>class Account { private:std::string name ;std::string code ;double money ; public:Account() ;Account(std::string Name, std::string Co…

Vue history和hash模式

目錄 一、簡介 一、簡介 ~~~~~~~~ 在Vue.js中&#xff0c;路由模式是用來管理應用程序中不同頁面之間的導航的機制。Vue Router支持兩種常見的路由模式&#xff1a;history模式和hash模式。 History 模式&#xff1a; ~~~~~~~~ History模式使用瀏覽器的history.pushState API …

紅帆OA SQL注入漏洞復現

0x01 產品簡介 紅帆iOffice.net從最早滿足醫院行政辦公需求&#xff08;傳統OA&#xff09;&#xff0c;到目前融合了衛生主管部門的管理規范和眾多行業特色應用&#xff0c;是目前唯一定位于解決醫院綜合業務管理的軟件&#xff0c;是最符合醫院行業特點的醫院綜合業務管理平…

Lnton羚通關于如何使用nanoPC-T4 安裝OpenCV?

nanoPC-T4 安裝 OpenCV Note: OpenCV has been pre-installed in FriendlyCore/FriendlyDesktop (Version after 201905) and does not require manual installation. Please download the latest FriendlyCore/FriendlyDesktop Image file from the following URL: http://do…

springboot 自定義注解

1、引入maven依賴&#xff08;版本太低也會導致不生效&#xff09; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>2.7.10</version></dependency…

深度分析納斯達克上市公司慧擇的競爭優勢和投資價值

來源&#xff1a;猛獸財經 作者&#xff1a;猛獸財經 一、保險行業的現狀、競爭與機遇 在疫情期間&#xff0c;很多行業的經營理念與經營方式&#xff0c;甚至客戶行為、客戶需求都發生了變化&#xff0c;進而催生出新的機遇。保險行業亦是如此&#xff0c;受疫情影響&#xf…

用Python編程實現百度自然語言處理接口的對接,助力你開發智能化處理程序

用Python編程實現百度自然語言處理接口的對接&#xff0c;助力你開發智能化處理程序 隨著人工智能的不斷進步&#xff0c;自然語言處理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;成為了解決文本處理問題的重要工具。百度自然語言處理接口提供了一系…

騰訊開啟2024校招,主要招聘5大類崗位

近日&#xff0c;騰訊的大動作一個接一個&#xff0c;前腳剛公布2023上半年財報&#xff0c;后腳就開啟了2024校招&#xff0c;不得不讓人感嘆騰訊真速度&#xff01; 此次招聘對象為畢業時間在2023年9月至2024年8月期間的2024屆應屆畢業生&#xff0c;覆蓋北上廣深等多個城市…

異步編程框架Seastar介紹

使用Seastar進行異步(Asynchronout)編程 介紹 我們在本文中介紹的Seastar&#xff0c;是一個用于在現代多核機器上&#xff0c;編寫高效復雜的服務器應用程序的C庫。 傳統上&#xff0c;用于編寫服務器應用程序的編程語言庫和框架已經分為兩個不同的陣營&#xff1a;那些注重…

環境與能源創新專題:地級市綠色創新、碳排放與環境規制數據

數據簡介&#xff1a;推動綠色發展&#xff0c;促進人與自然和諧共生是重大戰略舉措。綠色發展強調“綠水青山就是金山銀山”&#xff0c;人與自然和諧共生重在正確處理生態環境保護與經濟發展的關系。在著力于實現綠色發展的過程中&#xff0c;綠色創新是綠色發展的重要驅動因…

關于API數據接口獲取商品的數據的說明

獲取商品數據已經成為許多應用程序的重要組成部分。為了實現這一目標&#xff0c;許多公司和技術開發者使用API數據接口來獲取相關數據。本文將詳細介紹如何使用API數據接口獲取商品數據&#xff0c;并使用Python作為編程語言示例來展示相關代碼。 API數據接口是一種通信協議&…

WPF的CheckBox中的三個狀態

WPF的CheckBox中的三個狀態 CheckBox控件和RadioButton控件是繼承自ToggleButton類&#xff0c;這意味著用戶可切換他們的開關狀態&#xff0c;其中IsChecked屬性是可空的Boolean類型&#xff0c;這意味著該屬性可以設置為true&#xff0c;false或null。 null值表示不確定狀態…

spring.HttpMessageNotReadableException: JSON parse error

實體類如下&#xff1a; Value public class Search{//搜索內容String value;//是否模糊搜索boolean fuzzy true; //其實這樣寫并不是“默認”模糊搜索&#xff0c;而是“一定是”模糊搜索 }spring.HttpMessageNotReadableException: JSON parse error: Cannot construct ins…

GPU Microarch 學習筆記 [1]

WARP GPU的線程從thread grid 到thread block&#xff0c;一個thread block在CUDA Core上執行時&#xff0c;會分成warp執行&#xff0c;warp的顆粒度是32個線程。比如一個thread block可能有1024個線程&#xff0c;分成32個warp執行。 上圖的CTA&#xff08;cooperative thre…

10條SQL優化技巧

一、一些常見的SQL實踐 &#xff08;1&#xff09;負向條件查詢不能使用索引 select * from order where status!0 and stauts!1 not in/not exists都不是好習慣 可以優化為in查詢&#xff1a; select * from order where status in(2,3) &#xff08;2&#xff09;前導模…

Codeforces Round 893 (Div. 2)B題題解

文章目錄 [The Walkway](https://codeforces.com/contest/1858/problem/B)問題建模問題分析1.分析所求2.如何快速計算每個商販被去除后的餅干數量代碼 The Walkway 問題建模 給定n個椅子&#xff0c;其中有m個位置存在商販&#xff0c;在商販處必須購買餅干吃&#xff0c;每隔…

Python程序設計——字符串處理的特殊方法

學習目標&#xff1a; 學習如何創建字符串使用len、min和max函數獲取一個字符串的長度、串中的最大和最小的字符使用下標運算符([])訪問字符串中的元素使用截取運算符str[ start:end]從較長的字符串中得到一個子串使用運算符連接兩個字符串&#xff0c;通過*運算符復制一個字符…

【Odroid C4】交叉編譯工具鏈安裝以及QT交叉編譯環境搭建

【Odroid C4】交叉編譯工具鏈安裝以及QT交叉編譯環境搭建 虛擬機環境&#xff0c;UBUNTU20.04 文章目錄 【Odroid C4】交叉編譯工具鏈安裝以及QT交叉編譯環境搭建一、Odroid C4交叉編譯工具鏈安裝二、QT下載及編譯安裝1.QT下載2.交叉編譯QT 配置QtCreator可以[參考](https://bl…