[MacOS] [kubernetes] MacOS玩转虚拟化最佳实践

❓ 为什么不在MacOS本机安装呢?因为M系列芯片是Arm架构,与生产环境或者在本地调试时候,安装虚拟镜像和X86不同,造成不必要的切换环境的额外成本,所以在虚拟化的x86调试

步骤 & 详情

一: 安装OrbStack & 并配置Ubuntu(amd64)虚拟环境

二: Ubuntu 环境配置

在这里插入图片描述

2.1 必要配置

# 一. 更新系统apt
sudo apt update && sudo apt upgrade -y
# 二. 安装必要的依赖 (安装了 curl 和 iptables wget 等工具)
sudo apt install -y curl wget iptables  apt-transport-https ca-certificates  gnupg-agent software-properties-common

2.2 安装Docker

# >>>>安装Docker服务
# 添加 Docker 的官方 GPG 密钥:
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 添加 Docker 的存储库:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb\_release -cs) stable"
# 更新软件包索引并安装 Docker Engine:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 安装完成后,启动 Docker 服务:
sudo systemctl start docker
# 验证安装是否成功:
docker --version

# 给当前用户加上docker命令权限 ($USER换成你当前的用户)
sudo usermod -aG docker $USER
# 刷新组权限:
newgrp docker


# >>>>测试docker以及docker&服务&段口号的联通性
# 拉取nginx最新版镜像
sudo docker pull nginx:latest
# 查看本地镜像
sudo docker images
# 运行容器
sudo docker run --name nginx-test -p 80:80 -d nginx
# 查看容器列表
sudo docker container ls
# 停止容器
sudo  docker stop nginx-test
# 启动容器
sudo  docker start nginx-test
# 删除容器
sudo docker rm nginx-test

在这里插入图片描述

三: 安装K3s

# >>>>安装 k3s 的最新版
#运行以下命令安装 K3s (--docker 参数指定使用已安装的 Docker 作为容器运行时。)
curl -sfL https://get.k3s.io | sh -s - --docker
# 安装完成后,K3s 的服务会自动启动。你可以检查 K3s 的状态:
# 如果服务正在运行,你会看到 Active: active (running)。
sudo systemctl status k3s
# 运行以下命令检查 K3s 是否正确安装(会出现go版本和k3s版本):
k3s --version
# 验证节点状态检查当前的 K3s 节点是否正常运行:
# 如果安装成功,你应该会看到该节点的状态为 Ready。
sudo kubectl get nodes
#	3.	验证系统 Pod:(	确认所有核心组件(如 kube-apiserver、kube-dns 等)都在运行。)
sudo kubectl get pods -A





# >>>>配置环境变量,使用kubectl不用在输入sudo
## 1. 设置配置文件的权限,将 /etc/rancher/k3s/k3s.yaml 的权限设置为当前用户可读:
sudo chmod 644 /etc/rancher/k3s/k3s.yaml
## 将当前用户加入可读权限组(可选):
sudo chown $(whoami):$(whoami) /etc/rancher/k3s/k3s.yaml
## 2. 设置环境变量,将 kubectl 默认配置文件指向 K3s 的配置文件路径:
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
## 为了让这个配置永久生效,可以将这行命令添加到 ~/.bashrc 或 ~/.zshrc 文件中(根据你的默认 shell 确定),然后重新加载配置文件:
echo 'export KUBECONFIG=/etc/rancher/k3s/k3s.yaml' >> ~/.bashrc
source ~/.bashrc
# 3. 验证是否生效
kubectl get nodes


# >>>>测试 K3s
# 部署一个简单的应用来验证 K3s 是否工作正常。例如,部署一个 Nginx 应用:
sudo kubectl create deployment nginx --image=nginx
sudo  kubectl expose deployment nginx --type=NodePort --port=80
## 删除测试的服务
# 查看服务的暴露端口 (网页端打开看是否是nginx的面板):
sudo kubectl get svc nginx
# 运行以下命令查看 Nginx 部署和服务:
kubectl get deployment
kubectl get svc

在这里插入图片描述

四: 安装KubeSphere


# 查看k8s版本 (笔者环境是1.30.6 注意版本对应):
sudo kubectl version
cd /usr/local
# 先下载yaml文件
sudo wget https://github.com/kubesphere/ks-installer/releases/download/v3.4.1-patch.0/kubesphere-installer.yaml
sudo wget https://github.com/kubesphere/ks-installer/releases/download/v3.4.1-patch.0/cluster-configuration.yaml

sudo kubectl apply -f kubesphere-installer.yaml
sudo kubectl apply -f cluster-configuration.yaml

