Kubernetes1.28-單Master集群部署

一、 服務器環境及初始化

1、架構分析

集群角色主機名操作系統IP地址
masterk8s-masterOpenEuler24.03192.168.166.128
nodek8s-node1OpenEuler24.03192.168.166.129
nodek8s-node2OpenEuler24.03192.168.166.130

2、初始化

所有節點都需要初始化!

2.1、清空Iptales默認規則及關閉防火墻

iptables -t nat -F
iptables -t filter -F
systemctl disable --now firewalld

2.2、關閉SELINUX

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config?

2.3、關閉Swap交換空間

swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab 

2.4、設置主機名

hostnamectl set-hostname k8s-masterhostnamectl set-hostname k8s-node1hostnamectl set-hostname k8s-node2

2.5、編寫hosts文件

vim /etc/hosts
cat <<EOF >> /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.166.128    k8s-master
192.168.166.129    k8s-node1
192.168.166.130    k8s-node2
EOF###拷貝到node節點
scp /etc/hosts 192.168.166.129:/etc
scp /etc/hosts 192.168.166.130:/etc

2.6、設置內核參數

注意:安裝完成docker-ce并啟動之后方可設置!

vim /etc/sysctl.conf
cat <<EOF >> /etc/sysctl.conf
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOFmodprobe br_netfilter
sysctl net.bridge.bridge-nf-call-ip6tables=1
sysctl net.bridge.bridge-nf-call-iptables=1sysctl -p

二、安裝Docker環境

所有節點都需要安裝!

1、安裝Docker

1.1、配置阿里源

[root@localhost yum.repos.d]# 
cat <<EOF >> /etc/yum.repos.d/docker-ce.repo 
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com//docker-ce/linux/centos/9/x86_64/stable/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF

1.2、安裝docker

yum install -y docker-ce

1.3、啟動docker

systemctl enable --now docker

2、安裝cri-docke

下載地址:https://github.com/Mirantis/cri-dockerd/releases

yum install -y libcgroup
rpm -ivh cri-dockerd-0.3.8-3.el8.x86_64.rpm

三、安裝kubeadm和kubectl

所有節點都需要安裝!

1、配置yum源

cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF

2、安裝

yum install -y kubelet kubeadm kubectl

3、設置kubectl開機自啟動

systemctl enable kubelet && systemctl start kubelet

4、啟動kubeadm和kubectl命令補齊功能

source <(kubeadm completion bash)
source <(kubectl completion bash)echo -e "source <(kubeadm completion bash)\nsource <(kubectl completion bash)" >>  /root/.bashrc 
source /root/.bashrc

四、部署Master節點

在k8s-master節點執行下述命令:

kubeadm init --apiserver-advertise-address=192.168.166.128 --image-repository=registry.aliyuncs.com/google_containers --kubernetes-version=v1.28.15 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --cri-socket=unix:///var/run/cri-dockerd.sock
命令解析:--apiserver-advertise-address:指定 API Server 監聽的 IP 地址。如果沒有設置,則將使用默認的網絡接口。--image-repository:指定鏡像倉庫地址。默認值為“registry.k8s.io”,但該倉庫在中國無法訪問,因此這里指定阿里云倉庫。--kubernetes-version:指定 Kubernetes 版本。--pod-network-cidr:指定 Pod 網絡的 CIDR 地址范圍。--service-cidr:指定 Service 網絡的 CIDR 地址范圍。--cri-socket:指定 kubelet 連接容器運行時的 UNIX 套接字文件。

執行命令后,kubeadm 會執行一系列任務,具體如下:

[preflight]:該階段執行一系列檢查,驗證當前系統環境是否滿足 Kubernetes 的安裝要求,包括:CPU 和內存是否滿足最低要求。網絡是否正常。操作系統版本是否滿足要求。容器運行時是否可以連接。內核參數是否正確配置。下載所需的容器鏡像。[certs]:生成 Kubernetes 組件所需的 HTTPS 證書和密鑰,并將其存儲到“/etc/ kubernetes/pki”目錄中。[kubeconfig]:生成 kubeconfig 文件,其中包含 API Server 地址、客戶端證書等信息,并將其存儲在“/etc/kubernetes”目錄中。[kubelet-start]:生成 kubelet 配置文件“/var/lib/kubelet/config.yaml”并啟動 kubelet服務。[control-plane]:為 kube-apiserver、kube-controller-manager 和 kube-scheduler 創建靜態 Pod 資源文件,并將其存儲到“/etc/kubernetes/manifests”目錄中。[etcd]:為 etcd 創建靜態 Pod 資源文件,并將其存儲在“/etc/kubernetes/manifests”目錄中。[wait-control-plane]:等待 kubelet 從目錄“/etc/kubernetes/manifest”中以靜態 Pod的形式啟動 Master 組件。[apiclient]:檢查 Master 組件是否健康。[upload-config]:將 kubeadm 配置存儲在 ConfigMap 對象中。[kubelet]:將 kubelet 配置存儲在 ConfigMap 對象中。[upload-certs]:提示用戶跳過證書上傳。[mark-control-plane]:給 Master 節點添加標簽和污點。[bootstrap-token]:生成引導令牌,供 Node 節點在加入集群時使用。[kubelet-finalize]:更新 kubelet 配置文件(/etc/kubernetes/kubelet.conf)。[addons]:安裝 CoreDNS 和 kube-proxy 插件。

