K8S搭建

文章目錄

  • K8S搭建
      • 配置要求
    • 安裝 Kuboard-Spray
    • 加載離線資源包
    • 規劃并安裝集群
    • 訪問集群
    • 重啟Kubernetes集群
      • Worker節點不能啟動
      • 許多Pod一直Crash或不能正常訪問
    • containerd配置網絡代理
  • 常用的 kubectl 命令:

K8S搭建

安裝高可用的Kubernetes集群

配置要求

對于 Kubernetes 初學者,在搭建K8S集群時,推薦在阿里云或騰訊云采購如下配置:(您也可以使用自己的虛擬機、私有云等您最容易獲得的 Linux 環境)

  • 至少 2 臺 2核4G 的服務器
  • 本文檔中,CPU 必須為 x86 架構,暫時未適配 arm 架構的 CPU
  • CentOS 7.8CentOS 7.9Ubuntu 20.04

操作系統兼容性

CentOS 版本本文檔是否兼容備注
CentOS 7.9😄已驗證
CentOS 7.8😄已驗證
Ubuntu 20.04😄已驗證

安裝 Kuboard-Spray

  • 取一臺服務器或虛擬機,執行一條命令,即可完成 Kuboard-Spray 的安裝。

    對這臺服務器的最低要求為:

    • 1核2G
    • 不少于 10G 磁盤空余空間
    • 已經安裝好 docker

    待執行的命令如下:

    docker run -d \--privileged \--restart=unless-stopped \--name=kuboard-spray \-p 80:80/tcp \-v /var/run/docker.sock:/var/run/docker.sock \-v ~/kuboard-spray-data:/data \eipwork/kuboard-spray:latest-amd64# 如果抓不到這個鏡像,可以嘗試一下這個備用地址:# swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard-spray:latest-amd64
    

    持久化

    • KuboardSpray 的信息保存在容器的 /data 路徑,請將其映射到一個您認為安全的地方,上面的命令中,將其映射到了 ~/kuboard-spray-data 路徑;
    • 只要此路徑的內容不受損壞,重啟、升級、重新安裝 Kuboard-Spray,或者將數據及 Kuboard-Spray 遷移到另外一臺機器上,您都可以找回到原來的信息。
  • 在瀏覽器打開地址 http://這臺機器的IP,輸入用戶名 admin,默認密碼 Kuboard123,即可登錄 Kuboard-Spray 界面。

加載離線資源包

  • 在 Kuboard-Spray 界面中,導航到 系統設置 --> 資源包管理 界面,可以看到已經等候您多時的 Kuboard-Spray 離線資源包,如下圖所示:
    在這里插入圖片描述

  • 點擊 導 入 按鈕,在界面的引導下完成資源包的加載。

    重要

    • 權限問題
      • 導入資源包時,可能會碰到 no such file or directory 或者 permission denied 之類的錯誤提示,通常是因為您開啟了 SELinux,導致 kuboard-spray 不能讀取映射到容器 /data 的路徑
    • 離線導入
      • 如果您處在內網環境,上圖中的列表默認將是空的,請注意其中的 離線加載資源包 按鈕,它可以引導您輕松完成資源包的離線加載過程。

規劃并安裝集群

  • 在 Kuboard-Spray 界面中,導航到 集群管理 界面,點擊界面中的 添加集群安裝計劃 按鈕,填寫表單如下:

    • 集群名稱: 自定義名稱,本文中填寫為 kuboard123,此名稱不可以修改;

    • 資源包:選擇前面步驟中導入的離線資源包。
      在這里插入圖片描述

    • 點擊上圖對話框中的 確定 按鈕后,將進入集群規劃頁面,在該界面中添加您每個集群節點的連接參數并設置節點的角色,如下圖所示:

      重要: kuboard-spray 所在機器不能當做 K8S 集群的一個節點,因為安裝過程中會重啟集群節點的容器引擎,這會導致 kuboard-spray 被重啟掉。
      在這里插入圖片描述

      注意事項

      • 最少的節點數量是 1 個;

      • ETCD 節點、控制節點的總數量必須為奇數;

      • 全局設置 標簽頁,可以設置節點的通用連接參數,例如所有的節點都使用相同的 ssh 端口、用戶名、密碼,則共同的參數只在此處設置即可;

      • 在節點標簽頁,如果該節點的角色包含 etcd 則必須填寫 ETCD 成員名稱 這個字段;

      • 如果您 KuboardSpray 所在節點不能直接訪問到 Kubernetes 集群的節點,您可以設置跳板機參數,使 KuboardSpray 可以通過 ssh 訪問集群節點。

      • 集群安裝過程中,除了已經導入的資源包以外,還需要使用 yum 或 apt 指令安裝一些系統軟件,例如 curl, rsync, ipvadm, ipset, ethtool 等,此時要用到操作系統的 apt 軟件源或者 yum 軟件源。全局設置 標簽頁中,可以引導您完成 apt / yum 軟件源的設置,您可以:

        • 使用節點操作系統已經事先配置的 apt / yum 源,或者
        • 在安裝過程中自動配置節點的操作系統使用指定的軟件源
      • 如果您使用 docker 作為集群的容器引擎,還需要在全局設置 標簽頁指定安裝 docker 用的 apt / yum 源。

        如果您使用 containerd 作為容器引擎,則無需配置 docker 的 apt / yum 源,containerd 的安裝包已經包含在 KuboardSpray 離線資源包中。

    • 點擊上圖的 保存 按鈕,再點擊 執行 按鈕,可以啟動集群的離線安裝過程,如下圖所示:
      在這里插入圖片描述

    • 取決于您機器的性能和網絡訪問速度,大概喝一杯茶的功夫,集群就安裝好了,安裝成功時,日志界面的顯示如下圖所示:
      在這里插入圖片描述

