Kubernetes(k8s)學習筆記(七)--KubeSphere 最小化安裝

前情提要

可視化操作面板對于開發、運維絕對是提升工作效率的一大利器,因此很有必要搭建一套可視化操作來管理Kubernetes。

可視化面板有多種:

1.Kubernetes官方提供的默認面板:dashboard,用處不大,放棄;
2.Kuboard 也很不錯, 集群要求不高,可通過訪問https://kuboard.cn/support/作進一步了解;3.Kubesphere 集成了很多套件, 集群要求較高,可通過訪問https://kubesphere.io/作進一步了解。

本文主要圍繞KubeSphere進行講解。

?簡介


KubeSphere 是一款面向云原生設計的開源項目, 在目前主流容器調度平臺 Kubernetes 之上構建的分布式多租戶容器管理平臺, 提供簡單易用的操作界面以及向導式操作方式, 在降低用戶使用容器調度平臺學習成本的同時, 極大降低開發、 測試、 運維的日常工作的復雜度。

安裝前置環境

主要是安裝helm,tiller和openebs,這個在上一篇中已完成。

然后是最小化安裝 kubesphere,本文要介紹的。

須確保集群可用的資源符合 CPU > 1 Core, 可用內存 > 2 G

下面具體的搭建的過程

搭建過程


1.創建一個kubesphere-mini.yaml文件

并寫入下面的內容 :

---
apiVersion: v1
kind: Namespace
metadata:name: kubesphere-system---
apiVersion: v1
data:ks-config.yaml: |---persistence:storageClass: ""etcd:monitoring: FalseendpointIps: 192.168.0.7,192.168.0.8,192.168.0.9port: 2379tlsEnable: Truecommon:mysqlVolumeSize: 20GiminioVolumeSize: 20GietcdVolumeSize: 20GiopenldapVolumeSize: 2GiredisVolumSize: 2Gimetrics_server:enabled: Falseconsole:enableMultiLogin: False  # enable/disable multi loginport: 30880monitoring:prometheusReplicas: 1prometheusMemoryRequest: 400MiprometheusVolumeSize: 20Gigrafana:enabled: Falselogging:enabled: FalseelasticsearchMasterReplicas: 1elasticsearchDataReplicas: 1logsidecarReplicas: 2elasticsearchMasterVolumeSize: 4GielasticsearchDataVolumeSize: 20GilogMaxAge: 7elkPrefix: logstashcontainersLogMountedPath: ""kibana:enabled: Falseopenpitrix:enabled: Falsedevops:enabled: FalsejenkinsMemoryLim: 2GijenkinsMemoryReq: 1500MijenkinsVolumeSize: 8GijenkinsJavaOpts_Xms: 512mjenkinsJavaOpts_Xmx: 512mjenkinsJavaOpts_MaxRAM: 2gsonarqube:enabled: FalsepostgresqlVolumeSize: 8Giservicemesh:enabled: Falsenotification:enabled: Falsealerting:enabled: False
kind: ConfigMap
metadata:name: ks-installernamespace: kubesphere-system---
apiVersion: v1
kind: ServiceAccount
metadata:name: ks-installernamespace: kubesphere-system---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:creationTimestamp: nullname: ks-installer
rules:
- apiGroups:- ""resources:- '*'verbs:- '*'
- apiGroups:- appsresources:- '*'verbs:- '*'
- apiGroups:- extensionsresources:- '*'verbs:- '*'
- apiGroups:- batchresources:- '*'verbs:- '*'
- apiGroups:- rbac.authorization.k8s.ioresources:- '*'verbs:- '*'
- apiGroups:- apiregistration.k8s.ioresources:- '*'verbs:- '*'
- apiGroups:- apiextensions.k8s.ioresources:- '*'verbs:- '*'
- apiGroups:- tenant.kubesphere.ioresources:- '*'verbs:- '*'
- apiGroups:- certificates.k8s.ioresources:- '*'verbs:- '*'
- apiGroups:- devops.kubesphere.ioresources:- '*'verbs:- '*'
- apiGroups:- monitoring.coreos.comresources:- '*'verbs:- '*'
- apiGroups:- logging.kubesphere.ioresources:- '*'verbs:- '*'
- apiGroups:- jaegertracing.ioresources:- '*'verbs:- '*'
- apiGroups:- storage.k8s.ioresources:- '*'verbs:- '*'
- apiGroups:- admissionregistration.k8s.ioresources:- '*'verbs:- '*'---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: ks-installer
subjects:
- kind: ServiceAccountname: ks-installernamespace: kubesphere-system
roleRef:kind: ClusterRolename: ks-installerapiGroup: rbac.authorization.k8s.io---
apiVersion: apps/v1
kind: Deployment
metadata:name: ks-installernamespace: kubesphere-systemlabels:app: ks-install
spec:replicas: 1selector:matchLabels:app: ks-installtemplate:metadata:labels:app: ks-installspec:serviceAccountName: ks-installercontainers:- name: installerimage: kubesphere/ks-installer:v2.1.1imagePullPolicy: "Always"

