Kubernetes(K8S) 集群環境搭建指南

Kubernetes(簡稱K8s)是一個開源的容器編排平臺,旨在自動化部署、擴展和管理容器化應用。K8S環境搭建過程比較復雜,涉及到非常多組件安裝和系統配置,本文將會詳細介紹如何在服務器上搭建好Kubernetes集群環境。

?

在學習和使用Kubernetes過程中,K8S環境搭建是新手非常頭疼的一環,K8S提供了多種安裝的方式包括Minikube、kubeadm、Rancher、sealos等,目前比較常見的是采用kubeadm和sealos方式進行安裝,sealos相比kubeadm更加適合入門學習者,只需要幾條命令就可以完成整個集群的部署。而Kubeadm適用于生產環境和復雜場景,針對希望有更多個性化定制的用戶,但安裝和維護復雜度較高。本文包含了kubeadm和sealos兩種方式的安裝,作為新手更加推薦使用sealos。

集群環境準備

1、集群環境說明

要求條件:

  1. 一臺或多臺Linux系統機器,推薦使用的是centos 7.5版本或以上

  2. 每臺Linux至少有2GB的內存和2個CPU、硬盤30GB

  3. 所有的機器可以相互ping通

集群結構:

  • kubernetes集群主要包含master(主控節點)和node(工作節點)組成,master和node一般是多對多或者一對多的模式,

  • 為了學習使用這里選擇1個master節點和多個node節點(這里一個節點相當于就是一臺Linux系統主機)

    部署集群圖如下:

圖片

這里為了學習方便,采用了在本地電腦安裝虛擬軟件VMware(當然也可以使用VitualBox),然后再虛擬機VMware中安裝centos,虛擬機安裝centos過程省略,大家可以自行百度搜索相關教程,這里分別這里分別安裝好master、node1、node2虛擬機:

圖片

2、配置節點主機名

執行以下命令,依次配置各個節點主機名,這里是為了方便后面服務的訪問

# master節點[root@localhost ~]# hostnamectl set-hostname master && bash# node1節點[root@localhost ~]# hostnamectl set-hostname node1 && bash# node2節點[root@localhost?~]#?hostnamectl?set-hostname?node2?&&?bash

3、配置節點網絡

進入VMware -> 設置 ->虛擬網絡編輯器,查看VMnet8對應的子網IP地址:

圖片

分別編輯各個節點的網絡配置文件

[root@master?~]#?vim?/etc/sysconfig/network-scripts/ifcfg-ens33

修改以下關鍵項

master節點:

ONBOOT=yesIPADDR=192.168.10.100GATEWAY=192.168.10.2DNS1=114.114.114.114

node1節點:

ONBOOT=yesIPADDR=192.168.10.101GATEWAY=192.168.10.2DNS1=114.114.114.114

node2節點:

ONBOOT=yesIPADDR=192.168.10.102GATEWAY=192.168.10.2DNS1=114.114.114.114

4、修改hosts文件

編輯/etc/hosts文件,配置主機名和IP地址的映射解析,這一步是為了方便節點間的相互訪問,分別在三臺主機下添加以下的配置:???????

192.168.10.100 master192.168.10.101 node1192.168.10.102?node2

圖片

5、測試虛擬機網絡

通過Xshell ssh工具去連接對應的節點主機(其他的ssh連接工具都可以)

測試各個節點主機是否能夠訪問外網:

圖片

測試各個節點主機之間是否能夠相互ping通

圖片

集群環境初始化

1、關閉防火墻

在三個節點上分別執行???????

[root@master ~]# systemctl stop firewalld[root@master?~]#?systemctl?disable?firewalld

2、關閉SELINUX

在三個節點上分別執行???????

# 編輯 /etc/selinux/config 文件,修改SELINUX的值為disableSELINUX=disabled

注意:生效需要重啟linux

3、關閉swap分區

在三個節點上分別執行???????

# 編輯/etc/fstab 文件,注釋掉 /dev/mapper/centos-swap swap 這一行#?/dev/mapper/centos-swap?swap

注意:生效需要重啟linux

4、修改內核參數

在三個節點上分別執行???????

# 增加/etc/sysctl.d/kubernetes.conf 文件,添加如下配置:net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1# 重新加載配置[root@master ~]# sysctl -p# 加載網橋過濾模塊[root@master ~]# modprobe br_netfilter# 查看網橋過濾模塊是否加載成功[root@master?~]#?lsmod?|?grep?br_netfilter

出現如下結果代表OK:

圖片

5、配置時間同步

在三個節點上分別執行

[root@master ~]# systemctl start chronyd[root@master ~]# systemctl enable chronyd[root@master?~]#?date

6、加載ipvs模塊

在三個節點上分別執行???????

