【MacOS】M3 Pro芯片MacBook極速搭建Kubernetes

M3 Pro 芯片 MacBook 2023上使用 Colima 安裝 Kubernetes。

Colima 輕量、高效,并且在 Apple Silicon 架構上表現出色。

下面是詳細的、一步一步的安裝和配置指南。


核心思路

我們將通過以下步驟完成整個過程:

  1. 準備工作: 安裝必要的工具,主要是 Homebrew。
  2. 安裝核心軟件: 使用 Homebrew 安裝 Colima, Docker 客戶端, 和 kubectl
  3. 啟動并配置 Colima: 啟動 Colima 虛擬機,并特別指定啟用 Kubernetes (K3s)。
  4. 驗證安裝: 確認 Kubernetes 集群是否正常運行。
  5. 部署示例應用: 部署一個簡單的 Nginx 應用來測試整個流程。

第一步:準備工作 (安裝 Homebrew)

Homebrew 是 macOS 上最流行的包管理器。如果你的電腦上還沒有安裝,請先安裝它。

打開你的“終端” (Terminal) 應用,粘貼并執行以下命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安裝過程中會提示你輸入電腦密碼,并按回車鍵確認。安裝完成后,根據終端的提示,將 Homebrew 的路徑添加到你的 Shell 配置文件中(通常是 ~/.zshrc)。

第二步:安裝 Colima, Docker 和 kubectl

現在,我們使用 Homebrew 來安裝所有需要的工具。

  1. 安裝 Colima: Colima 是核心,它會創建并管理用于運行容器的虛擬機。
  2. 安裝 Docker 客戶端: Colima 在其虛擬機內部運行 Docker 守護進程,我們需要在 macOS 上安裝 Docker 客戶端來與它交互。注意:這不會安裝龐大的 Docker Desktop 應用。
  3. 安裝 kubectl: 這是與 Kubernetes 集群交互的命令行工具。

在終端中執行以下命令:

brew install colima docker kubectl

等待所有工具安裝完成。

第三步:啟動 Colima 并啟用 Kubernetes

這是最關鍵的一步。我們將啟動 Colima,并告訴它我們需要一個 Kubernetes 集群。Colima 默認會使用輕量級的 K3s 來搭建集群。

對于 M3 Pro 芯片,我們可以分配更多的資源以獲得更好的性能。

在終端中執行以下命令:

colima start --cpu 4 --memory 8 --arch aarch64 --kubernetes

讓我們分解一下這個命令:

  • colima start: 啟動 Colima 虛擬機。
  • --cpu 4: 分配 4 個 CPU核心給虛擬機。M3 Pro 性能很強,4-6 核是比較合適的選擇。
  • --memory 8: 分配 8 GB 內存給虛擬機。對于運行 Kubernetes 和一些應用,8GB 是一個很好的起點。
  • --arch aarch64: 非常重要! 這個參數明確告訴 Colima 使用 ARM64 架構,這與你的 M3 Pro 芯片原生匹配,可以獲得最佳性能。
  • --kubernetes: 核心參數! 這個標志告訴 Colima 在啟動時自動安裝并配置一個 K3s Kubernetes 集群。

注意: 第一次啟動時,Colima 需要下載虛擬機鏡像,這個過程可能會花費幾分鐘,請耐心等待。

啟動成功后,Colima 會自動配置 kubectl,使其指向新創建的集群。

第四步:驗證安裝

現在,讓我們來驗證一下所有組件是否都正常工作了。

  1. 檢查 Colima 狀態:

    colima status
    

    你應該能看到 colima 實例正在運行 (running)。

  2. 檢查 Docker 是否連接:

    docker ps
    

    如果能成功執行并顯示一個空的容器列表(表頭),說明 Docker 客戶端已經正確連接到 Colima 虛擬機中的 Docker 服務。

  3. 檢查 Kubernetes 集群狀態:
    這是最重要的驗證。

    kubectl cluster-info
    

    你應該能看到 Kubernetes master 和 CoreDNS 的地址,表明 kubectl 已經成功連接到集群。

  4. 檢查 Kubernetes 節點:

    kubectl get nodes
    

    你應該能看到一個名為 colima 的節點,并且其狀態(STATUS)為 Ready

    NAME     STATUS   ROLES                  AGE   VERSION
    colima   Ready    control-plane,master   5m    v1.28.x+k3s1
    

    (版本號可能會有所不同)

至此,你的 Kubernetes 開發環境已經成功搭建!

第五步:(可選) 部署一個示例應用