2.執行apply命令

#KubeSphere 最小化安裝:
kubectl apply -f kubesphere-mini.yaml

?3.檢查kubesphere pod啟動運行情況

執行下面的命令,觀察kubesphere相關pods啟動情況,確保所有的都處于Running狀態

kubectl get pods --all-namespaces


如果哪個pod失敗,使用下面的命令找出失敗的原因

# pod替換為失敗的pod名,n后面的參數換成對應的命名空間
kubectl describe pod default-http-backend-5d464dd566-wtr98 -n kubesphere-controls-system

?如果失敗的原因是ImagePullBackOff,可以使用這個命令,找到需要的鏡像

# pod和n 后面的參數替換為失敗的pod名和對應的命名空間
kubectl describe pod  node-exporter-kjs4p -n kubesphere-monitoring-system | grep -A5 "Containers"

?像上圖中出現一個pod:default-http-backend鏡像拉取失敗,最后試了這個才拉取到本地

registry.cn-beijing.aliyuncs.com/kubesphereio/defaultbackend-amd64:1.4

拉取到以后需要打標簽,偽裝成mirrorgooglecontainers/defaultbackend-amd64:1.4

拉取和打標簽通過下面的命令來實現:

# 拉鏡像

docker pull registry.cn-beijing.aliyuncs.com/kubesphereio/defaultbackend-amd64:1.4

# 打標簽

docker tag registry.cn-beijing.aliyuncs.com/kubesphereio/defaultbackend-amd64:1.4 mirrorgooglecontainers/defaultbackend-amd64:1.4

然后刪除失敗的pod進行重建,注意替換pod后面的參數自己的Pod名,n后面的參數為自己的命名空間

kubectl delete pod ?default-http-backend-5d464dd566-z2bt2 -n kubesphere-controls-system

?刪除后重建如果還是失敗上面提到的命令再次查看原因,注意查看輸出的原因分析的Event部分

Events:
? Type ? ? Reason ? ? Age ? ? ? ? ? ? ? ? ?From ? ? ? ? ? ? ? ?Message
? ---- ? ? ------ ? ? ---- ? ? ? ? ? ? ? ? ---- ? ? ? ? ? ? ? ?-------
? Normal ? Scheduled ?<unknown> ? ? ? ? ? ?default-scheduler ? Successfully assigned kubesphere-controls-system/default-http-backend-5d464dd566-9dqlz to k8s-node2
? Warning ?Failed ? ? 74s (x2 over 3m38s) ?kubelet, k8s-node2 ?Failed to pull image "mirrorgooglecontainers/defaultbackend-amd64:1.4": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
? Warning ?Failed ? ? 74s (x2 over 3m38s) ?kubelet, k8s-node2 ?Error: ErrImagePull
? Normal ? BackOff ? ?59s (x2 over 3m37s) ?kubelet, k8s-node2 ?Back-off pulling image "mirrorgooglecontainers/defaultbackend-amd64:1.4"
? Warning ?Failed ? ? 59s (x2 over 3m37s) ?kubelet, k8s-node2 ?Error: ImagePullBackOff
? Normal ? Pulling ? ?47s (x3 over 6m4s) ? kubelet, k8s-node2 ?Pulling image "mirrorgooglecontainers/defaultbackend-amd64:1.4"
?

從上面輸出可以看出

Pod 被調度到了 node2,但 node2 去拉鏡像時失敗了(因為網絡問題,連不上 Docker Hub)。

問題本質

只在 k8s-node1docker pulldocker tag 了鏡像,
但是 k8s-node2 也要這個鏡像,它自己本地沒有,所以還會去拉。
Kubernetes 不會自動把 node1 的鏡像復制給 node2

因此需要在k8s-node2上執行下面的命令

# 拉鏡像

docker pull registry.cn-beijing.aliyuncs.com/kubesphereio/defaultbackend-amd64:1.4

# 打標簽

docker tag registry.cn-beijing.aliyuncs.com/kubesphereio/defaultbackend-amd64:1.4 mirrorgooglecontainers/defaultbackend-amd64:1.4

?驗證本地是否有相關鏡像

docker images | grep defaultbackend

?輸出下圖的提示才正常

[root@k8s-node2 ~]# docker images | grep defaultbackend
mirrorgooglecontainers/defaultbackend-amd64 ? ? ? ? ? ? ? ? ? ? ? ? ?1.4 ? ? ? ? ? ? ? ? 846921f0fe0e ? ? ? ?7 years ago ? ? ? ? 4.84MB
registry.cn-beijing.aliyuncs.com/kubesphereio/defaultbackend-amd64 ? 1.4 ? ? ? ? ? ? ? ? 846921f0fe0e ? ? ? ?7 years ago ? ? ? ? 4.84MB