# 1.安裝ipset和ipvsadm[root@master ~]# yum install ipset ipvsadm -y# 2.添加需要加載的模塊寫入腳本文件[root@master ~]# cat <<EOF> /etc/sysconfig/modules/ipvs.modules# 將以下腳本內容復制到命令行回車即可#!/bin/bashmodprobe -- ip_vsmodprobe -- ip_vs_rrmodprobe -- ip_vs_wrrmodprobe -- ip_vs_shmodprobe -- nf_conntrack_ipv4EOF

圖片

# 3.為腳本添加執行權限[root@master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules# 4.執行腳本文件[root@master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules# 5.查看對應的模塊是否加載成功[root@master?~]#?lsmod?|?grep?-e?ip_vs?-e?nf_conntrack_ipv4

圖片

以上操作完成之后記得分別重啟Linux主機!!!

sealos方式安裝K8S集群

1、下載sealos

wget?https://github.com/labring/sealos/releases/download/v4.3.7/sealos_4.3.7_linux_amd64.tar.gz

2、解壓賦予權限

tar?zxvf?sealos_4.3.7_linux_amd64.tar.gz?sealos?&&?chmod?+x?sealos?&&?mv?sealos?/usr/bin

3、安裝K8S集群

sealos run labring/kubernetes:v1.25.0 labring/helm:v3.8.2 labring/calico:v3.24.1 \--masters 192.168.10.100 \--nodes?192.168.10.101,192.168.10.102?-p?root?

參數說明:

  • --masters master 節點地址列表

  • –nodes node 節點地址列表

  • -p ssh登錄密碼(如果配置了ssh免密則不需要加-p參數)

4、查看連接狀態

在master節點上面執行kubectl get nodes命令查看master和node節點狀態

[root@master?~]#?kubectl?get?nodes

這里會顯示 NotReady ,代表未就緒狀態:

圖片

需要等待一會兒,節點狀態會自動被修改為Ready:

圖片

kubeadm方式安裝K8S集群

1、安裝Docker

# 1、切換鏡像源[root@master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
# 2、查看當前鏡像源中支持的docker版本[root@master ~]# yum list docker-ce --showduplicates
# 3、安裝特定版本的docker-ce[root@master ~]# yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y
# 4、添加一個配置文件[root@master ~]# mkdir /etc/docker[root@master ~]# cat <<EOF> /etc/docker/daemon.json{  "exec-opts": ["native.cgroupdriver=systemd"],  "registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"]}EOF
# 5、啟動dokcer[root@master ~]# systemctl restart docker[root@master?~]#?systemctl?enable?docker

2、安裝Kubernetes組件

???????

# 1、由于kubernetes的鏡像在國外,速度比較慢,這里切換成國內的鏡像源,編輯/etc/yum.repos.d/kubernetes.repo,添加下面的配置[kubernetes]name=Kubernetesbaseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgchech=0repo_gpgcheck=0gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg      http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
# 2、安裝kubeadm、kubelet和kubectl[root@master ~]# yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y
# 3、配置kubelet的cgroup,編輯/etc/sysconfig/kubelet, 添加下面的配置KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"KUBE_PROXY_MODE="ipvs"
# 4、設置kubelet開機自啟[root@master?~]#?systemctl?enable?kubelet

3、準備集群鏡像???????

# 1、在安裝kubernetes集群之前,必須要提前準備好集群需要的鏡像,所需鏡像可以通過下面命令查看[root@master ~]# kubeadm config images list
# 2、下載鏡像,此鏡像kubernetes的倉庫中,由于網絡原因,無法連接,下面提供了一種替換方案images=(  kube-apiserver:v1.17.4  kube-controller-manager:v1.17.4  kube-scheduler:v1.17.4  kube-proxy:v1.17.4  pause:3.1  etcd:3.4.3-0  coredns:1.6.5)
for imageName in ${images[@]};do  docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName  docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName  docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName done

4、master節點集群初始化

在master節點上面執行kubeadm init命令進行集群初始化???????

# 1、創建集群,這里192.168.119.100 指定為master主機的IP地址,其他的配置不用修改[root@master ~]# kubeadm init \  --kubernetes-version=v1.17.4 \  --service-cidr=10.96.0.0/12 \  --pod-network-cidr=10.244.0.0/16 \  --apiserver-advertise-address=192.168.119.100 # 2、創建必要文件[root@master ~]# mkdir -p $HOME/.kube[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config[root@master?~]#?sudo?chown?$(id?-u):$(id?-g)?$HOME/.kube/config

5、node節點連接master節點

在node1和node2節點上分別去連接master節點集群

kubeadm?join?192.168.10.100:6443?--token?c78u0z.tqyd4xh4tc2s084f?????--discovery-token-ca-cert-hash?sha256:783e7453cb11db521a7fc3661caa0ac5cf6c6fb153d7d95d222882af7aae94c7

