k8s快速部署(親測無坑)

文章目錄

  • k8s快速部署(親測無坑)
    • 一、網絡劃分
    • 二、CentOS7設置 標題固定IP和阿里云YUM源
    • 三、主機環境配置
    • 四、虛擬機的拷貝
    • 五、安裝docker(每臺主機都需要安裝)
    • 六、安裝kubelet,kubeadm,kubectl(每臺機器都需要執行)
    • 遇到的問題
    • 參考文檔

k8s快速部署(親測無坑)

一、網絡劃分

主機:2CPU、2G內存、centos7.9(注意不要太老版本,否則可能出現cgroup等錯誤)
k8s-master:192.168.10.10
k8s-node1:192.168.10.11子網:192.168.10.0
子網掩碼:255.255.255.0
網關:192.168.10.2 
DNS1=8.8.8.8
DNS2=8.8.4.4版本搭配:
docker-ce-18.09.9、kubelet-1.19.16、calico-v3.20.6

二、CentOS7設置 標題固定IP和阿里云YUM源

設置固定ip

1.查看當前網絡接口名稱,如ens33、ens160等
ip addr show #或者 ip a2.編輯網絡配置文件
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens32 # 替換為實際接口名TYPE=Ethernet
BOOTPROTO=static  # 改為 static 表示靜態 IP
ONBOOT=yes        # 開機自動啟用
IPADDR=192.168.10.10  # 靜態 IP 地址
NETMASK=255.255.255.0 # 子網掩碼
GATEWAY=192.168.10.2   # 網關地址
DNS1=8.8.8.8          # 首選 DNS
DNS2=8.8.4.4          # 備用 DNS3.設置主機名
hostnamectl set-hostname k8s-master4.添加host,IP需要改成你自己機器的IP
cat >> /etc/hosts << EOF
192.168.10.10 k8s-master
192.168.10.11 k8s-node1
EOF5.重啟網絡服務??
sudo systemctl restart network6.驗證
ip addr show ens32        # 檢查 IP 是否生效
ping -c4 baidu.com        # 測試網絡連通性
cat /etc/resolv.conf      # 查看 DNS 配置7.開啟ssh
#若已安裝,跳過此步驟
sudo yum install openssh-server -y
#啟動與自啟
sudo systemctl start sshd && sudo systemctl enable sshd
#驗證服務狀態??
sudo systemctl status sshd

配置阿里云 YUM 源

??1.備份原配置文件??
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak2.下載阿里云 YUM 源??
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo3.清理緩存并更新??
sudo yum clean all && sudo yum makecache
驗證源是否生效:
yum repolist

三、主機環境配置

1.關閉防火墻
sudo systemctl stop firewalld
sudo systemctl disable firewalld2.關閉selinux
#selinux禁用
setenforce 0
# 永久禁用 SELinux(需重啟)
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config3.關閉swap分區
swapoff -a  # 臨時關閉
sed -ri '/swap/s/^/#/' /etc/fstab  # 重啟生效,等做完所有步驟在重啟
free -m  #查看下swap交換區是否都為0,如果都為0則swap關閉成功4.允許iptables 檢查橋接流量
cat > /etc/sysctl.d/k8s.conf << EOF
net.ipv4.ip_forward = 1
net.ipv4.tcp_tw_recycle = 0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system5.設置時間同步
yum install -y chrony  # CentOS
systemctl enable --now chronyd
#重啟
systemctl reboot

四、虛擬機的拷貝

#拷貝后修改網絡配置文件與hostname
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens32
hostnamectl set-hostname k8s-node1 #node節點
#刪除網卡規則文件?
rm -f /etc/udev/rules.d/70-persistent-net.rules #該文件記錄舊網卡MAC和名稱綁定關系,克隆后需刪除以觸發系統重新生成
#重啟網絡服務??
sudo systemctl restart network

五、安裝docker(每臺主機都需要安裝)

#卸載舊版本
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-enginesudo yum update -ysudo yum install -y yum-utils device-mapper-persistent-data lvm2#配置docker的yum地址
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#安裝指定docker版本
sudo yum -y install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io#啟動dokcer并開機自啟
sudo systemctl start docker
sudo systemctl enable docker#Docker配置修改
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"graph": "/data/docker","registry-mirrors": ["https://xv8xjvpp.mirror.aliyuncs.com","https://docker.m.daocloud.io/","https://dockerproxy.com/","https://mirror.baidubce.com/","https://docker.nju.edu.cn/","https://ccr.ccs.tencentyun.com/"	],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2"
}
EOF
#加載配置文件并重啟docker
sudo systemctl daemon-reload
sudo systemctl restart docker

