Ubuntu系統kubeadm安裝K8S_v1.25.x容器使用docker(K8S_v1.24版本以后依然使用docker容器管理)

安裝所需要的全部文檔請點擊這里下載

系統是:

root@k8s-master:~# cat /etc/lsb-release DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04 DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION=“Ubuntu 22.04.3 LTS” root@k8s-master:~# uname -a
Linux k8s-master 5.15.0-76-generic #83-Ubuntu SMP Thu Jun 15 19:16:32
UTC 2023 x86_64 x86_64 x86_64 GNU/Linux root@k8s-master:~#

192.168.186.132 k8s-master01
192.168.186.133 k8s-node01
192.168.186.134 k8s-node02

hostnamectl set-hostname  k8s-master01 && bash
hostnamectl set-hostname  k8s-node01  && bash
hostnamectl set-hostname  k8s-node02  && bash
sudo cat >> /etc/hosts << EOF
192.168.186.132   k8s-master01
192.168.186.133   k8s-node01
192.168.186.134   k8s-node02
EOF
sudo systemctl stop ufw && sudo systemctl disable ufw

1.基礎環境部署

sudo apt-get update     #更新源及/etc/apt/sources.list
sudo apt-get  -y upgrade   #更新已安裝的軟件包 
sudo apt -y install vim lrzsz wget 
sudo swapoff -a # 臨時  
sudo sed -i 's/.*swap.*/#&/' /etc/fstab # 永久
sudo timedatectl set-timezone Asia/Shanghai  &&  sudo systemctl restart rsyslog 
sudo apt install ntpdate -y && sudo ntpdate time.windows.com
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
sudo lsmod | grep br_netfilter
sudo 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
sudo cat > /etc/sysctl.d/10-network-security.conf << EOF
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
EOFsudo sysctl --system

2.安裝Docker和安裝cri-dockerd插件

2.1 安裝docker

sudo apt update && sudo apt-get  -y upgrade
#卸載原來安裝的
sudo apt-get remove docker docker-engine docker.io containerd runc
#安裝必要的一些系統工具
apt -y install apt-transport-https ca-certificates curl software-properties-common
#安裝GPG證書
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
#寫入軟件源信息
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
#更新軟件源
apt-get -y update
#查看可安裝的Docker版本
apt-cache madison docker-ce docker-ce-cli #查看可以安裝的版本
apt install -y docker-ce docker-ce-cli
systemctl start docker && systemctl enable docker
#參數優化, 配置鏡像加速并使用systemd
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com", "https://rncxm540.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
#重啟docker
sudo systemctl daemon-reload  && sudo systemctl restart docker 
sudo  systemctl enable  docker  && sudo systemctl status dockerdocker --version

2.2 安裝cri-dockerd插件

 wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.6/cri-dockerd-0.2.6.amd64.tgztar xvf cri-dockerd-0.2.6.amd64.tgz
cp cri-dockerd/cri-dockerd /usr/local/bin/
#scp cri-dockerd/cri-dockerd root@k8s-node01:/usr/local/bin/
#scp cri-dockerd/cri-dockerd root@k8s-node02:/usr/local/bin/
#所有節點配置cri-dockerd.service文件
cat > /lib/systemd/system/cri-docker.service <<EOF
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.comAfter=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket[Service]
Type=notify
ExecStart=/usr/local/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
ExecReload=/bin/kill -s HUP $MAINPIDTimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process[Install]
WantedBy=multi-user.target
EOF
#所有節點配置cri-docker.socket文件
cat > /etc/systemd/system/cri-docker.socket <<EOF
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker[Install]
WantedBy=sockets.target
EOF
##復制到其他的節點
scp cri-dockerd/cri-dockerd  root@k8s-node01:/usr/local/bin/
scp /lib/systemd/system/cri-docker.service  root@k8s-node01:/lib/systemd/system/
scp /etc/systemd/system/cri-docker.socket  root@k8s-node01:/etc/systemd/system/scp cri-dockerd/cri-dockerd  root@k8s-node02:/usr/local/bin/
scp /lib/systemd/system/cri-docker.service  root@k8s-node02:/lib/systemd/system/
scp /etc/systemd/system/cri-docker.socket  root@k8s-node02:/etc/systemd/system/
#所有節點啟動服務
systemctl restart cri-docker.socket && systemctl enable cri-docker.socket
systemctl  status  cri-docker.socketcri-dockerd  --version