訪問集群

  • 如果集群日志界面提示您集群已經安裝成功,此時您可以返回到集群規劃頁面,此界面將自動切換到 訪問集群 標簽頁,如下圖所示:

    界面給出了三種方式可以訪問 kubernetes 集群:

    • 在集群主節點上執行 kubectl 命令
    • 獲取集群的 .kubeconfig 文件
    • 將集群導入到 kuboard管理界面
      在這里插入圖片描述

重啟Kubernetes集群

Kubernetes集群的設計目標是setup-and-run-forever,然而許多學習者使用自己筆記本上的虛擬機安裝K8S集群用于學習,這就必然會出現反復重啟集群所在虛擬機的情況。本文針對重啟后會出現一些的一些令人困惑的問題做了解釋。

Worker節點不能啟動

Master 節點的 IP 地址變化,導致 worker 節點不能啟動。請重裝集群,并確保所有節點都有固定內網 IP 地址。

許多Pod一直Crash或不能正常訪問

kubectl get pods --all-namespaces

重啟后會發現許多 Pod 不在 Running 狀態,此時,請使用如下命令刪除這些狀態不正常的 Pod。通常,您的 Pod 如果是使用 Deployment、StatefulSet 等控制器創建的,kubernetes 將創建新的 Pod 作為替代,重新啟動的 Pod 通常能夠正常工作。

kubectl delete pod <pod-name> -n <pod-namespece>

containerd配置網絡代理

沒有配置containerd運行時代理設置。因為K8使用containerd運行時拉取圖像。如果您的PC位于代理之后,如果它不直接使用代理系統設置(例如docker,containerd等),您應該始終配置應用設置。

sudo mkdir -p /etc/systemd/system/containerd.service.d
sudo touch /etc/systemd/system/containerd.service.d/http-proxy.conf
vi /etc/systemd/system/containerd.service.d/http-proxy.conf
# 在http-proxy.conf里寫入以下配置
[Service]
Environment="HTTP_PROXY=http://xx.x.xx.xxx:xxxx/" "HTTPS_PROXY=http://xx.x.xx.xxx:xxxx/" 
"NO_PROXY=localhost,127.0.0.1,192.168.182.xxx"
# 重啟containerd服務
sudo systemctl daemon-reload
sudo systemctl restart containerd 	
sudo systemctl show --property=Environment containerd

