一、CentOS7通過kubeadm安裝K8S 1.20.1版本


一、準備機器

所有節點執行
準備3臺虛擬機(2核4G,CentOS 7+),配置如下:

hostnamectl set-hostname k8s-master  # 在Master節點執行
hostnamectl set-hostname k8s-node1   # Worker1節點執行
hostnamectl set-hostname k8s-node2   # Worker2節點執行
IP地址主機名角色
192.168.11.101k8s-masterMaster
192.168.11.102k8s-node1Node
192.168.11.103k8s-node2Node

二、安裝Docker

所有節點執行以下命令:

# 卸載舊版本Docker
sudo yum remove docker\*# 安裝依賴工具
sudo yum install -y yum-utils# 配置阿里云Docker鏡像源
sudo yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 安裝指定版本Docker
sudo yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6# 啟動Docker并設置開機自啟
systemctl enable docker --now# 配置Docker鏡像加速和參數
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://registry.docker-cn.com","https://mirror.ccs.tencentyun.com","https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com","https://docker.1ms.run","https://hub.rat.dev","https://docker.1panel.live"]
}
EOF# 重啟Docker生效
sudo systemctl daemon-reload
sudo systemctl restart docker


三、安裝Kubernetes基礎環境

所有節點執行以下操作

# 1. 關閉防火墻
systemctl stop firewalld
systemctl disable firewalld# 2. 關閉SELinux
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config# 3. 關閉Swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
systemctl reboot  # 重啟生效# 4. 設置主機名(分別在每臺機器執行,上面執行過就不用執行了)
# Master節點執行:
hostnamectl set-hostname k8s-master
# Node1節點執行:
hostnamectl set-hostname k8s-node1
# Node2節點執行:
hostnamectl set-hostname k8s-node2# 5. 配置Hosts(所有節點添加以下內容)
cat >> /etc/hosts << EOF
192.168.11.101 k8s-master
192.168.11.102 k8s-node1
192.168.11.103 k8s-node2
EOF# 6. 允許iptables檢查橋接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system# 7. 時間同步
yum install ntpdate -y
ntpdate time.windows.com


四、安裝kubelet、kubeadm、kubectl

所有節點執行:

# 配置阿里云Kubernetes鏡像源
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
EOF# 卸載舊版本(如存在)
yum remove -y kubelet kubeadm kubectl#查看可以安裝的版本
yum list kubelet --showduplicates | sort -r# 安裝指定版本組件
sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9# 啟動kubelet并設置開機自啟
sudo systemctl enable --now kubelet


五、初始化Master節點

僅在Master節點(k8s-master)執行:

# 1. 下載所需鏡像
sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(kube-apiserver:v1.20.9kube-proxy:v1.20.9kube-controller-manager:v1.20.9kube-scheduler:v1.20.9coredns:1.7.0etcd:3.4.13-0pause:3.2
)
for imageName in ${images[@]} ; dodocker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOFchmod +x ./images.sh && ./images.sh# 2. 初始化Master節點 (里面的第一個ip地址就是k8s-master機器的ip,改成你自己機器的,后面兩個ip網段不用動)
#所有網絡范圍不重疊
kubeadm init \--apiserver-advertise-address=192.168.157.148 \--control-plane-endpoint=k8s-master \--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \--kubernetes-version v1.20.9 \--service-cidr=10.96.0.0/16 \--pod-network-cidr=10.244.0.0/16# 可以查看kubelet日志
journalctl -xefu kubelet #如果初始化失敗,重置kubeadm
kubeadm reset
rm -rf /etc/cni/net.d  $HOME/.kube/config
#清理 iptables 規則
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPTmaster成功后提示如下:
Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:kubeadm join k8s-master:6443 --token 50rexj.yb0ys92ynnxxbo2s \--discovery-token-ca-cert-hash sha256:10fd9d2a9f4e2d7dff502aa3fb31a80f0372666efc92defde3707b499ba000e9 \--control-plane Then you can join any number of worker nodes by running the following on each as root:kubeadm join k8s-master:6443 --token 50rexj.yb0ys92ynnxxbo2s \--discovery-token-ca-cert-hash sha256:10fd9d2a9f4e2d7dff502aa3fb31a80f0372666efc92defde3707b499ba000e9# 3. 配置使用 kubectl 命令工具和kubectl權限
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config


