基于Kubernetes v1.24.0的集群搭建(三)

1 使用kubeadm部署Kubernetes

如無特殊說明,以下操作可以在所有節點上進行。

1.1 首先我們需要配置一下阿里源

cat?<<EOF?>?/etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
3d962f7c9f7f1c07fcb3546953bdb3c6.png

1.2 開始安裝

執行以下命令開始安裝,可以默認安裝也可以指定版本安裝,目前的最新版本是1.24.1,默認即安裝此版本。

yum?install?-y?kubelet-1.24.1?kubeadm-1.24.1?kubectl-1.24.1?--disableexcludes=kubernetes
或
yum?install?kubelet?kubeadm?kubectl
248428086924e12a69fcb1ff06434d06.png

1.3 安裝后查看版本

kubeadm?version
1565d861fc5afcfaa1d6434f890fb251.png

1.4 設置kubelet開機啟動

systemctl?enable?--now?kubelet
357955d6b0dd9904301ee55e8424be72.png

1.5 初始化kubeadm配置信息

kubeadm?config?print?init-defaults?>kubeadm-init.yaml
f4e76c2892815523eaf619d64445f33a.png

如上圖所示,可以看出image倉庫位置在k8s.gcr.io,為了防止拉取報錯,可以配置成阿里云地址,定制出的config內容主要做了如下修改:

  • imageRepository為阿里云的registry

  • 設置kubelet的cgroupDriver為systemd

  • 設置kube-proxy代理模式為ipvs

apiVersion:?kubeadm.k8s.io/v1beta3
mode:?ipvs????????????????????????????????????????????#?kube-proxy?模式
bootstrapTokens:
-?groups:-?system:bootstrappers:kubeadm:default-node-tokentoken:?abcdef.0123456789abcdefttl:?24h0m0susages:-?signing-?authentication
kind:?InitConfiguration
cgroupDriver:?systemd???????????????????#?配置?cgroup?driver
localAPIEndpoint:advertiseAddress:?192.168.183.133?#?ip地址bindPort:?6443
nodeRegistration:criSocket:?unix:///var/run/containerd/containerd.sockimagePullPolicy:?IfNotPresentname:?nodeataints:?null
---
apiServer:timeoutForControlPlane:?4m0s
apiVersion:?kubeadm.k8s.io/v1beta3
certificatesDir:?/etc/kubernetes/pki
clusterName:?kubernetes
controllerManager:?{}
dns:?{}
etcd:local:dataDir:?/var/lib/etcd
imageRepository:?registry.aliyuncs.com/google_containers?#?阿里源
kind:?ClusterConfiguration
kubernetesVersion:?1.24.1
networking:dnsDomain:?cluster.localserviceSubnet:?10.1.0.0/12podSubnet:?10.88.0.0/16??????????????????#?ip網段
scheduler:?{}
750b3a24b53aa6a535983ff9eaddbe64.png

詳細的配置說明可以參考該文檔:https://kubernetes.io/docs/reference/config-api/kubeadm-config.v1beta3/

1.6 拉取依賴鏡像

在開始初始化集群之前,可以預先在各個服務器節點上拉取所k8s需要的如下容器鏡像:

  • kube-apiserver:v1.24.0

  • kube-controller-manager:v1.24.0

  • kube-scheduler:v1.24.0

  • kube-proxy:v1.24.0

  • pause:3.7

  • etcd:3.5.3-0

  • coredns:v1.8.6

kubeadm?config?images?pull?--config?kubeadm-init.yaml
9f5a85ccc76c03a97fb78dd8103ac029.png

2 Master節點操作

2.1 集群初始化

kubeadm?init?--config?kubeadm-init.yaml

初始化過程中,可能會遇到“/proc/sys/net/bridge/bridge-nf-call-iptables does not exist”的錯誤,這是因為之前配置的br_netfilter沒有啟動,運行一下這個命令即可

modprobe?br_netfilter

如果一切正常,則會遇到如下提示,

326d9ccf8c8c58c319db66dc03c020e5.png

以及最重要的token

2fc93d08af2f919bda4d77898a9d6969.png

2.2 配置常規用戶使用kubectl訪問集群

mkdir?-p?$HOME/.kube
sudo?cp?-i?/etc/kubernetes/admin.conf?$HOME/.kube/config
sudo?chown?$(id?-u):$(id?-g)?$HOME/.kube/config
059f8ff46acdaa57477f3f65d170865c.png

2.3 保存配置文件