出問題后,集群還原

kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock

注意保存證書文件

每個人的證書是不一致的,注意查看自己的證書。

為本人輸出指令后得到:
kubeadm join 192.168.166.128:6443 --token 5rmwwf.ocgwzx6evxwvcaet \--discovery-token-ca-cert-hash sha256:cf77f1977c11d90758acb6dc6546e922ab21fe76a87385b7ce412fb0c22f142a 

配置管理集群文件

mkdir -p $HOME/.kube
cd /root/.kube
cp /etc/kubernetes/admin.conf ./config###查看集群狀態
kubectl get nodes

五、部署node節點

分別在k8s-node1和k8s-node2中執行:

kubeadm join 192.168.166.128:6443 --token uz36v1.szquumxe2nq58abq \--discovery-token-ca-cert-hash sha256:bfa0dc7f33c37616cdb76b20eaf92ef900c03bd35b59be120ce80afb5b00a5d1 --cri-socket=unix:///var/run/cri-dockerd.sock借由master 主機憑證
kubeadm join 192.168.166.128:6443 --token uz36v1.szquumxe2nq58abq \--discovery-token-ca-cert-hash sha256:bfa0dc7f33c37616cdb76b20eaf92ef900c03bd35b59be120ce80afb5b00a5d1 --cri-socket=unix:///var/run/cri-dockerd.sock

查看集群狀態:

[root@k8s-master ~]# kubectl get nodes 
NAME         STATUS     ROLES           AGE     VERSION
k8s-master   NotReady   control-plane   2d16h   v1.28.15
k8s-node1    NotReady   <none>          2d16h   v1.28.15
k8s-node2    NotReady   <none>          2m14s   v1.28.15

目前看到的是NotReady狀態,是由于沒有安裝網絡插件的原因。ROLES角色一欄顯示“none”,可以通過一下命令修改角色名稱:

kubectl label node k8s-master node-role.kubernetes.io/master=master
kubectl label node k8s-node1 node-role.kubernetes.io/worker=worker
kubectl label node k8s-node2 node-role.kubernetes.io/worker=worker

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

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

相關文章

使用pyqt5實現可勾選的測試用例界面