3.開始安裝K8S

3.1安裝kubeadm kubeadm kubectl

sudo apt-get update && sudo apt-get install -y ca-certificates curl software-properties-common apt-transport-https curl
sudo curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
sudo cat  >  /etc/apt/sources.list.d/kubernetes.list << EOF 
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
sudo apt update && sudo apt-get  -y upgrade
sudo apt install kubelet=1.25.3-00 kubeadm=1.25.3-00 kubectl=1.25.3-00 -y #指定版本,最新版本拉去鏡像有問題
sudo apt-mark hold kubelet kubeadm kubectl
sudo systemctl restart kubelet.service

3.2 初始化k8s-master01(在k8s-master01上執行)

#kubeadm config images list #查看集群安裝需要的命令kubeadm config images list --kubernetes-version v1.25.3  > images-download.sh
cat  images-download.sh 
#!/bin/bash
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.25.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.25.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.25.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.25.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.4-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.9.3
#到這里結束
chmod +x images-download.sh
bash   images-download.sh#鏡像拉去成功后,再次執行sudo kubeadm init
sudo kubeadm init --kubernetes-version v1.25.3 --apiserver-advertise-address=192.168.186.132  --service-cidr=10.96.0.0/12  --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers   --cri-socket unix:///var/run/cri-dockerd.sock  --ignore-preflight-errors=all

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

root@k8s-master:~# kubectl get nodes -o wide
NAME         STATUS   ROLES           AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
k8s-master   Ready    control-plane   20m   v1.25.3   192.168.0.15   <none>        Ubuntu 22.04.3 LTS   5.15.0-76-generic   docker://24.0.5
k8s-node01   Ready     worker-01     20m   v1.25.3   192.168.0.15   <none>        Ubuntu 22.04.3 LTS   5.15.0-76-generic   docker://24.0.5
k8s-node01   Ready    worker-02      20m   v1.25.3   192.168.0.15   <none>        Ubuntu 22.04.3 LTS   5.15.0-76-generic   docker://24.0.5
root@k8s-master:~# 

4.單集版的k8s安裝后, 無法部署服務,因為默認k8s-master01不能部署pod,有污點, 需要去掉污點或者新增一個node,我這里是去除污點