kubectl?-n?kube-system?get?cm?kubeadm-config?-o?yaml
eeaa0df8cb1fce1bfe5049a6f78fadb8.png

2.4 查看節點狀態

kubectl?get?node
cf51efb0f7ec7ddf19edca48727e8567.png

3 Node節點操作

3.1 ?加入集群

kubeadm?join?192.168.183.133:6443?--token?abcdef.0123456789abcdef?\--discovery-token-ca-cert-hash?sha256:9ec147b59acdd7ac4f6d3b7b5bf378cf46535aa77117878d49e926a638eaf307

出現如下信息,則說明Node節點已經成功加入到集群

74faba3b82157dc569387d066b3beda6.png

執行如下命令,發現網絡報錯

kubectl?get?nodes
9d7a49076a76cb89287bd68505bf95f1.png

出現如上錯誤,我是把master節點上的admin.conf同步到兩個node節點里,不知道大家是如何解決這個問題的。在master節點做如下操作

scp?/etc/kubernetes/admin.conf?node02:/etc/kubernetes/
scp?/etc/kubernetes/admin.conf?node02:/etc/kubernetes/
d61e2c9b866af786bd76bf2a7c786d4c.png

在兩個節點上同時執行如下命令:

mkdir?-p?$HOME/.kube
cp?/etc/kubernetes/admin.conf?~/.kube/config
17166035094eafcc5244beeda0947c99.png

3.2 安裝網絡插件

我們有兩種選擇,一個是Flannel,另一個是Calico

由CoreOS開發的項目Flannel,可能是最直接和最受歡迎的CNI插件。它是容器編排系統中最成熟的網絡結構示例之一,旨在實現更好的容器間和主機間網絡。許多常見的Kubernetes集群部署工具和許多Kubernetes發行版都可以默認安裝Flannel。

Calico是Kubernetes生態系統中另一種流行的網絡選擇。雖然Flannel被公認為是最簡單的選擇,但Calico以其性能、靈活性而聞名。Calico的功能更為全面,不僅提供主機和pod之間的網絡連接,還涉及網絡安全和管理。Calico CNI插件在CNI框架內封裝了Calico的功能。

此處我們使用Flannel插件。

wget?https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

下載后需要修改里面的配置,首先設置一下網卡

9a3992521e3b271de094eff799e9545d.png
  • 其次需要設置一下網段,這里的網段和 1.5 步驟中的podSubnet的值保持一直,都是

  • 10.88.0.0/16

f5671c2b2b604184a739b8f96e3e4192.png

執行命令

kubectl?apply?-f?kube-flannel.yml
a4edf292c97ebcbb89af748e738f5943.png

做出了如上操作之后還不行,還是會報錯,主要是CNI版本兼容性問題,這里可以把containerd中的CNI去除掉

mv?/etc/cni/net.d/10-containerd-net.conflist?/etc/cni/net.d/10-containerd-net.conflist.bak
systemctl?daemon-reload
systemctl?restart?containerd?kubelet
a29462f647967b9b57239926f6b3cee7.png
fce910b0904aa113b526b4ff83a031f7.png

3.3 集群驗證

kubectl?get?cs
kubectl?get?nodes
5cf7cbe0b153c908a45e95c3ca56f11d.png

再執行一下如下命令,查看是否所有的pod都是運行正常的:

kubectl?get?pod?--all-namespaces?-o?wide
7c269c5aee6f9ba65be5c4bdefeedddb.png

3.4 驗證DNS解析

  • 創建busybox.yaml

apiVersion:?v1
kind:?Pod
metadata:name:?busyboxnamespace:?default
spec:containers:-?name:?busyboximage:?busyboxcommand:-?sleep-?"3600"imagePullPolicy:?IfNotPresentrestartPolicy:?Always
kubectl?create?-f?busybox.yaml
ad57f59a2d1ba647f2c2ee92a6d66921.png
  • 驗證一下狀態

kubectl?get?pods?busybox
1d8c530e647b201673ed600476c461da.png
  • DNS檢查