?如果本地有鏡像但還是ImagePullBackOff,需要使用下面的命令指定imagePullPolicy: IfNotPresent

kubectl -n kubesphere-controls-system patch deployment default-http-backend -p '{"spec":{"template":{"spec":{"containers":[{"name":"default-http-backend","imagePullPolicy":"IfNotPresent"}]}}}}'

經過上面的處理,再次查看kubesphere所有pod的狀態,全部變為Running狀態了

還可以使用下面的命令查看安裝日志,整個過程所需時間跟網絡緊密相關,?請耐心等待安裝成功:

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

?當所有kubesphere pod都處于Running狀態時,就可以使用瀏覽器訪問kubesphere了,kubeSphere v2.x默認的賬號為admin,密碼為P@88w0rd,因此使用這個它們即可登錄

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

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

相關文章

MCP連接Agent:AI時代的TCP/IP

介紹 2023年&#xff0c;生成式AI爆發。2024年&#xff0c;智能體&#xff08;Agent&#xff09;接棒成為AI新焦點。2025年&#xff0c;智能體似乎已經要開始爆發了。目前的智能體更像一個“單機App”&#xff1a;彼此不了解、無法通信&#xff0c;更不能協作。類似互聯網早期…

交換機工作原理(MAC地址表、VLAN)

目錄 一、交換機的基本工作原理 數據幀的轉發 MAC地址表的作用 交換機的轉發方式 二、VLAN&#xff08;虛擬局域網&#xff09; VLAN的定義 VLAN的作用 VLAN的實現方式 VLAN的幀標記 VLAN的通信 三、交換機與VLAN的結合 四、交換機與VLAN的實際應用場景 交換機是局…

eFish-SBC-RK3576工控板外部RTC測試操作指南

備注&#xff1a; 1&#xff09;測試時一定要接電池&#xff0c;否則外部RTC斷電后無法工作導致測試失敗&#xff1b; 2&#xff09;如果連接了網絡&#xff0c;系統會自動同步NTP時鐘&#xff0c;所以需要關閉自動同步時鐘。 關閉自動同步NTP時鐘方法&#xff1a; 先查看是…

淘寶按圖搜索商品(拍立淘)Java 爬蟲實戰指南

在電商領域&#xff0c;按圖搜索商品功能為用戶提供了更直觀、便捷的購物體驗。淘寶的拍立淘功能更是憑借其強大的圖像識別技術&#xff0c;成為許多開發者和商家關注的焦點。本文將詳細介紹如何利用 Java 爬蟲技術實現淘寶按圖搜索商品功能&#xff0c;包括注冊賬號、上傳圖片…

【Redis】List類型

文章目錄 List的特點介紹lpush&#xff0c;lpushx&#xff0c;rpush&#xff0c;rpushx命令lrange命令lpop和rpoplindex命令linsert命令llen命令lrem 命令ltrim命令lset命令阻塞版本的命令blpop和brpop 命令小結list的內部編碼List的應用場景 List的特點介紹 列表相當于一個數…

QT:qt5調用打開exe程序并獲取調用按鈕控件實例2025.5.7

為實現在 VS2015 的 Qt 開發環境下打開外部 exe&#xff0c;列出其界面按鈕控件的序號與文本名&#xff0c;然后點擊包含特定文本的按鈕控件。以下是更新后的代碼&#xff1a; #include <QCoreApplication> #include <QProcess> #include <QDebug> #include…

基于Jenkins的DevOps工程實踐之Jenkins共享庫

文章目錄 前言Jenkins共享庫結構1、共享庫演示2、知識點補充3、實踐使用共享庫格式化輸出日志4、groovy基礎語法4.1、 什么是 Groovy&#xff1f;4.2、groovy特點4.3、運行方法4.4、標識符4.5、基本數據類型4.5.1、string類型4.5.2、list類型 4.6、函數使用4.7、正則表達式 5、…

【Qt4】Qt4中實現PDF預覽

方案一&#xff1a; 在Qt4中預覽PDF文件&#xff0c;你可以使用多種方法&#xff0c;但最常見和簡單的方法之一是使用第三方庫。Qt本身并沒有內置直接支持PDF預覽的功能&#xff0c;但你可以通過集成如Poppler、MuPDF等庫來實現這一功能。下面我將展示如何使用Poppler庫在Qt4中…

php artisan resetPass 執行密碼重置失敗的原因?php artisan resetPass是什么 如何使用?-優雅草卓伊凡