# 安装完成后,可运行以下命令查看安装日志:
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

# 如果显示如下信息则安装成功:
#####################################################
###              Welcome to KubeSphere!           ###
#####################################################
# 				.....


# 查看是否安装成功
{server}:30880
# 确保在安全组中打开了 30880 端口,通过 NodePort (IP:30880) 使用默认帐户和密码 (admin/P@88w0rd) 访问 Web 控制台

4.1 安装成功访问控制台

确保在安全组中打开了 30880 端口,通过 NodePort (IP:30880) 使用默认帐户和密码 (admin/P@88w0rd) 访问 Web 控制台

在这里插入图片描述

在这里插入图片描述

  • 开启KubeSphere应用商店服务(可选):

如果没有应用商店 需要在你的安装目录(一般为/usr/local目录下的cluster-configuration.yaml文件中)的配置文件里面开启

# ysml配置项
openpitrix:
  store:
    enabled: true # 将“false”更改为“true”。
    
    
# 上面修改后重新加载生效
sudo kubectl apply -f cluster-configuration.yaml
# 直接访问 `<节点 IP 地址>:30880/apps`查看是否安装成功

在这里插入图片描述

4.2 后续关于玩转KubeSphere资料:

在kubesphere上部署应用

查考资料 & 致谢

[1] Ubuntu22.04安装Docker过程记录

[2] kubesphere官方文档-部署 K3s 和 KubeSphere

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/928552.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL的用户管理和密码管理

用户的密码管理 给用户改密码 初始化mysql后设置初始密码 mysqladmin -uroot password wzy666 改变已有密码 mysqladmin -uroot -pwzy666 password wzy999 SQL语句改&#xff0c;前提是已经进入数据库 alter user rootlocalhost identified by 123456; # 利用数据库服务…

SQLite:DDL(数据定义语言)的基本用法

SQLite&#xff1a;DDL&#xff08;数据定义语言&#xff09;的基本用法 1 主要内容说明2 相关内容说明2.1 创建表格&#xff08;create table&#xff09;2.1.1 SQLite常见的数据类型2.1.1.1 integer&#xff08;整型&#xff09;2.1.1.2 text&#xff08;文本型&#xff09;2…

STM32--基于STM32的智能家居设计与实现

本文详细介绍基于STM32F103C8T6的智能家居设计与实现&#xff0c;详细设计资料见文末链接 一、功能模块介绍 智能家居系统系统图如下所示&#xff0c;主要包括温湿度传感器、OLED液晶显示&#xff0c;WIFI物联网模块、人体红外预警模块、烟雾传感器模块、蜂鸣器模块 &#…

基于Java Springboot校园导航微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse微信开发…

在 uniapp 项目中使用 Iconify 字体图标库

本文示例在 uniapp 项目中对 Iconify 字体图标库的安装和使用&#xff08;Iconify 字体图标库是一个免费开源的图标库&#xff0c;它拥有超过20万个开源矢量图标。&#xff09; 注&#xff1a;本文示例使用的是其 vue3 版本 安装 npm install --save-dev iconify/vue 注&am…

WPF+LibVLC开发播放器-LibVLC播放控制

接上一篇&#xff1a; LibVLC在C#中的使用 实现LibVLC播放器播放控制 界面 界面上添加一个Button按钮用于控制播放 <ButtonGrid.Row"1"Width"88"Height"24"Margin"10,0,0,0"HorizontalAlignment"Left"VerticalAlignme…

ffmpeg安装及配置简单教程

这是ffmpeg官方网站&#xff1a;https://ffmpeg.org/ 这是ffmpeg提供了其他版本的网站&#xff1a;Builds - CODEX FFMPEG gyan.dev 这是ffmpeg提供了提前编译好的可执行文件的github托管网站&#xff1a; https://github.com/BtbN/FFmpeg-Builds/releases 一般windows版本…

Qt-界面优化QSS

QSS介绍 先说下CSS&#xff1a; 在⽹⻚前端开发领域中, CSS 是⼀个⾄关重要的部分. 描述了⼀个⽹⻚的 "样式". 从⽽起到对⽹⻚美化的作⽤。 Qt 仿照 CSS 的模式, 引⼊了 QSS, 来对 Qt 中的控件做出样式上的设定 。 CSS的功能很强大&#xff0c;QSS要逊色一些&#…

后端-一对一的数据封装的两种写法对比

方式一特点&#xff1a;上面的普通封装可以删掉&#xff0c;也可以留着。 注意⚠️&#xff1a;下面的特殊封装的property的值是属性.字段。&#xff08;category.id...) column是sql重命名之后的字段&#xff0c;如果没有重命名是数据库中的值。 方式二特点&#xff1a;上面的…