kubectl?exec?-i?-t?busybox?--?nslookup?kubernetes.default
3f7252b8d231b8a3908f9c86f9cea0cb.png
  • 排錯 根據這篇文章(https://dockone.io/article/10399)的排查,我也檢查了一下我的CentOS內核版本,是3.10,比較老,需要升級一下。

da4e53b6882366f8272888e3d263c5cc.png

經過一系列排錯后,再次執行如下命令:

kubectl?exec?-i?-t?busybox?--?nslookup?kubernetes.default
[root@master?~]#?kubectl?exec?-ti?busybox?--?nslookup?kubernetes
Server:?????????10.1.0.10
Address:????????10.1.0.10#53
Name:???kubernetes.default.svc.cluster.local
Address:?10.1.0.1

目前的操作只是練手而已,想要搭建高可用的集群任重道遠,需要投入更多精力。

參考鏈接

http://www.manongjc.com/detail/25-lioggelnywerjyf.html https://www.kubernetes.org.cn/1904.html https://www.toutiao.com/article/7105957860210819623/ https://i4t.com/5451.html https://blog.frognew.com/2022/05/kubeadm-install-kubernetes-1.24.html

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

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

相關文章

C++獲取本機的ip地址程序

C獲取本機的ip地址程序 #include <WinSock2.h> #pragma comment(lib,"ws2_32") //鏈接到ws2_32動態鏈接庫class CInitSock { public:CInitSock(BYTE minorVer 2,BYTE majorVer 2){WSADATA wsaData;WORD VersionRequset;VersionRequset MAKEWORD(mino…

BAT批處理代碼快速打開注冊表并定位到指定目錄

主要代碼&#xff1a; echo off echo %1 copy %~nx0 c:\windows\system32 if "%1" NEQ "" (set regPath%1) else (set /p regPath輸入打開的注冊表路徑:) :trimRight if "%regPath:~-1%""\" set "regPath%regPath:~0,-1%" …

Elasticsearch的Groovy Script自定義評分檢索

需求&#xff1a;以索引中的boostapp列作為評分的基礎分值&#xff0c;同時根據carpublishtime&#xff08;數據的刷新時間字段&#xff09;按時間進行衰減。 基于Groovy腳本實現。 1、query腳本方式&#xff1a; {"fields": ["boost","ucarid",…

stm32串口通訊問題

stm32串口通訊問題 在串口試驗中&#xff0c;串口通訊不正常&#xff0c;則可能會出現以下問題&#xff1a; 1. 配置完成后&#xff0c;串口沒有任何消息打印。 原因&#xff1a;1&#xff0c;端口配置有問題&#xff0c;需要重新檢查I/O口的配置 2&#xff0c;接線有問題&…

中國元宇宙白皮書

PS&#xff1a;PDF目錄&#xff08;書簽&#xff09;是為便于閱讀&#xff0c;重新整理過的。 2022《中國元宇宙白皮書》-互聯網文檔類資源-CSDN下載1月26日&#xff0c;2022《中國元宇宙白皮書》在北京中關村正式全網發布。該白皮書由國科創新研究院首席科學家更多下載資源、學…

【GlobalMapper精品教程】002:GlobalMapper中文版安裝后的基本設置

本文講述安裝globalmapper后的一些簡單基本設置&#xff08;持續更新&#xff09;&#xff0c;為后續深入學習軟件打下基礎。訂閱專欄后私信作者&#xff0c;獲取中文安裝包及配套實驗數據包。 文章目錄1. 工具條的顯示與關閉2. 面積單位設置3. 選擇所選面要素的邊框4. 二三維聯…

SaltStack入門篇之遠程執行和配置管理

一、SaltStack概述 Salt&#xff0c;,一種全新的基礎設施管理方式&#xff0c;部署輕松&#xff0c;在幾分鐘內可運行起來&#xff0c;擴展性好&#xff0c;很容易管理上萬臺服務器&#xff0c;速度夠快&#xff0c;服務器之間秒級通訊。 salt底層采用動態的連接總線, 使其可以…

ArgoCD 用戶管理、RBAC 控制、腳本登錄、App 同步

命令行登錄參考&#xff1a;argocd 登錄登出[1]登錄&#xff1a;echo y | argocd login argocd-server.argocd.svc.cluster.local --password argoadmin.smallsoup --username admin登出&#xff1a;argocd logout argocd-server.argocd.svc.cluster.local創建用戶、授權創建用…

敏捷需要重構嗎?不需要嗎?

在傳統的Scrum中&#xff0c;Sprint的長度為一個月&#xff0c;現在一般時間更短。這意味著團隊就得在項目剛開始的兩周或者一個月內交付完成的軟件。軟件來自于產品負責人的backlog。它必須由特征組成。要正確的做到Scrum&#xff0c;我們不能做基礎架構之類的東西&#xff0c…

【GlobalMapper精品教程】005:影像拼接與裁切(分幅)作業案例教程

本文講述Globalmapper影像拼接與裁剪案例教程。 文章目錄 一、影像的拼接(1)針對少量影像的拼接(2)針對大量影像的拼接二、影像的裁剪一、影像的拼接 (1)針對少量影像的拼接 如果影像數量比較小,可以通過加載→導出的方式進行拼接。 如下圖所示,案例數據(配套實驗數…

元宇宙行業深度研究報告:為什么元宇宙是下一代互聯網?

目錄 1、什么是元宇宙&#xff1f;為什么元宇宙是下一代互聯網 1.1、 元宇宙&#xff1a;下一代沉浸式互聯網 1.1.1、超越虛擬與現實的科幻暢想&#xff1a;元宇宙概念來源 1.1.2、新技術由點突破連接成面&#xff0c;移動互聯網繼承者的孕育 1.1.3、元宇宙的五大要素&…

細節總結(一)

self.XXX與_XXX的區別 通過self.XXX得到的數據相當于調用get函數取值,等價于[self XXX];而通過_XXX獲取的是自己的實例變量,直接對變量進行操作,并未調用get函數。所以,通過懶加載方式初始化的變量只能通過self.XXX調用,否則可能會存在未初始化的問題。self.xxx是對屬性的訪問;…

redis 安裝錯誤 jemalloc.h: No such file or directory

為什么80%的碼農都做不了架構師&#xff1f;>>> 錯誤描述 [rootmysql-rtb-slave redis-4.0.1]# make && make install cd src && make all make[1]: Entering directory /usr/local/src/redis-4.0.1/srcCC Makefile.dep make[1]: Leaving director…

OAuth,JWT ,OIDC你們搞得我好亂啊

hi&#xff0c;這里是桑小榆&#xff0c;這次分享的不是生活文&#xff0c;而是技術文。基于OAuth2.0協議的授權認證&#xff0c;初次接觸授權認證知識的時候&#xff0c;出現了不少熱門名詞&#xff0c;“OAuth”&#xff0c;“JWT”&#xff0c;“OIDC”&#xff0c;這簡直讓…

MyEclipse快捷鍵大全

存盤 Ctrls(肯定知道) 注釋代碼 Ctrl/ 取消注釋 Ctrl\(Eclipse3已經都合并到Ctrl/了) 代碼輔助 Alt/ 快速修復 Ctrl1 代碼格式化 CtrlShiftf 整理導入 CtrlShifto 切換窗口 Ctrlf6 <可改為ctrltab方便> ctrlshiftM 導入未引用的包 ctrlw 關閉單個窗口 F3 跳轉到類、變量的…

軟件測試技術第二次作業——程序錯誤的判斷

在做作業之前我們首先要明確軟件測試過程中的幾個名詞&#xff1a; Fault&#xff1a;在軟件測試中&#xff0c;fault是指程序中靜態的缺陷&#xff0c;也就是指在程序中存在的編程錯誤。 Error&#xff1a;在軟件測試中&#xff0c;error是指由于程序中存在的fault而產生的不正…

【GlobalMapper精品教程】006:Excel等表格(.xls)或文本(.txt .csv)坐標文件生成矢量點

【拓展閱讀】: 【QGIS入門實戰精品教程】4.5:QGIS打開Excel中的點坐標,并生成矢量文件 【ArcGIS微課1000例】0022:ArcGIS點(點坐標)自動連成線操作案例教程 【ArcGIS風暴】ArcGIS 10.2導入Excel數據X、Y坐標(經緯度、平面坐標),生成Shapefile點數據圖層 【ArcGIS風暴】…

Java編程思想 學習筆記1

一、對象導論 1.抽象過程   Alan Kay曾經總結了第一個成功的面向對象語言、同時也是Java所基于的語言之一的Smalltalk的五個基本特性&#xff0c;這些特性表現了純粹的面向對象程序設計方式   1&#xff09;萬物皆對象。   2&#xff09;程序是對象的集合&#xff0c;它們…

不只是日志收集,項目監控工具Sentry的安裝、配置、使用

前言上一篇文章介紹了ExceptionLess這個日志收集系統&#xff1a;ExceptionLess的安裝、配置、使用由于ExceptionLess官方提供的客戶端只有.Net/.NetCore平臺和js的&#xff0c;本文繼續介紹另一個日志收集系統&#xff1a;SentrySentry 是一個實時事件日志記錄和聚合平臺。&am…