六、安裝kubelet,kubeadm,kubectl(每臺機器都需要執行)

1.配置k8s的yum源
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF2.如果之前安裝了k8s,先卸載舊版本
yum -y remove kubelet kubeadm kubectl3.查看可以安裝的版本
yum list --showduplicates kubelet | sort -r   4.安裝指定的kubelet,kubeadm,kubectl版本
sudo yum install -y kubelet-1.19.16 kubeadm-1.19.16 kubectl-1.19.165.注意:不要start啟動
sudo systemctl enable kubelet#排查錯誤
journalctl -xefu kubelet6.master主機上執行
kubeadm init  \
--kubernetes-version=v1.19.16 \
--apiserver-advertise-address=192.168.10.10 \
--image-repository registry.aliyuncs.com/google_containers  \
--service-cidr=10.2.0.0/16  \
--pod-network-cidr=10.3.0.0/167.master主機上執行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf8.手動拉取(每臺機器都要)
docker pull docker.io/calico/cni:v3.20.6
docker pull docker.io/calico/kube-controllers:v3.20.6
docker pull docker.io/calico/node:v3.20.69.安裝網絡插件 Calico(僅master主機需要)
#下載calico.yaml
mkdir /root/k8s
cd /root/k8s
wget https://docs.projectcalico.org/v3.20/manifests/calico.yaml
kubectl apply -f calico.yaml10.申請一個新令牌(master上執行)
kubeadm token create --print-join-command11.加入node節,復制新生成的令牌在node上執行
kubeadm join 192.168.10.10:6443 --token 2rpox5.2ldrnmjh9959xgu8     --discovery-token-ca-cert-hash sha256:cf674550770c2d734fda061a4a94d9a928c519d3e64b6d3bfbbfe1183aec93b012.查看集群狀態
kubectl get cs
kubectl get node#確認所有的pod為running狀態
kubectl get pods -A

遇到的問題

[root@k8s-master k8s]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS      MESSAGE                                                                                       ERROR
controller-manager   Unhealthy   Get "http://127.0.0.1:10252/healthz": dial tcp 127.0.0.1:10252: connect: connection refused
scheduler            Unhealthy   Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refused
etcd-0               Healthy     {"health":"true"}controller-manager 和 scheduler 組件狀態異常問題(顯示 Unhealthy 且連接被拒絕)
可能原因:
配置文件未更新??:kube-scheduler.yaml 和 kube-controller-manager.yaml 中可能仍包含廢棄參數 --port 0,導致組件未監聽健康檢查端口(10251/10252)。
??證書或權限問題??:組件使用的 kubeconfig 文件可能路徑錯誤、權限不足或證書無效#編輯 kube-scheduler.yaml 和 kube-controller-manager.yaml,??注釋掉 --port 0 參數??:
#該操作會動態觸發 kubelet 重啟組件。
# 修改調度器配置
vim /etc/kubernetes/manifests/kube-scheduler.yaml
#- --port=0  #找到這個注釋掉
# 修改控制器管理器配置
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
至此k8s安裝成功組件日志??
# 查看調度器日志
journalctl -u kube-scheduler -f
# 查看控制器管理器日志
journalctl -u kube-controller-manager -f

在這里插入圖片描述

參考文檔

k8s+containerd(kvm版)
https://juejin.cn/post/7393481473084145705
K8S單機部署-01.單機部署K8S
https://blog.51cto.com/u_13561776/9854103
Centos7 單機部署 K8S
https://zhuanlan.zhihu.com/p/1918406353447293264
k8s安裝教程
https://juejin.cn/post/7382537293582417946二進制搭建K8S出現scheduler、controller-manager為Unhealthy?
https://cloud.tencent.com/developer/ask/1291852
使用Kubeadm部署K8s集群獲取kube-scheduler和kube-controller-manager組件狀態異常問題
https://cloud.tencent.com/developer/article/2028085
kubeadm安裝k8s 組件controller-manager 和scheduler狀態 Unhealthy
https://cloud.tencent.com/developer/article/2170902

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

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