6、查看連接狀態

在master節點上面執行kubectl get nodes命令查看master和node節點狀態

[root@master?~]#?kubectl?get?nodes

這里會顯示 NotReady ,代表未就緒狀態,我們還需要安裝網絡插件

圖片

7、安裝網絡插件

在master節點上安裝網絡插件???????

# 1、下載flannel網絡資源配置文件[root@master ~]# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 2、啟動flannel網絡[root@master ~]# kubectl apply -f kube-flannel.yml
# 3、再次查看節點狀態[root@master?~]#?kubectl?get?nodes

這里啟動flannel網絡之后一般需要等待一會兒,節點狀態會被修改為Ready:

圖片

集群環境測試???????

# 1、創建nginx服務kubectl create deployment nginx  --image=nginx:1.14-alpine
# 2、暴露端口kubectl expose deployment nginx --port=80 --type=NodePort
# 3、查看pod和服務信息kubectl?get?pod,service

圖片

在本地電腦打開瀏覽器測試nginx是否能夠正常訪問:

圖片


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

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

相關文章

C語言---求一個整數存儲在內存中的二進制中1的個數--3種方法

//編寫代碼實現&#xff1a;求一個整數存儲在內存中的二進制中1的個數 //第一種寫法 /*int count_bit_one(unsigned int n) {int count 0;while (n )//除到最后余數是0&#xff0c;那么這個循環就結束了{//這個題就是可以想成求15的二進制的過程//每次都除以2&#xff0c;余數…

跟小伙伴們說一下

因為很忙&#xff0c;有一段時間沒有更新了&#xff0c;這次先把菜鳥教程停更一下&#xff0c;因為自己要查缺補漏一些細節問題&#xff0c;而且為了方便大家0基礎也想學C語言&#xff0c;這里打算給大家開一個免費專欄&#xff0c;這里大家就可以好好學習啦&#xff0c;哪怕0基…

面試題·棧和隊列的相互實現·詳解

A. 用隊列實現棧 用隊列實現棧 實現代碼如下 看著是隊列&#xff0c;其實實際實現更接近數組模擬 typedef struct {int* queue1; // 第一個隊列int* queue2; // 第二個隊列int size; // 棧的大小int front1, rear1, front2, rear2; // 兩個隊列的首尾指針 } MyS…

圖像處理ASIC設計方法 筆記25 紅外成像技術:未來視覺的革命

在當今科技飛速發展的時代,紅外成像技術以其獨特的優勢,在醫療、工業檢測等多個領域扮演著越來越重要的角色。本章節(P146 第7章紅外焦平面非均勻性校正SoC)將深入探討紅外成像系統中的關鍵技術——非均勻性校正SoC,以及它如何推動紅外成像技術邁向新的高度。 紅外成像系統…

6.Redis之String命令