為了確保一切都能正常工作,讓我們部署一個簡單的 Nginx Web 服務器。

  1. 創建 Nginx Deployment:
    這個命令會創建一個 Deployment,并拉取 Nginx 鏡像來運行一個 Pod。

    kubectl create deployment nginx --image=nginx
    
  2. 暴露 Nginx 服務:
    為了能從你的 Mac 上訪問這個 Nginx 服務,我們需要將它暴露出來。我們使用 NodePort 類型來創建一個簡單的端口映射。

    kubectl expose deployment nginx --port=80 --type=NodePort
    
  3. 查找訪問端口:
    執行以下命令查看服務信息,找到映射到你本機的端口。

    kubectl get service nginx
    

    你會看到類似下面的輸出:

    NAME    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
    nginx   NodePort   10.43.151.123   <none>        80:31234/TCP   2m
    

    注意 PORT(S) 這一列,80:31234/TCP 表示集群內部的 80 端口被映射到了節點的 31234 端口。

  4. 訪問 Nginx:
    由于 Colima 將虛擬機的端口轉發到了你的 Mac 本機 (localhost),你可以直接通過 localhost 和上一步找到的端口(在這個例子中是 31234)來訪問。

    打開瀏覽器,訪問 http://localhost:31234,或者在終端中使用 curl:

    curl http://localhost:31234
    

    如果看到 “Welcome to nginx!” 的 HTML 頁面,恭喜你,整個流程都通了!

常用 Colima 命令

  • 停止環境 (會保留虛擬機狀態,下次啟動快):
    colima stop
    
  • 再次啟動環境:
    colima start
    
  • 徹底刪除環境 (會刪除虛擬機和所有數據,下次需要重新 colima start ...):
    colima delete
    
  • 查看所有 Colima 實例:
    colima list
    

你現在已經擁有一個在 M3 Pro MacBook 上運行的、原生的、高性能的 Kubernetes 本地開發環境了。

解決異常

colima status
FATA[0000] error retrieving current runtime: empty value

kubectl get nodes
NAME STATUS ROLES AGE VERSION
colima Ready control-plane,master 6m24s v1.31.2+k3s1

  1. kubectl get nodes 成功了。這說明你的 Kubernetes (K3s) 集群實際上正在后臺正常運行kubectl 工具能夠成功連接到它,并獲取節點信息。這是個好消息!
  2. colima status 失敗了。錯誤信息 FATA[0000] error retrieving current runtime: empty value 表明,colima 這個命令行工具本身無法找到或識別它應該管理的那個正在運行的虛擬機。

結論: 你的 Kubernetes 環境是好的,但是管理這個環境的 Colima 工具“失憶了”或它的狀態文件損壞了。這就像你的汽車引擎在運轉,但你手里的車鑰匙失靈了,無法控制汽車。

為什么會發生這種情況?

這通常發生在以下幾種情況:

  • Colima 的后臺進程被意外終止(例如,強制退出終端或系統異常關機)。
  • Colima 的配置文件 (~/.colima/) 出現了輕微的損壞或不一致。
  • Colima 版本更新后可能出現的罕見 bug。

如何修復?

我們有兩種方案,從最簡單、最無損的開始。


方案一:嘗試重新連接和恢復(首選)

這個方案的目標是讓 colima CLI 重新“認識”那個已經在運行的虛擬機,而不需要銷毀你的 Kubernetes 集群。

  1. 嘗試再次執行 start 命令
    colima start 命令是冪等的(idempotent),意思是如果它發現一個同名的實例已經在運行,它不會重新創建一個,而是會嘗試連接到現有的實例并修復上下文。

    在終端里執行:

    colima start
    
    • 如果成功:它可能會輸出一些信息,然后告訴你實例已經在運行。之后,再試一次 colima status

      colima status
      

      如果這次能正確顯示出 INFO[0000] colima is running 以及 CPU、內存等信息,那么問題就解決了!你的 kubectl 會繼續無縫工作。

    • 如果失敗colima start 可能還是會報錯,或者卡住。如果這樣,請繼續方案二。


方案二:徹底重置 Colima 環境(保證解決問題)

如果方案一無效,那么最可靠的方法就是徹底刪除當前的 Colima 環境并重新創建一個。

