Ubuntu 22.04.5 LTS 基于 kubesphere 安裝 cube studio

Ubuntu 22.04.5 LTS 基于 kubesphere 安裝 cube studio

前置條件 已經成功安裝 kubesphere v4.3.1

參考教程:?https://github.com/data-infra/cube-studio/wiki/%E5%9C%A8-kubesphere-%E4%B8%8A%E6%90%AD%E5%BB%BA-cube-studio

1. 安裝基礎依賴

# ubuntu安裝基礎依賴
apt install -y socat conntrack ebtables ipset ipvsadm

2.?服務nodeport可用端口范圍要放大到10~60000

vi /etc/kubernetes/manifests/kube-apiserver.yaml修改添加apiserver配置spec:containers:- command:- kube-apiserver- --service-node-port-range=1-65535      # 添加這一行- --advertise-address=172.16.0.17修改后,通過reboot命令重啟機器

3.?如果使用containerd運行時,替換腳本中的docker命令

如果知道是否為containerd運行時, 通過命令?kubectl get nodes 看到節點?kubectl describe node node1 | grep "Container Runtime" , 輸出:?Container Runtime Version: ? ? containerd://1.7.27

# 替換拉取文件中的拉取命令
cd install/kubernetes/
sed -i 's/^docker/crictl/g' pull_images.sh

4.??對于kubekey部署的ipvs模式的k8s

通過如下命令可以檢查是否為ipvs模式的k8s

kubectl get configmap -n kube-system kube-proxy -o yaml | grep mode

輸出:??mode: ipvs

(1)要將install/kubernetes/start.sh 以及 start-with-kubesphere.sh 腳本最后面的kubectl patch svc istio-ingressgateway -n istio-system -p '{"spec":{"externalIPs":["'"$1"'"]}}'注釋掉。取消注釋代碼kubectl patch svc istio-ingressgateway -n istio-system -p '{"spec":{"type":"NodePort"}}'

(2)將配置文件install/kubernetes/cube/overlays/config/config.py中的 CONTAINER_CLI的值 改為 nerdctl,K8S_NETWORK_MODE的值 改為ipvs

其中安裝 nerdctl??nerdctl-2.0.4-linux-amd64.tar.gz

下載地址:?https://github.com/containerd/nerdctl/releases

解壓到 /usr/local/bin 目錄

tar zxvf nerdctl-2.0.4-linux-amd64.tar.gz -C /usr/local/bin nerdctl

5. 將k8s集群的kubeconfig文件(默認位置:~/.kube/config)復制到install/kubernetes/config文件中,然后執行下面的部署命令,其中xx.xx.xx.xx為機器內網的ip(不是外網ip)

解釋? (單機版本)

# 在k8s worker機器上執行如果只部署了k8s,沒有部署kubesphere,執行
sh start.sh xx.xx.xx.xx如果部署了k8s 同時部署了kubesphere,執行
sh start-with-kubesphere.sh xx.xx.xx.xx

由于我是單機版本的, 所以注釋掉 start.sh 下面的腳本, 不需要重新下載

#mkdir -p ~/.kube && rm -rf ~/.kube/config && cp config ~/.kube/config#ARCH=$(uname -m)#if [ "$ARCH" = "x86_64" ]; then
# ?wget https://cube-studio.oss-cn-hangzhou.aliyuncs.com/install/kubectl && chmod +x kubectl ?&& cp kubectl /usr/bin/ && mv kubectl /usr/local/bin/
#elif [ "$ARCH" = "aarch64" ]; then
# ?wget -O kubectl https://cube-studio.oss-cn-hangzhou.aliyuncs.com/install/kubectl-arm64 && chmod +x kubectl ?&& cp kubectl /usr/bin/ && mv kubectl /usr/local/bin/
#fi

6.??kubectl拿version時, 由于1.28版本高的原因問題會報錯

version=`kubectl version --short | awk '/Server Version:/ {print $3}'`修改成version=`kubectl version | awk '/Server Version:/ {print $3}'`

按第5步執行, 由于腳本中沒有處理權限問題, 實際上應該使用root運行, 因為創建 /data目錄, 根本沒有考慮到其它用戶的問題, 所以在上述第五步, 把沒辦法要腳本注釋掉, 因為是當機版本, 如果是別的機器部署, 可以保持不動

由于我是安裝了kubesphere的, 所以我運行如下腳本執行安裝