相關文章

簡易RAG問答引擎的構建與體驗

RAG&#xff08;檢索增強生成&#xff09;是結合檢索與生成式 AI 的技術框架。核心邏輯是先從外部知識庫精準檢索相關信息&#xff0c;再將其作為上下文輸入大模型生成回答。技術上依賴檢索引擎&#xff08;如向量數據庫、BM25&#xff09;、大語言模型&#xff08;如 GPT、LLa…

C++11特性學習 Day1

nullptr對于c中null (void*)0&#xff0c;所以在為函數傳參傳入0時&#xff0c;無法清楚地分辨是int類型的0還是指的是空指針null在C11中清晰的將空指針變為了nullptr&#xff0c;0專指int型的數字0override關鍵字在子類中對父類的函數的覆寫之后加上override關鍵字&#xff0…

微算法科技(NASDAQ: MLGO)探索優化量子糾錯算法,提升量子算法準確性

隨著量子計算技術的飛速發展&#xff0c;量子計算機在解決復雜計算問題上的潛力日益顯現。然而&#xff0c;量子計算面臨的一個重大挑戰是量子比特的脆弱性&#xff0c;即量子比特容易受到環境噪聲和干擾的影響&#xff0c;導致量子態的塌縮和計算結果的錯誤。微算法科技&#…

MongoDB數據庫詳解-針對大型分布式項目采用的原因以及基礎原理和發展-卓伊凡|貝貝|莉莉

MongoDB數據庫詳解-針對大型分布式項目采用的原因以及基礎原理和發展-卓伊凡|貝貝|莉莉由于老產品即時通訊私有化軟件就是采用MongoDB &#xff0c;但是版本實在太低&#xff0c;要做大更新&#xff0c;其次針對10年前完美運營的項目來到10年后的現在就不一定行&#xff0c;優雅…

Kotlin 中的單例模式(Singleton)與對象聲明

在 Kotlin 中&#xff0c;類描述的是一種通用結構&#xff0c;可以多次實例化&#xff0c;也可以用多種方式實例化。但有時我們只需要單個實例&#xff0c;不多不少。單例模式能幫你更好地組織代碼&#xff0c;把相關的方法聚合在一起。 單例模式是什么&#xff1f; 單例模式是…

Shell 編程基礎入門從認識到實戰

對于剛接觸 Linux 或 Unix 系統的開發者來說&#xff0c;Shell 腳本往往是自動化操作的第一道門檻。它不像 Python 那樣語法簡潔&#xff0c;也不像 Java 那樣有完善的面向對象體系&#xff0c;但卻能以極少的代碼實現強大的系統管理功能。本文將從 Shell 的基本概念講起&#…

混合遺傳粒子群算法在光伏系統MPPT中的應用研究

混合遺傳粒子群算法在光伏系統MPPT中的應用研究 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家&#xff0c;覺得好請收藏。點擊跳轉到網站。 摘要 本文針對光伏系統最大功率點跟蹤(MPPT)問題&#xff0…

機器視覺的布料絲印應用

在紡織印染行業&#xff0c;布料絲印工藝的精度直接決定產品外觀質量與市場競爭力。傳統絲印設備依賴機械定位與人工校準&#xff0c;面對高密度圖案、柔性面料或復雜紋理時&#xff0c;易出現套色偏移、油墨滲透不均等問題&#xff0c;導致良品率波動與生產成本攀升。 隨著機…

前端常用類庫

常用類庫 類庫作用 類庫可以幫助我們快速實現項目業務的開發與功能的實現, 幫助我們解放勞動力提高生產效率, 前端中的類庫與框架都是由原生javascript編寫, 提供給其他開發者應用于某一業務環境或者需求。一般有開發者/團隊開源維護. 優秀的類庫需要具備高度封裝可用, 穩定, …

通俗易懂循環神經網絡(RNN)指南

本文用直觀類比、圖表和代碼&#xff0c;帶你輕松理解RNN及其變體&#xff08;LSTM、GRU、雙向RNN&#xff09;的原理和應用。什么是循環神經網絡 循環神經網絡&#xff08;Recurrent Neural Network, RNN&#xff09;是一類專門用于處理序列數據的神經網絡。與前饋神經網絡不同…

【SVM】支持向量機實例合集