警告: 這個操作會刪除當前 Kubernetes 集群里部署的所有應用和數據。但由于你剛開始安裝,這應該不是問題。

  1. 停止并刪除 Colima 實例
    由于 colima status 失效,colima stop 可能也無法工作。我們可以直接用 delete 命令。這個命令更強大,會清理得更干凈。

    colima delete
    

    這個命令會嘗試停止并刪除虛擬機及其所有相關配置。

  2. (如果上一步失敗)手動清理
    如果 colima delete 也因為同樣的原因報錯,我們就需要手動清理。首先,找到并停止底層的 QEMU 進程。

    # 查找正在運行的 colima qemu 進程
    ps aux | grep 'qemu-system-aarch64.*colima'# 你會看到一行類似...
    # your_user  12345   0.0  0.0  ... qemu-system-aarch64 ... -name colima ...# 使用 kill 命令停止它,把 12345 換成你看到的進程ID (PID)
    kill 12345
    

    然后,徹底刪除 Colima 的配置目錄:

    rm -rf ~/.colima
    

    注意: 這個 rm -rf 命令會刪除所有 Colima 的配置,請確保你沒有其他重要的 Colima 配置文件。

  3. 重新創建環境
    現在,你的系統已經回到了安裝 Colima 之前的干凈狀態。我們只需重新執行最初的啟動命令即可。

    colima start --cpu 4 --memory 8 --arch aarch64 --kubernetes
    

    這將創建一個全新的、健康的環境。等待它完成。

  4. 最后驗證
    創建完成后,再次進行驗證:

    colima status
    kubectl get nodes
    

    這一次,兩個命令應該都能成功返回正確的信息。

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

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

相關文章

import { Add, Dongdong, UserAdd } from ‘@nutui/icons-react‘ 使用圖標導入庫報錯

import { Add } from "nutui/icons-react-taro"; 官網的導入的庫名字不全&#xff0c;后面要加-taro&#xff0c;就行了

猿人學js逆向比賽第一屆第七題

分析響應 看到響應體里面的data是個字體加密&#xff0c;于是這里可以看到woff文件也給返回了&#xff0c;這里現分析這個文件。 打開可以看到這里a351對應的是3和頁面中的3是對應的&#xff0c;于是用ddddocr動態識別字體文件中的字體&#xff0c;然后對應對應的字體替換是不…

股票心理學習篇:交易的人性弱點 - 頻繁交易

以下內容為學習時的筆記整理&#xff0c;視頻作者來自B站&#xff1a;老貓與指標 視頻鏈接&#xff1a;頻繁交易必死&#xff1f;底層邏輯深度剖析&#xff0c;老貓的的破局心法與實戰策略分享 交易的人性弱點 - 頻繁交易 主講人&#xff1a; 老貓 1. 引言&#xff1a;問題的…

WPF入門 #1 WPF布局基礎、WPF樣式基礎、WPF數據模板、WPF綁定

WPF當中有許多的布局容器控件&#xff0c;例如<Grid>、<StackPanel>、<WrapPanel>、<DockPanel>、<UniformGrid>。接下來分別介紹一下各個布局容器控件。 布局基礎 Grid <Grid><Grid.RowDefinitions><RowDefinition Height&qu…

開源大型語言模型的文本記憶新突破!

在現代科技的推動下&#xff0c;人工智能領域正在不斷地突破人類認知的極限。今年&#xff0c;由斯坦福大學、康奈爾大學和西弗吉尼亞大學的計算機科學家們&#xff0c;與法律學者共同展開了一項引人入勝的研究&#xff0c;聚焦于開源大型語言模型的文本記憶表現。這項研究不僅…

LeetCode 3090.每個字符最多出現兩次的最長子字符串

題目鏈接 https://leetcode.cn/problems/maximum-length-substring-with-two-occurrences/ 題目描述 給定一個字符串 s&#xff0c;找出滿足每個字符最多出現兩次的最長子字符串&#xff0c;并返回其長度。 示例 輸入&#xff1a;s "aabba" 輸出&#xff1a;5解…

使用開源NVIDIA cuOpt加速決策優化

使用開源NVIDIA cuOpt加速決策優化 文章目錄 使用開源NVIDIA cuOpt加速決策優化決策優化的現實挑戰供應鏈優化的復雜性實時決策的挑戰計算復雜性的挑戰 NVIDIA cuOpt&#xff1a;GPU加速的決策優化解決方案cuOpt的核心技術架構支持的優化問題類型性能優勢分析 實際應用案例&…

【JVM 09-垃圾回收】

垃圾回收 筆記記錄 1. 如何判斷對象可以回收1.1 引用計數法1.1.1 缺點 1.2 可達性分析算法1.2.1 可達分析、根對象1.2.2 優缺點 1.3 四種引用(強軟弱虛)1.3.1 軟引用的實際使用案例1.3.2 軟引用-引用隊列1.3.3 弱引用的實際使用案例 2. 垃圾回收算法2.1 標記清除算法2.2 標記整…

《二叉搜索樹》

引言&#xff1a; 上次我們結束了類和對象的收尾&#xff0c;之后我們就要學習一些高級的數據結構&#xff0c;今天我們先來看一個數據結構-- 二叉搜索樹。 一&#xff1a; 二叉搜索樹的概念(性質) 二叉搜索樹又稱二叉排序樹&#xff0c;它或者是一棵空樹&#xff0c;或者是…