六、Master(Node節點加入集群

僅在MasterNode節點(k8s-node1、k8s-node2)執行:

kubeadm join k8s-master:6443 \--token 50rexj.yb0ys92ynnxxbo2s \--discovery-token-ca-cert-hash sha256:10fd9d2a9f4e2d7dff502aa3fb31a80f0372666efc92defde3707b499ba000e9

如果上面這個kubeadm join k8s……命令忘記了,可以使用“kubeadm token create --print-join-command”在master上重新生成。

若Node節點執行kubectl報錯,需配置環境變量:

echo "export KUBECONFIG=/etc/kubernetes/kubelet.conf" >> /etc/profile
source /etc/profile

node節點添加成功后,可以驗證。

提示2個是0/1

提示2個是no……

主要是因為你的calico網絡還沒安裝,只要第2個命令目前能看到3個節點就沒問題。

[root@k8s-master calico]# kubectl get pod -n kube-system
NAME                                       READY   STATUS    RESTARTS      AGE
calico-kube-controllers-74f56488c5-4z9ds  0/1     Running   1 (23h ago)   23h   #有2個是0
coredns-6554b8b87f-ttq5c                   0/1     Running   1 (24m ago)   5d8h #有2個是0,具體那兩個忘記了
coredns-6554b8b87f-wgsqn                   0/1     Running   1 (24m ago)   5d8h
etcd-k8s-master                            1/1     Running   1 (24m ago)   5d8h
kube-apiserver-k8s-master                  1/1     Running   1 (24m ago)   5d8h
kube-controller-manager-k8s-master         1/1     Running   1 (24m ago)   5d8h
kube-proxy-cxhjm                           1/1     Running   1 (23m ago)   5d8h
kube-proxy-lvtxh                           1/1     Running   1 (24m ago)   5d8h
kube-proxy-sbc94                           1/1     Running   1 (24m ago)   5d8h
kube-scheduler-k8s-master                  1/1     Running   1 (24m ago)   5d8h
[root@k8s-master calico]# 
[root@k8s-master calico]# 
[root@k8s-master calico]# kubectl get nodes
NAME         STATUS   ROLES           AGE    VERSION
k8s-master   noReady    control-plane   5d8h   v1.28.2 #noready,提示no……
k8s-node1    noReady    <none>          5d8h   v1.28.2 #noready,提示no……
k8s-node2    noReady    <none>          5d8h   v1.28.2 #noready,提示no……
[root@k8s-master calico]# 

?七、安裝calico網絡插件

# 1. 安裝Calico網絡插件
curl https://docs.projectcalico.org/archive/v3.20/manifests/calico.yaml -O #作廢
curl -LO https://docs.projectcalico.org/archive/v3.20/manifests/calico.yaml #作廢mkdir /root/calico && cd /root/calico/wget https://jiangstudy.online:8081/sources/calico.yaml修改calici.yaml的網絡 ##這一步很重要,否則網絡安裝成功集群也不通vi /root/calico/calico.yaml- name: CALICO_IPV4POOL_CIDRvalue: "10.244.0.0/16"#修改這個ip信息,這個ip信息和你# 2. 初始化Master節點的  --pod-network-cidr值保持一致#部署calico
kubectl apply -f calico.yaml

七、驗證集群狀態

僅在Master節點執行:

kubectl get nodes

輸出應顯示所有節點狀態為 Ready。以及執行kubectl get pod -A時,都是1/1。


說明(不看也行,寫的不全):

  1. Master節點獨有操作

    • 初始化集群 (kubeadm init)

    • 安裝Calico網絡插件

    • 執行kubectl命令查看集群狀態

  2. Node節點獨有操作

    • 使用kubeadm join加入集群

    • 配置KUBECONFIG環境變量

  3. 所有節點共同操作

    • Docker安裝與配置

    • 基礎環境配置(防火墻、SELinux、Swap等)

    • 安裝kubelet/kubeadm/kubectl
      通過以上步驟,可清晰區分Master與Node節點的操作范圍,確保集群順利搭建。
      ?

遇到的問題:

問題1、執行5.4的時候“安裝Calico網絡插件”,無法下載這個網絡文件。

后來使用的下載方法:wget https://jiangstudy.online:8081/sources/calico.yaml,然后一定要配置里面的ip。

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

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

相關文章

AgenticSeek,開源本地通用AI Agent,自主執行任務

AgenticSeek是一款完全本地化的開源AI助手&#xff0c;作為Manus的開源替代品&#xff0c;專為保護用戶隱私而設計。它能夠在本地設備上執行多種任務&#xff0c;包括網頁瀏覽、代碼編寫和復雜項目的規劃&#xff0c;確保所有操作和數據均在用戶的設備上完成。 AgenticSeek是什…

C 語言學習筆記(指針6)

內容提要 內存操作 內存操作的函數 內存操作 我們對于內存操作需要依賴于string.h頭文件中相關的庫函數。 內存的庫函數 內存填充 頭文件&#xff1a;#include <string.h>函數原型 void* memset(void* s, int c, size_t)函數功能&#xff1a;將內存塊s的前n個字節…

Grafana-Gauge儀表盤

儀表盤是一種單值可視化。 可讓您快速直觀地查看某個值落在定義的或計算出的最小和最大范圍內的位置。 通過重復選項&#xff0c;您可以顯示多個儀表盤&#xff0c;每個對應不同的序列、列或行。 支持的數據格式 單值 數據集中只有一個值&#xff0c;會生成一個顯示數值的…

解決Vue項目依賴錯誤:使用electron-vite重建

文章目錄 開端解決方案&#xff1a;使用 electron-vite Vue 重建項目1. 環境準備2. 創建新項目3. 安裝依賴并啟動項目 開端 在開發過程中&#xff0c;我遇到了一個令人頭疼的錯誤提示&#xff1a; 0:0 error Parsing error: Cannot find module vue/cli-plugin-babel/preset…

WPF prism

Prism Prism.Dryloc 包 安裝 Nuget 包 - Prism.DryIoc 1. 修改 App.xaml 修改 App.xaml 文件&#xff0c;添加 prism 命名空間, 繼承由 Application → PrismApplication&#xff0c;刪除默認啟動 url, StartupUri“MainWindow.xaml” <dryioc:PrismApplicationx:Class…

循序漸進PersistentVolumes與PersistentVolumeClaim

文章目錄 靜態配置&#xff08;Static Provisioning&#xff09;&#xff1a;Persistent volume(PV)Local 示例&#xff1a;NFS 示例&#xff1a;檢查pvPV 的常見狀態說明Persistent volume claim(PVC)1. local PVC示例:2.NFS PVC示例:3. 檢查PVC: 掛載靜態供應卷驗證靜態供應卷…

【連接器專題】SD卡座規格書審查需要審哪些方面?

在審查SD卡座規格書時,我們需要考慮哪些方面? 首先在拿到一份SD卡座的詳細規格書時,一般供應商給到的規格書中包括了一些基礎信息、產品圖紙信息、技術參數信息,同時有些供應商會給出產品可靠性測試報告。因此我們會從這幾個要素去看規格書。 基礎信息 基礎信息一般會給變更…

投稿 IEEE Transactions on Knowledge and Data Engineering 注意事項

投稿 IEEE Transactions on Knowledge and Data Engineering 注意事項 要IEEE overleaf 模板私信,我直接給我自己論文,便于編輯 已經投稿完成了,有一些小坑 準備工作 注冊IEEE賬戶:若沒有IEEE賬戶,需前往IEEE官網注冊。注冊成功后,可用于登錄投稿系統。現在新的系統,…

JS入門——三種輸入方式

JS入門——三種輸入方式 一、方式一&#xff1a;直接在警告框彈出(window可以省略) <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><script><!-- 方式一直接在警告框彈…

WordPress免費網站模板下載

大背景圖免費wordpress建站模板 這個wordpress模板設計以簡約和專業為主題&#xff0c;旨在為用戶提供清晰、直觀的瀏覽體驗。以下是對其風格、布局和設計理念的詳細介紹&#xff1a; 風格 簡約現代&#xff1a;整體設計采用簡約風格&#xff0c;使用了大量的白色和灰色調&am…

AUTOSAR CP全新系統化培訓上線!從底層到應用,三步階梯,五大學習維度構建完整知識體系

AUTOSAR組織 AUTOSAR官方全新推出「AUTOSAR CP全棧賦能計劃」&#xff0c;從架構全景到模塊細節&#xff0c;自底向上、由淺入深&#xff0c;覆蓋MCAL至SWC全層級&#xff0c;融合通信、診斷、安全等六大核心Feature&#xff0c;帶您穿透復雜理論&#xff0c;直擊AUTOSAR開發本…

Java網絡編程與Socket安全權限詳解

Socket安全權限控制 Java通過java.net.SocketPermission類實現對網絡套接字訪問的細粒度控制。該權限管理機制通常在Java策略文件中配置,其標準授權語法格式如下: grant {permission java.net.SocketPermission"target", "actions"; };目標主機與端口規…

基于本地化大模型的智能編程助手全棧實踐:從模型部署到IDE深度集成學習心得

近年來&#xff0c;隨著ChatGPT、Copilot等AI編程工具的爆發式增長&#xff0c;開發者生產力獲得了前所未有的提升。然而&#xff0c;云服務的延遲、隱私顧慮及API調用成本促使我探索一種更自主可控的方案&#xff1a;基于開源大模型構建本地化智能編程助手。本文將分享我構建本…

視頻監控匯聚平臺EasyCVR安防小知識:如何通過視頻融合平臺解決信息孤島問題?

一、項目背景與需求分析? 隨著數字化技術發展與網絡帶寬升級&#xff0c;視頻技術應用場景不斷拓展&#xff0c;視頻監控、記錄儀等多樣化產品構建起龐大體系。但這些獨立系統彼此割裂&#xff0c;形成信息孤島。 在系統集成項目中&#xff0c;視頻系統深度融合已成必然趨勢…

如何在 Windows 和 Mac 上擦拭和清潔希捷外置硬盤

希捷外置硬盤廣泛用于存儲目的&#xff0c;但有時您可能出于多種目的需要擦除或清潔希捷外置硬盤&#xff0c;例如轉售、重復使用、捐贈等。為了釋放硬盤上的存儲空間或確保沒有人可以從硬盤中恢復您的信息&#xff0c;擦除硬盤是必要的步驟。無論您使用的是 Windows 還是 Mac&…

SAP saml2 元數據 HTTP 錯誤

使?事務 SAML2 或 SAML2_IDP 在 ABAP 系統中配置 SAML 2.0 時&#xff0c; Web 頁?返回 403 已禁?、 404 未找到 或 500 服務器內部錯誤。 在事務 SAML2 中下載元數據時&#xff0c; ?頁返回 403 已禁?、 404 未找到或 500 服務器內部錯誤。 在事務 SAML2_IDP 中下載…

powershell 中 invoke-expression 報錯解決

打開powershell就出現這個報錯&#xff1a; 網上搜了也沒有很好的解決辦法&#xff0c;抱著一點點期待&#xff0c;問了豆包 根據豆包的指示&#xff0c;在終端執行以下 幾個命令&#xff0c;報錯解決了&#xff08;開心萬歲&#xff09; # 移除多余的引號和空路徑 $pathArra…

簡單說一說Modern ABAP這個概念

Modern ABAP 是 SAP近些年來提出的一個概念&#xff0c;指的是在傳統 ABAP (Advanced Business Application Programming) 的基礎上&#xff0c;結合新技術和現代化編程理念進行改進和優化&#xff0c;旨在使 ABAP 更適應云計算、數據驅動業務以及開發效率提升的需求。 這一概…

kafka 常用知識點

文章目錄 前言kafka 常用知識點1. kafka 概念2. 消息共享和廣播3. 分區和副本數量奇偶數 前言 如果您覺得有用的話&#xff0c;記得給博主點個贊&#xff0c;評論&#xff0c;收藏一鍵三連啊&#xff0c;寫作不易啊^ _ ^。 ??而且聽說點贊的人每天的運氣都不會太差&#xff0…

5G RedCap是什么-與標準5G的區別及支持路由器推薦

技術背景與重要性 從智能穿戴到工業傳感器&#xff0c;物聯網設備種類繁多&#xff0c;但并非所有設備都需要標準5G的全部功能。為滿足這些中端應用的需求&#xff0c;3GPP在Release 17中引入了5G RedCap&#xff08;Reduced Capability&#xff09;&#xff0c;也稱為5G NR-L…