1.String類型基本介紹 redis 所有的 key 都是字符串, value 的類型是存在差異的~~ 一般來說,redis 遇到亂碼問題的概率更小~~ Redis 中的字符串,直接就是按照二進制數據的方式存儲的. (不會做任何的編碼轉換【講 mysql 的時候,知道 mysql 默認的字符集, 是拉丁文,插入中文…

Jenkins--從入門到入土

Jenkins–從入門到入土 文章目錄 Jenkins--從入門到入土〇、概念提要--什么是CI/DI&#xff1f;1、CI&#xff08;Continuous Integration&#xff0c;持續集成&#xff09;2、DI&#xff08;DevOps Integration&#xff0c;DevOps 集成&#xff09;3、解決的問題 一、Jenkins安…

iOS 開發系列:基于VNRecognizeTextRequest識別圖片文字

1.添加Vision Kit依賴 在項目設置中點擊"General"選項卡&#xff0c;然后在"Frameworks, Libraries, and Embedded Content"&#xff08;框架、庫和嵌入內容&#xff09;部分&#xff0c;點擊""按鈕。搜索并選擇"Vision.framework"。…

[AIGC] flink sql 消費kafka消息,然后寫到mysql中的demo

這是一個使用 Flink SQL 從 Kafka 中消費數據并寫入 MySQL 的示例。在這個示例中&#xff0c;我們將假設有一個 Kafka 主題 “input_topic”&#xff0c;它產生格式為 (user_id: int, item_id: int, behavior: string, timestamp: long) 的數據&#xff0c;我們需要把這些數據寫…

world machine學習筆記(4)

選擇設備&#xff1a; select acpect&#xff1a; heading&#xff1a;太陽的方向 elevation&#xff1a;太陽的高度 select colour&#xff1a;選擇顏色 select convexity&#xff1a;選擇突起&#xff08;曲率&#xff09; select height&#xff1a;選擇高度 falloff&a…

用常識滾雪球:拼多多的內生價值,九年的變與不變

2024年5月22日&#xff0c;拼多多公布了今年一季度財報&#xff0c;該季度拼多多集團營收868.1億元&#xff0c;同比增長131%&#xff0c;利潤306.0億&#xff0c;同比增長了202%&#xff0c;數據亮眼。 市場對拼多多經歷了“看不見”、“看不懂”、“跟不上”三個階段。拼多多…

Vue.js條件渲染與列表渲染指南

title: Vue.js條件渲染與列表渲染指南 date: 2024/5/26 20:11:49 updated: 2024/5/26 20:11:49 categories: 前端開發 tags: VueJS前端開發數據綁定列表渲染狀態管理路由配置性能優化 第1章&#xff1a;Vue.js基礎與環境設置 1.1 Vue.js簡介 Vue.js (讀音&#xff1a;/vju…

SwiftUI中的Slider的基本使用

在SwiftUI中&#xff0c;可以使用Slider視圖創建一個滑動條&#xff0c;允許用戶從范圍中選擇一個值。通過系統提供的Slider&#xff0c;用起來也很方便。 Slider 先看一個最簡單的初始化方法&#xff1a; State private var sliderValue: Float 100var body: some View {V…

[AIGC] mac os 中 .DS_Store 是什么

.DS_Store 是在 MacOS 系統中由 Finder 應用程序創建和維護的一種隱藏文件&#xff0c;用于保存有關其所在目錄的自定義屬性&#xff0c;例如圖標位置或背景顏色。 “.DS_Store” 是 “Desktop Services Store” 的縮寫。 .DS_Store 的作用 .DS_Store 文件在每個 Mac OS X 文…

ollama 使用,以及指定模型下載地址

ollama windows 使用 官網&#xff1a; https://ollama.com/ windows 指定 models 下載地址 默認會下載在C盤 &#xff0c;占用空間 在Windows系統中&#xff0c;可以通過設置環境變量OLLAMA_MODELS來指定模型文件的下載和存儲路徑。具體操作步驟如下&#xff1a; 1.打開系統…

【python006】miniconda3環境搭建(非root目錄,最近更新中)

1.熟悉、梳理、總結項目研發實戰中的Python開發日常使用中的問題。 2.歡迎點贊、關注、批評、指正&#xff0c;互三走起來&#xff0c;小手動起來&#xff01; 文章目錄 1.背景介紹2. 1.背景介紹 環境移植&#xff0c;可能影響部署本機環境信息&#xff0c;探索、總結移植有效…

輕量化微調相關學習

輕量化微調&#xff08;Lightweight Fine-Tuning&#xff09;是指在大型預訓練模型基礎上&#xff0c;通過修改或添加少量參數來進行模型適應性調整的一種方法&#xff0c;旨在減少計算資源消耗和避免過擬合問題&#xff0c;同時保持模型的性能。這種方法特別適用于資源有限或需…

一個程序員的牢獄生涯(36)夾帶

星期一 夾 帶 鄭所和小X州在小院子里說著話,盡管我豎起耳朵想要聽到他們的說話內容。但因為他們的說話聲音很低,我努力半天后,什么都聽不清。只能看到小X州恭恭敬敬的站在鄭所面前,不時地點頭答應著的樣子。 沒過多長時間,小X州從院子里返回了號子。我注意到他的臉上帶著一…

15、設計模式之責任鏈模式

責任鏈模式 顧名思義&#xff0c;責任鏈模式&#xff08;Chain of Responsibility Pattern&#xff09;為請求創建了一個接收者對象的鏈。這種模式給予請求的類型&#xff0c;對請求的發送者和接收者進行解耦。這種類型的設計模式屬于行為型模式。 在這種模式中&#xff0c;通…

搜索引擎--ES基礎概念

ES是一款開源的搜索引擎&#xff0c;相比于mysql&#xff0c;它提供了非常強大的搜索功能 下面我們需要簡單的了解一下ES相比于mysql中的一些基本概念的區別&#xff1a; 首先我們要知道es在存儲數據的時候都是以json格式來存儲的 mysql <------> ES&#xff1a; table…

【九十四】【算法分析與設計】練習四蠻力法練習,排列問題和組合問題,求解最大連續子序列和問題,求解冪集問題,求解0/1背包問題,求解任務分配問題

求解最大連續子序列和問題 給定一個有n&#xff08;n≥1&#xff09;個整數的序列&#xff0c;要求求出其中最大連續子序列的和。 例如&#xff1a; 序列&#xff08;-2&#xff0c;11&#xff0c;-4&#xff0c;13&#xff0c;-5&#xff0c;-2&#xff09;的最大子序列和為20…