【Redis】Sentinel哨兵

&#x1f6e1;? 深入理解 Redis Sentinel&#xff1a;高可用架構的守護者 在實際開發中&#xff0c;我們常用 Redis 構建緩存系統或數據中間件。然而&#xff0c;主從復制雖然能實現數據同步&#xff0c;但無法自動故障轉移&#xff08;failover&#xff09;&#xff0c;這就…

Shell腳本應用及實戰演練

文章目錄 一、Shell腳本語言的基本結構1、Shell腳本的用途&#xff1a;2、 Shell腳本基本結構&#xff1a;3、 創建Shell腳本過程4、 腳本注釋規范 二、Shell腳本語言的變量用法詳解位置與預定義變量 三、 Shell字符串詳解1、Shell字符串拼接2、Shell字符串截取3、 Shell的格式…

軟件工程瀑布模型學習指南

軟件工程瀑布模型學習指南 一、瀑布模型核心概念 1.1 定義與特點 瀑布模型是一種經典的軟件開發流程,將項目劃分為順序性的階段,每個階段有明確的輸入和輸出,如同瀑布流水般單向推進。其特點包括: 階段間具有明確的順序性和依賴性強調文檔驅動和階段評審適合需求明確、穩…

獲取gitlab上項目分支版本(二)

獲取gitlab上項目分支版本_gitlab代碼分支版本在哪-CSDN博客 原先寫過一版&#xff0c;但是這次想更新一下項目的分支信息時&#xff0c;提示我 git服務器上的Python版本是2.7.3&#xff0c;這個錯誤表明當前Python環境中沒有安裝requests庫&#xff0c;服務器也沒有連接外網&…

主流防火墻策略繞過漏洞的修復方案與加固實踐

主流防火墻策略繞過漏洞的修復方案與加固實踐 流量關鍵點分析&#xff08;攻擊手法&#xff09; 攻擊者通過精心構造的TCP序列號攻擊和惡意標志組合繞過防火墻DPI檢測&#xff0c;核心手法如下&#xff1a; TCP連接建立&#xff08;正常握手&#xff09; 1049&#xff1a;客戶…

泛微OAe9-后端二開常見數據庫操作

泛微OAe9-后端二開常見數據庫操作 文章目錄 泛微OAe9-后端二開常見數據庫操作一、RecordSet1 RecordSet 操作OA本身的表2 RecordSet 操作OA 本身的存儲過程 二、RecordSetTrans三、RecordSetDataSource四、原生 jdbc 一、RecordSet RecordSet 適用于操作 OA 自己的庫。OA 數據庫…

【數據分析八:hypothesis testing】假設檢驗

本節我們講述假設檢驗和抽樣方法 有關假設檢驗的詳細內容&#xff0c;可以參考我以往的博客 概率論與數理統計總復習_概率論與數理統計復習-CSDN博客文章瀏覽閱讀1.5k次&#xff0c;點贊33次&#xff0c;收藏23次。中科大使用的教輔《概率論和數理統計》&#xff0c;帶大家復…

AI免費工具:promptpilot、今天學點啥、中英文翻譯

promptpilot 激發模型潛能&#xff0c;輕松優化 Prompt https://promptpilot.volcengine.com/startup 今天學點啥 https://metaso.cn/study 能生成網頁和語音播報 中英文翻譯 沉浸式翻譯&#xff0c;瀏覽器插件&#xff0c;ai翻譯

計算機網絡學習筆記:TCP三報文握手、四報文揮手

文章目錄 前言一、TCP三報文握手二、TCP四報文揮手三、TCP保活計時器 前言 TCP通信&#xff0c;通常需要經歷三個階段&#xff1a;三報文握手->發送&#xff0c;接收數據->四報文揮手。 一、TCP三報文握手 三報文握手處于TCP的連接建立階段&#xff0c;主要解決了以下的…

kafka部署和基本操作

一、部署kafka 解壓 tar xzvf kafka_2.12-3.9.1.tgz tar -zxf kafka_2.12-3.9.1.tgz 1.修改config/server.properties # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # …

Bootstrap 5學習教程,從入門到精通,Bootstrap 5 導航語法知識點及案例代碼(17)

Bootstrap 5 導航語法知識點及案例代碼 Bootstrap 5 提供了強大的導航組件&#xff0c;幫助開發者快速構建響應式且美觀的導航欄。 一、Bootstrap 5 導航組件概述 Bootstrap 5 提供了多種導航組件&#xff0c;主要包括&#xff1a; 導航欄&#xff08;Navbar&#xff09;&am…