如果部署了k8s 同時部署了kubesphere,執行cd /data1/cube-studio/install/kubernetes  這是我下載 cube-studio的對應目錄sh start.sh 10.33.34.166不要嘗試使用 start-with-kubesphere.sh , 容易出現istio啟不來的情況, 因為缺少了一些服務的安裝, 不過使用start.sh啟動也一樣遇到istio無法使用的問題

部署成功后會顯示如下消息

通過kubesphere查看也是沒有錯的

但是發現

2025-04-30T16:55:35.867847176+08:00 This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kubeflow`.`etl_pipeline`, CONSTRAINT `etl_pipeline_ibfk_1` FOREIGN KEY (`changed_by_fk`) REFERENCES `ab_user` (`id`))')
2025-04-30T16:55:35.867852596+08:00 [SQL: INSERT INTO etl_pipeline (created_on, changed_on, name, `describe`, project_id, workflow, dag_json, config, expand, created_by_fk, changed_by_fk) VALUES (%(created_on)s, %(changed_on)s, %(name)s, %(describe)s, %(project_id)s, %(workflow)s, %(dag_json)s, %(config)s, %(expand)s, %(created_by_fk)s, %(changed_by_fk)s)]
2025-04-30T16:55:35.867858045+08:00 [parameters: {'created_on': datetime.datetime(2025, 4, 30, 16, 55, 33, 497374), 'changed_on': datetime.datetime(2025, 4, 30, 16, 55, 33, 497402), 'name': 'dau', 'describe': 'dau計算', 'project_id': 1, 'workflow': 'airflow', 'dag_json': '{\n    "cos導入hdfs-1686184253953": {\n        "label": "數據導入",\n        "location": [\n            304,\n            96\n        ],\n        "color":  ... (7480 characters truncated) ... \n            "label": "數據導出"\n        },\n        "upstream": [\n            "hive出庫至hdfs-1686184293917"\n        ],\n        "task_id": 7\n    }\n}', 'config': '{\n    "alert_user": "admin"\n}', 'expand': '[]', 'created_by_fk': 1, 'changed_by_fk': 1}]
2025-04-30T16:55:35.867863640+08:00 (Background on this error at: https://sqlalche.me/e/14/gkpj) (Background on this error at: https://sqlalche.me/e/14/7s2a)
2025-04-30T16:55:35.867869011+08:00 begin add notebook
2025-04-30T16:55:35.867874369+08:00 This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`kubeflow`.`etl_pipeline`, CONSTRAINT `etl_pipeline_ibfk_1` FOREIGN KEY (`changed_by_fk`) REFERENCES `ab_user` (`id`))')
2025-04-30T16:55:35.867879533+08:00 [SQL: INSERT INTO etl_pipeline (created_on, changed_on, name, `describe`, project_id, workflow, dag_json, config, expand, created_by_fk, changed_by_fk) VALUES (%(created_on)s, %(changed_on)s, %(name)s, %(describe)s, %(project_id)s, %(workflow)s, %(dag_json)s, %(config)s, %(expand)s, %(created_by_fk)s, %(changed_by_fk)s)]
2025-04-30T16:55:35.867903881+08:00 [parameters: {'created_on': datetime.datetime(2025, 4, 30, 16, 55, 33, 497374), 'changed_on': datetime.datetime(2025, 4, 30, 16, 55, 33, 497402), 'name': 'dau', 'describe': 'dau計算', 'project_id': 1, 'workflow': 'airflow', 'dag_json': '{\n    "cos導入hdfs-1686184253953": {\n        "label": "數據導入",\n        "location": [\n            304,\n            96\n        ],\n        "color":  ... (7480 characters truncated) ... \n            "label": "數據導出"\n        },\n        "upstream": [\n            "hive出庫至hdfs-1686184293917"\n        ],\n        "task_id": 7\n    }\n}', 'config': '{\n    "alert_user": "admin"\n}', 'expand': '[]', 'created_by_fk': 1, 'changed_by_fk': 1}]
2025-04-30T16:55:35.867916345+08:00 (Background on this error at: https://sqlalche.me/e/14/gkpj) (Background on this error at: https://sqlalche.me/e/14/7s2a)解決辦法: 如果可以刪除/data/k8s/infra/mysql的話。就把這個刪了,然后重啟mysql和kubeflow-dashboard

另外遇到?prometheus沒啟成功 的問題, 報錯

openebs.io/local_openebs-localpv-provisioner-7bf6f464c-c6j58_77b994b8-de73-4b58-8d29-e0fc8d194a38 ?failed to provision volume with StorageClass "local": claim.Spec.Selector is not supported

解決辦法:?kubectl edit prometheus k8s -n monitoring 將??selector 那一段刪掉 , 然后由于使用?openebs.io/local 記得將?ReadWriteMany 改成?ReadWriteOnce 否則報錯?openebs.io/local_openebs-localpv-provisioner-7bf6f464c-c6j58_77b994b8-de73-4b58-8d29-e0fc8d194a38 ?failed to provision volume with StorageClass "local": Only support ReadWriteOnce access mode

就算是這樣, 重啟也會失敗,需要到存儲那邊把 待綁定的pvc刪除掉, 系統會自動創建.

總結一下: 最終還是沒有用起來istio, 看著是啟動了, 但是訪問不了. 解決辦法是手工放開?kubeflow-dashboard-frontend 的服務進行訪問 , 但這樣的方式還是不行的, 里面的應用無法跳轉, 還是要解決istio的問題

最終發現 gateway沒有創建成功報錯了?

Error from server: error when creating "gateway.yaml": admission webhook "validation.istio.io" denied the request: configuration is invalid: port name must be set: number:80 ?protocol:"HTTP"
Error from server: error when creating "gateway.yaml": admission webhook "validation.istio.io" denied the request: configuration is invalid: port name must be set: number:8080 ?protocol:"HTTP"

解決辦法:? 修改gateway.yaml 文件 然后重新部署?kubectl apply -f gateway.yaml

port:
number: 80
name: http # 👈 必須加這一行
protocol: HTTP

port:
number: 8080
name: http-8080 # 👈 必須加 name
protocol: HTTP

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

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

相關文章

centos 7 安裝 java 運行環境

centos 7 安裝 java 運行環境 java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)java -version java version "1.8.0_144" Java(TM) …

Linux系統管理與編程20:Apache

蘭生幽谷,不為莫服而不芳; 君子行義,不為莫知而止休。 做好網絡和yum配置,用前面dns規劃的www的IP進行。 #!/bin/bash #----------------------------------------------------------- # File Name: myWeb.sh # Version: 1.0 # …

.NET 在鴻蒙系統上的適配現狀

目錄 .NET 在鴻蒙系統上的適配現狀 鴻蒙系統對虛擬機的限制與.NET的適配挑戰 NativeAOT 在鴻蒙系統中的適配原理與實現方式 已知問題與解決方案:鴻蒙系統中的 syscall 限制 鴻蒙系統適配中的技術難點與解決方案 跨平臺編譯的挑戰與應對策略 依賴庫管理與兼容…

kotlin JvmName注解的作用和用途

1. JvmName 注解的作用 JvmName 是 Kotlin 提供的一個注解,用于在編譯為 Java 字節碼時自定義生成的類名或方法名。 作用對象: 文件級別(整個 .kt 文件)函數、屬性、類等成員 主要用途: 控制 Kotlin 編譯后生成的 JV…

樹莓派4 yolo 11l.pt性能優化后的版本

樹莓派4 使用 Picamera2 拍攝圖像,然后通過 YOLO11l.pt 進行目標檢測,并在實時視頻流中顯示結果。但當前的代碼在運行時可能會比較卡頓,主要原因包括: picam2.capture_array() 是一個較慢的操作;YOLO 推理可能耗時較長…

Docker私有倉庫實戰:官方registry鏡像實戰應用

抱歉抱歉,離職后反而更忙了,拖了好久,從4月拖到現在,在學習企業級方案Harbor之前,我們先學習下官方方案registry,話不多說,詳情見下文。 注意:下文省略了基本認證 TLS加密&#xff…

MySQL 安全架構:從滲透測試到合規審計

MySQL 安全架構:從滲透測試到合規審計 一、數據庫安全的時代挑戰與核心需求 在數據成為企業核心資產的今天,MySQL 面臨的安全威脅日益復雜。據統計,2024 年全球數據庫泄露事件中,關系型數據庫占比高達 68%,其中 MySQ…

【基礎復習筆記】計算機視覺

目錄 一、計算機視覺基礎 1. 卷積神經網絡原理 2. 目標檢測系列 二、算法與模型實現 1. 在PyTorch/TensorFlow中實現自定義損失函數或網絡層的步驟是什么? 2. 如何設計一個輕量級模型用于移動端的人臉識別? 3. 描述使用過的一種注意力機制&#…

Django 項目的 models 目錄中,__init__.py 文件的作用

在 Django 項目的models/init.py文件中,這些導入語句的主要作用是將各個模型類從不同的模塊中導入到models包的命名空間中。這樣做有以下幾個目的: 簡化導入路徑 當你需要在項目的其他地方使用這些模型時,可以直接從models包導入&#xff0c…

實現一個簡單的 TCP 客戶端/服務器

注意: TCP 三次握手建立連接建立連接后,TCP 提供全雙工的通信服務,也就是在同一個連接中,通信雙方 可以在同一時刻同時寫數據,相對的概念叫做半雙工,同一個連接的同一時刻,只能由一方來寫數據T…

專業課復習筆記 9

前言 學爽了。 為什么哈希函數的空間復雜度是 O(N) 我們實際使用的電話號碼的數目是 N &#xff0c;理論上至多有 R 個電話號碼&#xff0c;桶數組 bucket array 的容量是 M &#xff0c;滿足條件 N < M < < R N<M<<R N<M<<R&#xff0c;因為動…

【論文閱讀27】-TCN–BiLSTM -滑坡預測

《A Landslide Displacement Prediction Model Based on the ICEEMDAN Method and the TCN–BiLSTM Combined Neural Network》 發表于 Water 期刊&#xff0c;2023年。 &#x1f4cc; 主要內容概述 這篇論文提出了一種滑坡位移預測模型&#xff0c;結合了&#xff1a; ICEEM…

8b10b編解碼仿真

一、基本概念 8B/10B編碼&#xff08;8-bit to 10-bit encoding&#xff09;是一種將8位數據&#xff08;包括數據字符和控制字符&#xff09;轉換為10位符號&#xff08;Symbol&#xff09;的編碼技術&#xff0c;由IBM工程師Al Widmer和Peter Franaszek于1983年提出。其核心思…

23龍信服務器wp

中規中矩的一套服務器&#xff0c;比較簡單 1.服務器系統的版本號是___。&#xff08;格式&#xff1a;1.1.1111&#xff09; 2.網站數據庫的版本號是___。&#xff08;格式&#xff1a;1.1.1111&#xff09; 3.寶塔面板的“超時”時間是___分鐘。&#xff08;格式&#xff1a;…

Redis 存儲原理與數據模型(三)

目錄 存儲結構 存儲轉換 數據組織 hash 沖突 負載因子 擴容 縮容 漸進式rehash Redis 線程模型 單線程命令處理機制 為什么Redis 命令的單線程快 機制 優化 柔性數組 Redis reactor_io 多線程網絡模型 存儲結構 key-value鍵值對通過 hash 的方式存儲到數組中value 主要…

langchain4j中使用milvus向量數據庫做RAG增加索引

安裝milvus向量數據庫 官方網址 https://milvus.io/zh 使用docker安裝milvus mkdir -p /data/docker/milvus cd /data/docker/milvus wget https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh#在docker中啟動milvus sh standalone_emb…

UE5.3 C++ 房屋管理系統(一)

一.框架思路 1.如何加載。房屋管理&#xff0c;既然管理。就存在動態加載&#xff0c;和靜態加載的考慮。如果是靜態加載&#xff0c;就是在編輯器情況下放置&#xff0c;但這樣方便了擺放&#xff0c;但管理就需要在開始是將所有的房屋找到加到管理者里。你無法決定拖入場景的…

4.1【LLaMA-Factory 實戰】醫療領域大模型:從數據到部署的全流程實踐

【LLaMA-Factory實戰】醫療領域大模型&#xff1a;從數據到部署的全流程實踐 一、引言 在醫療AI領域&#xff0c;構建專業的疾病診斷助手需要解決數據稀缺、知識專業性強、安全合規等多重挑戰。本文基于LLaMA-Factory框架&#xff0c;詳細介紹如何從0到1打造一個垂直領域的醫…

解決LangChain4j報錯HTTP/1.1 header parser received no bytes

問題描述 當使用langchain4j-open-ai調用自己部署的大模型服務時報錯&#xff1a; public static void main(String[] args) {OpenAiChatModel model OpenAiChatModel.builder().apiKey("none").modelName("qwen2.5-instruct").baseUrl("http://19…

阿里云codeup以及本地gitclone+http

cmd命令行亂碼問題、解決 chcp 65001 git代碼提交 git add . git commit -m init git push origin master