{參考文章:https://blog.csdn.net/cd_yourheart/article/details/108766912}
##查看污點策略,顯示三個k8s-master01節點都是NoSchedule

[root@k8s-master01 ~]# kubectl get no -o yaml | grep taint -A 5f:taints: {}manager: kube-controller-manageroperation: Updatetime: "2021-05-09T00:29:04Z"- apiVersion: v1fieldsType: FieldsV1
--taints:- effect: NoSchedulekey: node-role.kubernetes.io/k8s-master01status:addresses:
- address: 49.0.241.2[root@instance-rxkizktp ~]# kubectl taint nodes k8s-master01 key=value:NoExecute #給k8s-master01打上污點,這個就不能運行pod了#去除污點,允許k8s-master01節點部署pod
[root@instance-rxkizktp ~]# kubectl taint nodes --all node-role.kubernetes.io/control-plane-  #執行這句就行,就是取消污點
node/instance-rxkizktp untaintedroot@k8s-master01:/etc/kubernetes# kubectl taint nodes --all  node.kubernetes.io/not-ready:NoSchedule-    #執行這句就行,就是取消污點
node/k8s-master01 untainted
[root@instance-rxkizktp ~]#  kubectl taint nodes k8s-master01 key:NoExecute-	 #刪除
node/k8s-master01 untainted#再次查看,無顯示,說明污點去除成功
[root@instance-rxkizktp ~]#  kubectl get no -o yaml | grep taint -A 5  #什么都沒有查詢到

5.安裝網絡插件

kubectl apply -f calico.yaml
root@k8s-master01:~# kubectl get pods -n kube-system
NAME                                       READY   STATUS    RESTARTS      AGE
calico-kube-controllers-6744f6b6d5-p4r45   1/1     Running   0             5m23s
calico-node-tgfvq                          1/1     Running   0             5m23s
coredns-c676cc86f-5z8cp                    1/1     Running   0             13m
coredns-c676cc86f-lzc5c                    1/1     Running   0             13m
etcd-k8s-master01                          1/1     Running   0             41m
kube-apiserver-k8s-master01                1/1     Running   7             41m
kube-controller-manager-k8s-master01       1/1     Running   0             40m
kube-proxy-m66rg                           1/1     Running   0             13m
kube-scheduler-k8s-master01                1/1     Running   0             41m
root@k8s-master01:~# 

6.部署httpd服務測試集群

kubectl create deployment httpd --image=httpd
kubectl expose deployment httpd --port=80 --type=NodePort
kubectl get pods,svc  #查看暴露端口

瀏覽器訪問: 集群任何IP:端口

7.補全命令

apt  install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

8.部署Dashboard

官網網址: https://github.com/kubernetes/dashboard/releases
這里下載對應的文件,文件需要跟K8S版本對應上

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
docker pull registry.aliyuncs.com/google_containers/metrics-server:v0.6.0kubectl apply -f recommended.yaml 
kubectl get pods -n kubernetes-dashboard
[root@k8s-master01 ~]# kubectl get pods,svc -n kubernetes-dashboard
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-7b59f7d4df-znxj6   1/1     Running   0          114s
kubernetes-dashboard-5dbf55bd9d-rzkpw        1/1     Running   0          114s
#創建service  account并綁定默認cluster-admin管理員群集角色
kubectl create serviceaccount dashboard-admin -n kube-system  #創建用戶
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin #用戶授權
kubectl -n kube-system get serviceaccounts |grep dashboard #查看sa是否創建成功
kubectl -n kube-system create token dashboard-admin  --duration=518400s #創建用戶Token
#一年365*24*60*60=31536000s 第一次token登錄后有報錯,請再次執行一次token就好了 

9.部署metrics服務

docker pull kubernetesui/dashboard:v2.7.0
docker pull kubernetesui/metrics-scraper:v1.0.8kubectl apply -f components.yaml
kubectl top nodes 
kubectl top pods
[root@k8s-master01 ]# kubectl top nodes
NAME           CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-master01   873m         14%    1077Mi          13%       
k8s-node01     422m         7%     712Mi           12%       
k8s-node02     303m         7%     606Mi           16%       
[root@k8s-master01 ]# 
[root@k8s-master01 ]# 
[root@k8s-master01 ]# kubectl top nodes
NAME           CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-master01   873m         14%    1077Mi          13%       
k8s-node01     422m         7%     712Mi           12%       
k8s-node02     303m         7%     606Mi           16%       
[root@k8s-master0101 ]# 

安裝有問題,可以給我留言,本人都是親測過的沒有問題。

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

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

相關文章

js合并數組對象(將數組中具有相同屬性對象合并到一起,組成一個新的數組)

一、根據數組對象中某一key值&#xff0c;合并相同key值的字段&#xff0c;到同一個數組對象中&#xff0c;組成新的數組 1.原數組&#xff1a; var array [{ id: 1, name: Alice },{ id: 2, name: Bob },{ id: 1, age: 25 },{ id: 3, name: Charlie, age: 30 } ];2.合并后數…

C++隱式調用和explicit關鍵字

隱式類型轉換 #include <iostream> using namespace std;class Point { public:int x, y;Point(int x 0, int y 0): x(x), y(y) {} };void displayPoint(const Point& p) {cout << "(" << p.x << "," << p.y <&l…

接口測試實戰,Jmeter正則提取響應數據-詳細整理,一篇打通...

目錄&#xff1a;導讀 前言一、Python編程入門到精通二、接口自動化項目實戰三、Web自動化項目實戰四、App自動化項目實戰五、一線大廠簡歷六、測試開發DevOps體系七、常用自動化測試工具八、JMeter性能測試九、總結&#xff08;尾部小驚喜&#xff09; 前言 在測試時&#xf…

服務器安裝JDK

三種方法 方法一&#xff1a; 方法二&#xff1a; 首先登錄到Oracle官網下載JDK JDK上傳到服務器中&#xff0c;記住文件上傳的位置是在哪里&#xff08;我放的位置在/www/java&#xff09;&#xff0c;然后看下面指示進行安裝 方法三&#xff1a; 首先登錄到Oracle官網下載…

Skywalking-9.6.0系列之本地源碼編譯并啟動

Skywalking相信有很多人使用過&#xff0c;通過容器或者下載安裝包進行安裝的&#xff0c;今天從源代碼角度&#xff0c;拉取、構建、啟動。 官方文檔步驟簡潔明了&#xff0c;我這邊會結合自己遇到的一些問題做出總結。 當前構建資源版本&#xff1a; MAC 10.15.7IDEA 2021.…

基于STM32CUBEMX驅動TMOS模塊STHS34PF80(1)----獲取ID

基于STM32CUBEMX驅動TMOS模塊STHS34PF80----1.獲取ID 概述樣品申請視頻教程所有功能接口最小系統圖生成STM32CUBEMX串口配置IIC配置IO口設置串口重定向 模塊地址參考demoIIC寫函數IIC讀函數參考程序初始化獲取ID主函數 概述 STHS34PF80 是一款非冷卻、工廠校準的紅外運動和存在…

端口輸入的數據為什么要打拍?

一次作者在開發圖像時候&#xff0c;對輸入的圖像沒有打拍&#xff0c;直接輸出給顯示終端&#xff0c;時好時壞&#xff0c;或者圖像顏色不正確&#xff0c;最終經過打拍解決了此問題。 //配置為16-Bit SDR ITU-R BT.656模式時pixel_data[23:16]為高阻。always (posedge pixe…

AtCoder Beginner Contest 314-A/B/C

A - 3.14 題目要求輸出圓周率保留小數幾位后的結果 用字符串來存儲長串的圓周率&#xff0c;截取字符串就可以了。 #include<iostream> using namespace std; int main() {string s"3.1415926535897932384626433832795028841971693993751058209749445923078164062…

C#多線程開發詳解

C#多線程開發詳解 持續更新中。。。。。一、為什么要使用多線程開發1.提高性能2.響應性3.資源利用4.任務分解5.并行計算6.實時處理 二、多線程開發缺點1.競態條件2.死鎖和饑餓3.調試復雜性4.上下文切換開銷5.線程安全性 三、多線程開發涉及的相關概念常用概念(1)lock(2)查看當前…

NanoPi NEO移植LVGL8.3.5到1.69寸ST7789V屏幕

移植前準備 移植好fbtft屏幕驅動 參考鏈接&#xff1a;友善之臂NanoPi NEO利用fbtft驅動點亮1.69寸ST7789V2屏幕 獲取源碼 名稱地址描述lvglhttps://github.com/lvgl/lvgl.gitlvgl-8.3.5lv_drivershttps://github.com/lvgl/lv_drivers.gitlv_drivers-6.1.1 創建工程目錄 創…

RF PCB的9條改進型建議

1.小功率的RF的PCB設計中,主要使用標準的FR4材料(絕緣特性好、材質均勻、介電常數ε=4,10%)。主要使用4層~6層板,在成本非常敏感的情況下可以使用厚度在1mm以下的雙面板,要保證反面是一個完整的地層,同時由于雙面板的厚度在1mm以上,使得地層和信號層之間的FR4介質較厚,…

Linux | curl命令調用接口時查看調用時長和詳情

關注wx&#xff1a; CodingTechWork 引言 在服務器中通過curl命令調用接口時&#xff0c;我們經常需要分析一些時長。本文主要總結兩種方式進行處理。 curl命令 使用time命令 time curl -k -u <username>:<password> https://127.0.0.1/xxxx -vvv 使用文本 編…

HTML <span> 標簽

定義和用法 <span> 標簽被用來組合文檔中的行內元素。 瀏覽器支持 元素ChromeIEFirefoxSafariOpera<span>YesYesYesYesYes所有瀏覽器都支持 <span> 標簽。 HTML 與 XHTML 之間的差異 NONE 提示和注釋: 提示:請使用 <span> 來組合行內元素,以便…

旋轉圖像(旋轉矩陣)

原題鏈接 旋轉圖像備戰技術面試&#xff1f;力扣提供海量技術面試資源&#xff0c;幫助你高效提升編程技能&#xff0c;輕松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/rotate-image/ 算法分析 若矩陣的行列數為N&#xff0c;設i表示行索引&#xff0c;i屬…

win10中Docker安裝、構建鏡像、創建容器、Vscode連接實例

Docker方便一鍵構建項目所需的運行環境&#xff1a;首先構建鏡像(Image)。然后鏡像實例化成為容器(Container)&#xff0c;構成項目的運行環境。最后Vscode連接容器&#xff0c;方便我們在本地進行開發。下面以一個簡單的例子介紹在win10中實現&#xff1a;Docker安裝、構建鏡像…

Flutter BottomSheet 三段式拖拽

BottomSheetBehavior 追蹤 BottomSheet系統默認實現效果準備要實現的功能點&#xff1a;定義三段式狀態&#xff1a;BottomSheetBehavoir閥值定義1. 未達到滾動閥值&#xff0c;恢復狀態2. 達到滾動閥值&#xff0c;更新狀態 前面倒是有講過Android原生的BottomSheetBehavior&a…

Flask 框架集成Bootstrap

前面學習了 Flask 框架的基本用法&#xff0c;以及模板引擎 Jinja2&#xff0c;按理說可以開始自己的 Web 之旅了&#xff0c;不過在啟程之前&#xff0c;還有個重要的武器需要了解一下&#xff0c;就是著名的 Bootstrap 框架和 Flask 的結合&#xff0c;這將大大提高開發 Web …

國產數據庫-內核特性-低基數全局字典

國產數據庫-內核特性-StarRocks低基數全局字典 StarRocks2.0引入了低基數全局字典&#xff0c;可以通過全局字典將字符串的相關操作轉換成整型相關操作&#xff0c;大大提升查詢性能。 1、低基數字典 對于利用整型替代字符串進行處理&#xff0c;通常使用字典編碼進行優化。Sta…

人大金倉助力某大型金融機構業務系統異地容災優化升級

日前&#xff0c;人大金倉助力某大型金融機構應收賬款融資服務平臺異地容災項目順利上線&#xff0c;保證了平臺系統運行的連續性和數據安全&#xff0c;為充分發揮平臺的融資功能&#xff0c;緩解中小微企業融資難提供了強有力的保障。 “ 緩解中小微企業融資難 某大型金融機構…

【MySQL--->數據庫操作】

文章目錄 [TOC](文章目錄) 一、操作語句1.增2.刪3.改4.查5.備份 二、字符集與校驗規則 一、操作語句 1.增 語句格式:create database [if no exists]數據庫名[create_specification [,create_specification] …]; 中括號內是可選項,if no exists是指如果數據庫不存在就創建,存…