目錄 界面 代碼 python有哪些自動化測試的庫和html的報告的庫可以和這個軟件結合使用的 **一、自動化測試核心庫** **二、HTML報告生成庫** **三、其他實用工具** **與您的工具結合建議** 參考 界面 代碼 import sys import time import random from PyQt5.QtWidgets import (…

C語言變量的聲明和定義有什么區別?

定義&#xff1a;定義&#xff1a;為變量分配地址和存儲空間聲明&#xff1a;不分配地址和存儲空間一個變量可以在多個地方聲明&#xff0c;但是只在一個地方定義。加入extern修飾的是變量的聲明&#xff0c;說明此變量將在文件或在文件后面部分定義。1.變量聲明作用&#xff1…

imx6ull-驅動開發篇20——linux互斥體實驗

目錄 實驗程序編寫 修改設備樹文件 LED 驅動修改 mutex.c 測試mutexApp.c Makefile 文件 運行測試 在之前的文章里&#xff0c;我們學習了&#xff1a;驅動開發篇16——信號量與互斥體。 本講實驗里&#xff0c;我們來使用互斥體mutex實現 LED 燈互斥訪問的功能&#x…

[4.2-2] NCCL新版本的register如何實現的?

文章目錄1->2->31. ncclRegisterP2pIpcBuffer2. ncclIpcLocalRegisterBuffer(..., 1, 0,...)3. ipcRegisterBuffer(..., regRecord,..., isLegacyIpc)4. p2pProxyRegister()1->2->3 1. ncclRegisterP2pIpcBuffer 在enqueue.cc內的調用是&#xff1a; NCCLCHECK(…

在idea中git切換分支,但是我的文件沒add,沒commit

這是一個很悲傷的故事&#xff0c;我朋友一個下午寫了4個小時的代碼&#xff0c;差不多10多個類&#xff0c;都在切換分支的時候。IDEA發現有沖突&#xff0c;然后就要resolve conflict&#xff0c;發現自己不知道怎么操作&#xff0c;就點了abort & rollback。然后所有代碼…

GPFS api

一、核心命令行 API&#xff08;mm 命令集&#xff09; GPFS 最基礎且常用的接口是命令行工具集&#xff08;以mm為前綴&#xff09;&#xff0c;用于文件系統的創建、配置、管理和監控。這些命令可直接在終端執行&#xff0c;也可通過腳本&#xff08;如 Shell、Python&#…

虛擬機一站式部署Claude Code 可視化UI界面

前言 最近&#xff0c;強大的 AI 編碼助手 Claude Code 在開發者社區中迅速走紅&#xff0c;憑借其出色的代碼生成和理解能力贏得了廣泛贊譽。然而&#xff0c;其純粹基于命令行的交互方式&#xff0c;對于許多習慣了圖形化界面的開發者&#xff0c;尤其是新手而言&#xff0c…

網站IP被劫持?三步自建防護盾

一、劫持檢測實戰&#xff08;Python腳本&#xff09; import requests import socket import ssldef check_hijacking(domain):try:# 獲取真實DNS解析real_ip socket.gethostbyname(domain)# 本地發起請求驗證response requests.get(f"https://{domain}", timeout…

SQL Server從入門到項目實踐(超值版)讀書筆記 23

第三篇 核心應用篇在本章中&#xff0c;將通過案例示范學習SQL Server數據庫的一些核心應用。例如&#xff0c;SQL Server視圖的使用、游標的應用、存儲過程的應用、索引的應用、觸發器的應用、SQL Server事務與鎖的應用等。學完本篇&#xff0c;讀者將對SQL Server數據庫的管理…

功能測試中常見的面試題-一

一、基礎概念與理論題什么是軟件測試&#xff1f;它的目的是什么&#xff1f;回答&#xff1a; 軟件測試是通過人工或自動化手段&#xff0c;運行或評估軟件系統&#xff0c;以驗證它是否滿足規定的需求、識別實際結果與預期結果之間的差異&#xff0c;并評估軟件產品質量的過程…

LINUX88 變量:命令定義;普通數組定義(復);declare -i /-x

問題 [codesamba ~]$ array3(ls axel-2.4) [codesamba ~]$ echo $array3 API [codesamba ~]$ ls axel-2.4 API CHANGES conn.o gui README tcp.o axel conf.c COPYING http.c ru.mo text.c axel.1 …

數字IC后端PPA優化| Timing一致性調整方法和Module Region規劃方法

Q1:直播課經常講到一致性&#xff0c;這個一致性的話一般是指place&#xff0c;CTS和PT的derating time&#xff0c;uncertainty和transition嗎&#xff0c;我大概知道innovus的uncertainty設置要比PT里面高一點&#xff0c;但具體設計時這幾部分的大小應該是一個什么樣的關系或…

電子電氣架構 --- 軟件定義汽車的驅動和挑戰

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

機器學習——10 支持向量機SVM

1 支持向量機 1.1 故事引入看下圖左邊&#xff0c;藍色和紅色的點混在一起&#xff0c;這就像一堆數據&#xff0c;沒辦法用一條簡單的直線把它們分開。再看下圖右邊&#xff0c;有一條直線把藍色和紅色的點分開&#xff0c;這就是SVM在找的“決策邊界”&#xff0c;它能把不同…

若以微服務部署踩坑點

windows docker desktop 部署nacos mysql1、docker部署nacosdocker pull nacos/nacos-server:v2.4.3docker啟動命令 docker run --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 --privilegedtrue --network bridge -e MODEstandalone -e SPRING_DATASOURCE_PLATFORMm…

Lua基礎+Lua數據類型

Lua基礎 Lua介紹 特點&#xff1a;輕量、小巧。C語言開發。開源。 設計的目的&#xff1a;嵌入到應用程序當中&#xff0c;提供靈活的擴展和定制化的功能。 luanginx&#xff0c;luaredis。 環境安裝 windows上安裝lua&#xff1a; 檢查機器上是否有lua C:\Users\cpf>lua lu…

基于VuePress2開發文檔自部署及嵌入VUE項目

最近在搞前端開發幫助文檔&#xff0c;轉了一圈發現Vue提供了一個高性能的、Vue驅動的靜態網站生成框架-VuePress。VuePress 是一個以 Markdown 為中心的靜態網站生成器。你可以使用 Markdown 來書寫內容&#xff08;如文檔、博客等&#xff09;&#xff0c;然后 VuePress 會生…

Flask初步學習

文章目錄一、初識Flask1.1 Pycharm修改環境配置1.2 運行第一個flask項目1.3 獲取數據請求1.3.1 動態路由參數一、初識Flask 1.1 Pycharm修改環境配置 file——settings——project——python Interpreter——add interpreter——add local interpreter 1.2 運行第一個fla…

word的正則替換

word查看選中了幾行 word替換掉空行 替換空行 按下 “Ctrl H” 組合鍵打開 “查找和替換” 對話框&#xff0c;在 “查找內容” 框中輸入 “pp”&#xff0c;“^p” 代表段落標記&#xff0c;兩個 “^p” 表示連續的兩個段落標記&#xff0c;即空行。在 “替換為” 框中輸入 “…

Spring Framework源碼解析——DisposableBean

版權聲明 本文原創作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl一、概述 DisposableBean 是 Spring 框架中用于定義 Bean 銷毀時回調行為的核心接口之一。它提供了一個標準化的鉤子方法 destroy()&#xff0c;允許 Bean 在容器關閉或作用域…