常用的 kubectl 命令:

  1. kubectl get: 獲取資源列表

    • kubectl get pods: 獲取 Pod 列表
    • kubectl get nodes: 獲取節點列表
    • kubectl get services: 獲取服務列表
    • kubectl get deployments: 獲取部署列表
  2. kubectl describe: 顯示資源的詳細信息

    • kubectl describe pod <pod-name>: 顯示 Pod 的詳細信息
    • kubectl describe node <node-name>: 顯示節點的詳細信息
    • kubectl describe service <service-name>: 顯示服務的詳細信息
  3. kubectl create: 創建資源

    • kubectl create deployment <name> --image=<image>: 創建一個部署
    • kubectl create service <name> --tcp=<port>:<targetPort>: 創建一個服務
  4. kubectl delete: 刪除資源

    • kubectl delete pod <pod-name>: 刪除 Pod
    • kubectl delete deployment <deployment-name>: 刪除部署
    • kubectl delete service <service-name>: 刪除服務
  5. kubectl exec: 在容器內執行命令

    • kubectl exec -it <pod-name> -- <command>: 在 Pod 內執行命令
  6. kubectl logs: 獲取容器日志

    • kubectl logs <pod-name>: 獲取 Pod 的日志
  7. kubectl apply: 應用配置文件

    • kubectl apply -f <filename>: 應用配置文件
  8. kubectl scale: 調整副本數

    • kubectl scale deployment <deployment-name> --replicas=<replica-count>: 調整部署的副本數
  9. kubectl rollout: 管理滾動更新

    • kubectl rollout status deployment/<deployment-name>: 查看滾動更新狀態
    • kubectl rollout history deployment/<deployment-name>: 查看滾動更新歷史
    • kubectl rollout undo deployment/<deployment-name>: 回滾滾動更新
  10. kubectl port-forward: 將本地端口映射到 Pod 端口

    • kubectl port-forward <pod-name> <local-port>:<pod-port>: 將本地端口映射到 Pod 的端口

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

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

相關文章

【Linux】高效文本處理命令

目錄 一.sort命令&#xff08;排序&#xff09; 1.語法格式 2.常用選項 3.相關示例 3.1. 3.2. 二.unip命令&#xff08;去重&#xff09; 1.語法格式 2.常用選項 3.相關示例 3.1. 3.2. 三.tr命令&#xff08;替換&#xff09; 1.語法格式 2.常用選項 3.相關示例…

TiDB學習2:TiDB Sever

目錄 1. TiDB Server架構 2. sql語句的解析和編譯 2.1 Parse ?編輯 2.2 compile 3. 行轉化為KV對(聚簇表) ?編輯4. SQL 讀寫相關模塊 4.1 DistSQL(復雜查詢) 4.2 KV(簡單查詢) 5. 在線DDL相關模塊 6. GC機制與相關模塊 7. TiDB Server的緩存 8. 熱點小表緩存 9. …

c++ fs::rename

【C 17 新特性 文件管理】探索C Filesystem庫&#xff1a;文件和目錄操作的全面指南&#xff08;一&#xff09;-阿里云開發者社區 fs::rename("old_directory", "new_directory"); 底層原理: 在Linux系統中&#xff0c;這通常通過rename系統調用來實現。…

做好串口控制是源代碼防泄密的基礎

在信息化時代&#xff0c;數據安全與保密工作的重要性日益凸顯。尤其是在涉密單位&#xff0c;如軍工、政府、金融等行業&#xff0c;防泄密工作直接關系到國家安全、社會穩定和企業利益。串口作為計算機與外部設備通信的重要接口&#xff0c;其安全性同樣不容忽視。本文將探討…

react18【系列實用教程】useMemo —— 緩存數據 (2024最新版)

為什么添加了 memo &#xff0c;子組件2依然重新渲染了呢&#xff1f; 因為父組件向子組件2傳遞了引用類型的數據 const userInfo {name: "朝陽",};<Child2 userInfo{userInfo} />memo() 函數的本質是通過校驗Props中數據的內存地址是否改變來決定組件是否重新…

TEMU電商行情分析:未來趨勢與盈利機遇探討

近年來&#xff0c;跨境電商行業風起云涌&#xff0c;其中TEMU作為新興力量&#xff0c;其市場表現備受關注。那么&#xff0c;TEMU電商現在的行情究竟如何?對于賣家而言&#xff0c;是否仍然是一個能夠賺錢的平臺呢? 首先&#xff0c;從市場趨勢來看 TEMU電商正處于一個快速…

如何設計學術會議海報?

在參加學術會議的時候&#xff0c;制作一份會議海報來展示你的研究內容是十分必要的。海報是你與別人交流研究成果時的關鍵部分&#xff0c;也是成功科研生涯的重要元素。海報本身自帶許多優秀的特質&#xff1a;思路清晰、內容精練&#xff0c;并且極易引起他人的興趣。 一、…

vant添加列表, 日期選擇總是填充到最后一個組內原因

添加多個行程, 無論在哪個行程上修改時間, 時間總是只顯示在最后一個行程里 錯誤代碼: <div class"journey"><divv-for"(item, index) in ruleform.hrms_business_item":key"index"><div class"journey-title">&l…

Python執行MYSQL SQL文件

很多情況下我們需要Python來執行SQL文件&#xff0c;但是一般庫沒有提供這些功能&#xff0c;直接執行經常會出錯&#xff0c;這里分析各種情況下執行SQL語句的處理。如果你沒有時間的話&#xff0c;直接跳轉查看[第三點](#3. 包含DELIMITER的語句)。 準備工作 這里采用**mys…