CTF之密码学(密码特征分析)

一.MD5,sha1,HMAC,NTLM 1.MD5&#xff1a;MD5一般由32/16位的数字(0-9)和字母(a-f)组成的字符串 2.sha1&#xff1a;这种加密的密文特征跟MD5差不多&#xff0c;只不过位数是40&#xff08;sha256&#xff1a;64位&#xff1b;sha512:128位&#xff09; 3.HMAC&#xff1a;这…

网络安全框架及模型-PPDR模型

网络安全框架及模型-PPDR模型 概述: 为了有效应对不断变化的网络安全环境,人们意识到需要一种综合性的方法来管理和保护网络安全。因此,PPDR模型应运而生。它将策略、防护、检测和响应四个要素结合起来,提供了一个全面的框架来处理网络安全问题。 工作原理: PPDR模型的…

QT6学习第八天 QFrame 类

QT6学习第八天 QFrame 类族QLabel 标签部件按钮部件QLineEdit 行编辑器部件QAbstractSpinBoxQAbstractSlider 今天来学一学 QFrame 类。 QFrame 类族 QFrame 类是带有边框的部件的基类。它的子类包括常用的标签部件 QLabel、以及 QLCDNumber、QSplitter、QStackedWidget、QToo…

c++预编译头文件

文章目录 c预编译头文件1.使用g编译预编译头文件2.使用visual studio进行预编译头文件2.1visual studio如何设置输出预处理文件&#xff08;.i文件&#xff09;2.2visual studio 如何设置预编译&#xff08;初始创建空项目的情况下&#xff09;2.3 visual studio打开输出编译时…

简单快速的上手python

前言 python是一门可以快速上手的语言&#xff0c;原因是它语法简单&#xff0c;api容易使用自由灵活 当我们需要安装任何的三方库时&#xff0c;只需要执行 pip install XX 之后在代码里面import xxx就可以使用python啦。 并且python的代码自由灵活&#xff0c;使用缩进区…

【NLP高频面题 - LLM架构篇】旋转位置编码RoPE相对正弦位置编码有哪些优势?

【NLP高频面题 - LLM架构篇】旋转位置编码RoPE相对正弦位置编码有哪些优势&#xff1f; 重要性&#xff1a;⭐⭐⭐ &#x1f4af; NLP Github 项目&#xff1a; NLP 项目实践&#xff1a;fasterai/nlp-project-practice 介绍&#xff1a;该仓库围绕着 NLP 任务模型的设计、训练…

论文:IoU Loss for 2D/3D Object Detection

摘要&#xff1a;在2D/3D目标检测任务中&#xff0c;IoU (Intersection-over- Union)作为一种评价指标&#xff0c;被广泛用于评价不同探测器在测试阶段的性能。然而&#xff0c;在训练阶段&#xff0c;通常采用常见的距离损失(如L1或L2)作为损失函数&#xff0c;以最小化预测值…

STM32 HAL库开发学习1.STM32CubeMX 新建工程

STM32 HAL库开发学习1.STM32CubeMX 新建工程 一、 STM32 CubeMX 下载二、CubeMX 功能介绍1. 固件包路径设置2. 新建工程 三、创建项目实例1. 新建项目2. GPIO 管脚设置3. GPIO 窗口配置4. 调试设置5. 时钟配置6. 项目管理&#xff08;1&#xff09;项目信息&#xff08;2&#…

Qt的定时器应用案例 || Qt的图片添加显示

目录 1.ui界面 2.头文件 3.cpp源文件 4.main文件 5.关于ui_mytimerevent.h的代码编译错误 6.图片的添加展示方式 7.结果展示 8.参考文章 1.ui界面 2.头文件 #ifndef MYTIMEREVENT_H #define MYTIMEREVENT_H#include <QMainWindow> #include <QTime> //#in…

Linux中的常用基本指令(下)

Linux常用基本指令 Linux中的基本指令12.head指令13.tail指令简单解释重定向与管道(重要) 14.date指令(时间相关的指令)15.cal指令(不重要)16.find指令(灰常重要&#xff09;17.grep指令(重要)18.which指令和alias指令19.zip/unzip指令&#xff1a;20.tar指令&#xff08;重要&…

元素「宽高比」完美适配的方案

在日常生活中&#xff0c;我们常常会看到视频或照片能够随着页面尺寸变化&#xff0c;按照自身宽高比进行缩放调整。这种效果是如何实现的呢&#xff1f; 可以通过 CSS 和 JavaScript 两种方式完成&#xff0c;其中 CSS 是比较推荐的方式&#xff0c;因为它能充分利用现代浏览…