php artisan resetPass 執行密碼重置失敗的原因&#xff1f;php artisan resetPass是什么 如何使用&#xff1f;-優雅草卓伊凡 可能的原因 命令不存在&#xff1a;如果你沒有正確定義這個命令&#xff0c;Laravel 會報錯而不是提示”重置密碼失敗”用戶不存在&#xff1a;’a…

ai說什么是注解,并以angular ts為例

在編程中&#xff0c;注解&#xff08;Annotation&#xff09; 是一種特殊的語法結構&#xff0c;用于為代碼添加元數據&#xff08;metadata&#xff09;&#xff0c;從而在不修改代碼邏輯的情況下&#xff0c;提供額外的信息或指示編譯器、框架、工具如何處理這些代碼。注解通…

【MySQL】-- 聯合查詢

文章目錄 1. 簡介1.1 為什么要使用聯合查詢1.2 多表聯合查詢時MySQL內部是如何進行計算的 2. 內連接2.1 語法2.2 示例 3. 外連接3.1 語法3.2 示例 4. 自連接4.1 應用場景4.2 示例4.3 表連接練習 5. 子查詢5.1 語法5.2 單行子查詢5.3 多行子查詢5.4 多列子查詢5.5 在from 子句中…

【多線程】六、基于阻塞隊列的生產者消費者模型

文章目錄 Ⅰ. 生產者消費者模型的概念Ⅱ. 生產者消費者模型的優點Ⅲ. 基于阻塞隊列的生產者消費者模型MakefileBlock_queue.hpptask.hpptest.cpp Ⅳ. 如何理解提高了效率??? Ⅰ. 生產者消費者模型的概念 ? 生產者消費者模型是一種常見的并發模式&#xff0c;用于解決生產者…

【Vue】全局事件總線 TodoList 事件總線

目錄 一、 實現所有組件看到x事件 二、 實現$on $off 以及 $emit 總結不易~ 本章節對我有很大的收獲&#xff0c; 希望對你也是&#xff01;&#xff01;&#xff01; 本節素材已上傳至Gitee&#xff1a;yihaohhh/我愛Vue - Gitee.com 全局事件總線圖&#xff1a; 本節素材…

Python編程virtualenv庫的簡介和使用方法

Python編程virtualenv庫的簡介和使用方法 virtualenv和conda的區別是什么

MySQL的行級鎖鎖的到底是什么?

大家好&#xff0c;我是鋒哥。今天分享關于【MySQL的行級鎖鎖的到底是什么?】面試題。希望對大家有幫助&#xff1b; MySQL的行級鎖鎖的到底是什么? 1000道 互聯網大廠Java工程師 精選面試題-Java資源分享網 MySQL的行級鎖是數據庫管理系統&#xff08;DBMS&#xff09;的一…

【C++游戲引擎開發】第33篇:物理引擎(Bullet)—射線檢測

一、射線檢測核心理論體系 1.1 射線檢測的數學基礎 1.1.1 參數化射線方程 射線在三維空間中的數學表達采用參數方程: r ( t ) = o + t d ^ ( t ∈ [

【操作系統】線程崩潰機制詳解

在分布式系統與多線程編程的世界里&#xff0c;一個看似簡單的問題卻暗藏玄機&#xff1a;當某條線程突然崩潰&#xff0c;其所屬進程會隨之消亡嗎&#xff1f;這個問題背后隱藏著操作系統與編程語言的精妙設計&#xff0c;本文將從底層原理到工程實踐層層剖析。 一、線程崩潰…

無人機 | 無人機設計概述

無人機設計是一個復雜的系統工程&#xff0c;涉及空氣動力學、電子技術、材料科學、控制算法等多個領域的綜合應用。以下是無人機設計的主要模塊和關鍵要素概述&#xff1a; 一、總體設計目標 任務需求定義 用途&#xff1a;航拍、物流、農業、軍事偵察、環境監測等性能指標&am…

強啊!Oracle Database 23aiOracle Database 23ai:使用列別名進行分組排序!

大家好&#xff0c;這里是架構資源棧&#xff01;點擊上方關注&#xff0c;添加“星標”&#xff0c;一起學習大廠前沿架構&#xff01; 從 Oracle Database 23ai 開始&#xff0c;您可以在 GROUP BY 和 HAVING 子句中直接使用列別名。此功能在早期版本的 Oracle Database 中不…

Modbus 轉 IEC61850 網關

第一章 產品概述 Modbus 轉 IEC61850 網關型號 SG-IEC61850-Modbus &#xff0c;是三格電子推出的工業級網關&#xff08;以 下簡稱盒子或網關&#xff09;&#xff0c;主要用于 Modbus RTU/TCP 數據采集、 DLT645-1997/2007 數據采集&#xff0c; 可接多功能電力儀表…