基于Java的SVM(支持向量機)實例合集 以下是一個基于Java的SVM(支持向量機)實例合集,包含核心代碼示例和應用場景說明。這些例子基于流行的機器學習庫(如LIBSVM、Weka、JSAT)實現。 數據準備與加載 使用LIBSVM格式加載數據集: // 加載LIBSVM格式數據 svm_problem pr…

Python100個庫分享第38個—lxml(爬蟲篇)

目錄專欄導讀&#x1f4da; 庫簡介&#x1f3af; 主要特點&#x1f6e0;? 安裝方法Windows安裝Linux/macOS安裝驗證安裝&#x1f680; 快速入門基本使用流程HTML vs XML解析&#x1f50d; 核心功能詳解1. XPath選擇器2. CSS選擇器支持3. 元素操作&#x1f577;? 實戰爬蟲案例…

imx6ull-系統移植篇17——linux頂層 Makefile(上)

目錄 前言 頂層 Makefile 源碼簡析 版本號 MAKEFLAGS 變量 命令輸出 靜默輸出 設置編譯結果輸出目錄 代碼檢查 模塊編譯 設置目標架構和交叉編譯器 調用 scripts/Kbuild.include 文件 交叉編譯工具變量設置 頭文件路徑變量 導出變量 make xxx_defconfig 過程 …

OpenCV 官翻6 - Computational Photography

文章目錄圖像去噪目標理論OpenCV中的圖像去噪1、cv.fastNlMeansDenoisingColored()2、cv.fastNlMeansDenoisingMulti()附加資源圖像修復目標基礎概念代碼補充資源練習高動態范圍成像&#xff08;HDR&#xff09;目標理論基礎曝光序列HDR1、將曝光圖像加載到列表中2、將曝光序列…

APT32F1732RBT8愛普特微電子 32位MCU國產芯片 智能家居/工業控制 首選

APT32F1732RBT8 愛普特微電子&#xff0c;32位MCU國產芯片一、產品簡介APT32F1732RBT8 是愛普特微電子&#xff08;APT&#xff09;推出的高性能32位ARM Cortex-M0內核MCU&#xff0c;主頻高達48MHz&#xff0c;內置64KB Flash8KB RAM&#xff0c;專為智能家居、工業控制、消費…

Smart Tomcat

本篇博客的內容是教你借助idea中的插件,把tomcat集成到idea中安裝 Smart Tomcat 插件搜索下載 ,如果一直處于加載界面,就嘗試一下科學上網配置 Smart Tomcat 插件 點擊右上角的 "Add Configuration"選擇左側的 "Smart Tomcat" 在 Name 這一欄填寫一個名字(…

Linux_shell編寫

title: Linux_4 shell編寫 shell pwd (/root/A/2025_7/19/myshell) 首先需要設計命令行提示 &#xff08;MakeCommandLine()&#xff09; 首先獲取相關信息 getenv(“name”) // 獲取用戶名 const char* GetUserName() {const char* name getenv("USER");if (name …

【數據結構】棧的深入解析--用C語言實現

文章目錄1.棧的概念2.棧的底層結構3.棧的功能4.棧的實現4.1.棧結構的定義4.2.棧的初始化4.3.棧的銷毀4.4.入棧4.5.出棧4.6.取棧頂元素4.7.獲取棧中有效元素個數5.完整代碼Stack.hStack.cmain.c運行結果1.棧的概念 是一種特殊的線性表&#xff0c;只允許數據在固定的一段進行插…

Git倉庫核心概念與工作流程詳解:從入門到精通

Git倉庫的基本概念版本庫&#xff08;Repository&#xff09;是Git的核心概念&#xff0c;你可以簡單理解為一個被Git管理的目錄。這個目錄里的所有文件都能被Git跟蹤&#xff0c;記錄每次修改和刪除&#xff0c;讓你可以隨時追溯歷史或在未來某個時刻"還原"文件。Gi…

Web開發 05

1 React庫&#xff08;人話詳解版&#xff09;別慌&#xff0c;React 剛接觸時是會有點懵&#xff0c;咱們用 “人話 類比” 一步步拆&#xff1a;核心概念先抓牢組件&#xff08;Component&#xff09;把它想成 “樂高積木”&#xff0c;比如做個社交 App&#xff0c;頂部導航…