Linux之函數應用實例--加法器

一、創建一個對2個整數求和的加法器 首先&#xff0c;定義了一個名為 adder 的 Bash 函數&#xff0c;該函數接受兩個參數 $1 和 $2 并輸出它們的和。 function adder { echo $[ $1$2 ] } 注意&#xff1a; function 關鍵字是可選的。在 Bash 中&#xff0c;可以簡單地使…

近程無人機平臺技術體系

近程無人機平臺技術體系 1、技術體系1.1、專用技術體系固定翼技術體系旋翼技術體系復合翼技術體系撲翼技術體系傾轉旋翼技術體系1.2、通用技術體系2、固定翼技術體系2.1、固定翼無人機介紹2.2、優勢與局限2.3、固定翼專用體系介紹3、旋翼技術體系3.1、旋翼無人機介紹3.2、優勢與…

前端 JS 經典:數組去重萬能方法

前言&#xff1a;只需要掌握這一個方法&#xff0c;就可以對有任何重復的數據數組&#xff0c;進行去重了。 可以自己思考下&#xff0c;怎么對以下對象數組去重&#xff1a; const arr [{ a: 1, b: 2 },{ b: 2, a: 1 },{ a: 1, b: 2, c: { a: 1, b: 2 } },{ b: 2, a: 1, c:…

Geotrust哪種通配符證書800

Geotrust是成立了幾十年的CA認證機構&#xff0c;每年都會通過WebTrust審計&#xff0c;旗下擁有各種類型的SSL數字證書產品&#xff0c;例如單域名SSL證書、多域名SSL證書和通配符SSL證書等。而為了更好地區分SSL證書產品&#xff0c;Geotrust旗下還分了幾個子品牌&#xff0c…

解決項目下的lib包沒有打進jar的問題

背景 項目在本地運行正常,發布到測試環境就不行,測試環境報缺少lib包下的類 解決方案 在項目的 pom.xml 文件中 <build></build> 標簽下的 <resources></resources>標簽中&#xff0c;加入以下代碼&#xff0c;如&#xff1a; <build><res…

電池的一些UL認證標準

1、如今手機使用頻率越來越高&#xff0c;充電器廣泛地應用于交通上&#xff0c;為消費者提供充電的方便&#xff0c;汽車上的車充與我們產生了密切的聯系&#xff0c;如果車充質量不好&#xff0c;可能會導致嚴重的后果&#xff0c;因此UL 2089標準著重于防止車充電擊、燃燒&a…

MySQL存儲引擎介紹

查看MySQL數據庫中創建表的信息 如上圖所示&#xff0c;當我們使用命令show create table server_info\G;可以顯示我們所創建的表的信息&#xff0c;只顯示兩個字段&#xff0c;第一個字段是Table 即是創建的表的名稱&#xff0c;第二個字段是Create Table即是創建的表的字段的…

Python中logging模塊的使用

在Python中&#xff0c;logging模塊提供了一個靈活的日志記錄系統&#xff0c;用于將程序的輸出信息分門別類地發送到不同的目的地。Logger對象是這個系統的核心&#xff0c;它負責創建日志消息。默認情況下&#xff0c;如果沒有特別配置&#xff0c;Logger會將日志輸出到標準錯…

Redis過期刪除策略和內存淘汰策略有什么區別?

Redis過期刪除策略和內存淘汰策略有什么區別&#xff1f; 前言過期刪除策略如何設置過期時間&#xff1f;如何判定 key 已過期了&#xff1f;過期刪除策略有哪些&#xff1f;Redis 過期刪除策略是什么&#xff1f; 內存淘汰策略如何設置 Redis 最大運行內存&#xff1f;Redis 內…

buildroot添加ssh功能

在制作了自己的buildroot生成的根文件系統之后&#xff0c;是沒有ssh服務的&#xff0c;需要自行添加。 在buildroot的menuconfig里&#xff1a; Target packages -> Networking applications -> openssh 重新編譯&#xff0c;還不能通過電腦連接&#xff0c;還需配置并…

xorg.conf 設置 集顯 獨顯 英偉達 Ubuntu 風扇調速

使用集顯做顯示&#xff0c;使用獨顯做機器學習&#xff0c;那么xorg.conf如何配置&#xff1f; 如果配不好&#xff0c;那么會卡在歡迎登錄界面&#xff0c;據說也會限制風扇調速的功能。 既然GPT時代了&#xff0c;那么我們就用AI加速一下&#xff0c;直接lspci | grep -i v…