【Amazon】在Amazon EKS集群中安装部署最小化KubeSphere容器平台
文章目录
- 一、准备工作
- 二、部署 KubeSphere
- 三、访问 KubeSphere 控制台
- 四、安装Amazon EBS CSI 驱动程序
- 4.1 集群IAM角色建立并赋予权限
- 4.2 安装 Helm Kubernetes 包管理器
- 4.3 安装Amazon EBS CSI 驱动程序
- 五、常见问题
- 六、参考链接
一、准备工作
- Kubernetes 版本必须为:v1.20.x、v1.21.x、v1.22.x、v1.23.x、* v1.24.x、* v1.25.x 和 * v1.26.x。带星号的版本可能出现边缘节点部分功能不可用的情况。因此,如需使用边缘节点,推荐安装 v1.23.x。
- 确保机器满足最低硬件要求:CPU > 1 核,内存 > 2 GB。
- 在安装之前,需要配置 Kubernetes 集群中的默认存储类型。
前提:已经通过eksctl命令工具安装部署完成kubernetes集群。详细安装操作过程请参考:【Amazon】基于Amazon提供的托管式EKS通过eksctl命令部署Kubernetes集群-CSDN博客
二、部署 KubeSphere
确保机器满足安装的前提条件之后,可以按照以下步骤安装 KubeSphere。
- 执行以下命令开始安装:
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/kubesphere-installer.yamlkubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/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
- 使用
kubectl get pod --all-namespaces查看所有 Pod 是否在 KubeSphere 的相关命名空间中正常运行。如果是,请通过以下命令检查控制台的端口(默认为30880):
kubectl get svc/ks-console -n kubesphere-system
-
确保在安全组中打开了端口
30880,并通过 NodePort(IP:30880)使用默认帐户和密码(admin/P@88w0rd)访问 Web 控制台。 -
登录控制台后,您可以在系统组件中检查不同组件的状态。如果要使用相关服务,可能需要等待某些组件启动并运行。

执行完成后的结果如下图所示:

三、访问 KubeSphere 控制台
现在已经安装了 KubeSphere,可以按照以下步骤访问 KubeSphere 的 Web 控制台。
- 查看 ks-console 服务。
kubectl get svc -n kubesphere-system
输出结果:
[root@awseksec2 ~]# kubectl get svc -n kubesphere-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ks-apiserver ClusterIP 10.100.154.120 <none> 80/TCP 14m
ks-console NodePort 10.100.248.20 <none> 80:30880/TCP 14m
ks-controller-manager ClusterIP 10.100.30.150 <none> 443/TCP 14m
- 执行
kubectl edit ks-console将 service 类型NodePort更改为LoadBalancer,完成后保存文件。
# kubectl edit svc ks-console -n kubesphere-system
......
spec:clusterIP: 10.100.160.240externalTrafficPolicy: Clusterports:- name: nginxnodePort: 30880port: 80protocol: TCPtargetPort: 8000selector:app: ks-consoletier: frontendversion: v3.0.0sessionAffinity: Nonetype: LoadBalancer
输出结果:
[root@awseksec2 ~]# kubectl edit svc ks-console -n kubesphere-system
service/ks-console edited
[root@awseksec2 ~]# kubectl get svc -n kubesphere-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ks-apiserver ClusterIP 10.100.154.120 <none> 80/TCP 15m
ks-console LoadBalancer 10.100.248.20 a32bf8937c7f44f9d9b1293dbe399375-383389967.ap-northeast-3.elb.amazonaws.com 80:30880/TCP 15m
ks-controller-manager ClusterIP 10.100.30.150 <none> 443/TCP 15m
-
使用 EKS 生成的 external-ip 访问 KubeSphere 的 Web 控制台。
-
使用默认帐户和密码(
admin/P@88w0rd)登录控制台。



四、安装Amazon EBS CSI 驱动程序
参考链接:Amazon EBS CSI 驱动程序 - Amazon EKS
- 建立集群 IAM 角色
- 赋予集群 IAM 角色
- 安装 Amazon EBS CSI 驱动程序
- 验证Amazon EBS CSI 驱动程序
4.1 集群IAM角色建立并赋予权限
# 建立集群IAM角色
$ curl -o eks-iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-ebs-csi-driver/release-1.3/docs/example-iam-policy.json$ aws iam create-policy \--policy-name AmazonEKS_EBS_CSI_Driver_Policy \--policy-document file://eks-iam-policy.json
$ aws iam create-policy \
> --policy-name AmazonEKS_EBS_CSI_Driver_Policy \
> --policy-document file://eks-iam-policy.json
{"Policy": {"PolicyName": "AmazonEKS_EBS_CSI_Driver_Policy","PolicyId": "ANPAX33KP53SETUUPEAVR","Arn": "arn:aws:iam::540852350692:policy/AmazonEKS_EBS_CSI_Driver_Policy","Path": "/","DefaultVersionId": "v1","AttachmentCount": 0,"PermissionsBoundaryUsageCount": 0,"IsAttachable": true,"CreateDate": "2023-11-19T08:51:59+00:00","UpdateDate": "2023-11-19T08:51:59+00:00"}
}# 赋予集群 IAM 角色
$ eksctl create iamserviceaccount \--name ebs-csi-controller-sa \--region=ap-northeast-3 \--namespace kube-system \--cluster xybeks-cluster \--attach-policy-arn arn:aws:iam::540852350692:policy/AmazonEKS_EBS_CSI_Driver_Policy \--approve \--override-existing-serviceaccounts# 验证角色 ARN
$ aws cloudformation describe-stacks \--stack-name eksctl-xybeks-cluster-addon-iamserviceaccount-kube-system-ebs-csi-controller-sa \--query='Stacks[].Outputs[?OutputKey==`Role1`].OutputValue' \--output text
4.2 安装 Helm Kubernetes 包管理器
# Helm 是查找、分享和使用软件构建kubernetes的最优方式之一。
$ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.sh$ chmod 700 get_helm.sh$ ./get_helm.sh$ helm version$ helm help
4.3 安装Amazon EBS CSI 驱动程序
# 安装Amazon EBS CSI 驱动程序
$ helm repo add aws-ebs-csi-driver https://kubernetes-sigs.github.io/aws-ebs-csi-driver
$ helm repo update--set image.repository=602401143452.dkr.ecr.ap-northeast-3.amazonaws.com/eks/aws-ebs-csi-driver \--set image.repository=602401143452.dkr.ecr.us-east-2.amazonaws.com/eks/aws-ebs-csi-driver \# 从镜像区域安装驱动
# https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/ass-ons-images.html
$ helm upgrade -install aws-ebs-csi-driver aws-ebs-csi-driver/aws-ebs-csi-driver \--namespace kube-system \--set image.repository=602401143452.dkr.ecr.ap-northeast-3.amazonaws.com/eks/aws-ebs-csi-driver \--set controller.serviceAccount.create=false \--set controller.serviceAccount.name=ebs-csi-controller-sa$ kubectl get pod -n kube-system -l "app.kubernetes.io/name=aws-ebs-csi-driver,app.kubernetes.io/instance=aws-ebs-csi-driver"---------------
kubectl delete pod -n kube-system -l "app.kubernetes.io/name=aws-ebs-csi-driver,app.kubernetes.io/instance=aws-ebs-csi-driver"
---------------# 验证Amazon EBS CSI 驱动程序
$ kubectl get storageclass# Verify dricer is running:
$ kubectl get pods -n kube-system

[root@awseksec2 ~]# kubectl get pod -n kube-system -l "app.kubernetes.io/name=aws-ebs-csi-driver,app.kubernetes.io/instance=aws-ebs-csi-driver"
NAME READY STATUS RESTARTS AGE
ebs-csi-controller-64b49d7f84-6g6rt 6/6 Running 0 35s
ebs-csi-controller-64b49d7f84-l5cgp 6/6 Running 0 34s
ebs-csi-node-6w5vw 3/3 Running 0 35s
ebs-csi-node-bw9p8 3/3 Running 0 34s
[root@awseksec2 ~]# kubectl get storageclass
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
gp2 (default) kubernetes.io/aws-ebs Delete WaitForFirstConsumer false 99m
[root@awseksec2 ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
aws-node-cvmjf 1/1 Running 0 92m
aws-node-rs98c 1/1 Running 0 92m
coredns-847b5d4fc5-csb75 1/1 Running 0 99m
coredns-847b5d4fc5-j47xr 1/1 Running 0 99m
ebs-csi-controller-64b49d7f84-6g6rt 6/6 Running 0 113s
ebs-csi-controller-64b49d7f84-l5cgp 6/6 Running 0 112s
ebs-csi-node-6w5vw 3/3 Running 0 113s
ebs-csi-node-bw9p8 3/3 Running 0 112s
kube-proxy-7m9ll 1/1 Running 0 92m
kube-proxy-lvmvk 1/1 Running 0 92m
snapshot-controller-0 1/1 Running 0 48m
五、常见问题
🔴问题:在EKS集群中部署完KubeSphere容器平台,出现如下显示结果。是因为没有安装Amazon EBS CSI驱动程序造成的。

✅解决:安装Amazon EBS CSI驱动程序。参考
4.3安装Amazon EBS CSI驱动程序。

🔴问题:集群 OIDC 发布者 URL 必须存在 IAM OIDC 提供商。
Error: unable to create iamserviceaccount(s) without IAM OIDC provider enabled

✅解决:添加IAM OIDC 提供商
[root@awseksec2 ~]# cluster_name=xybeks-cluster
[root@awseksec2 ~]# oidc_id=$(aws eks describe-cluster --name $cluster_name --query "cluster.identity.oidc.issuer" --output text | cut -d '/' -f 5)
[root@awseksec2 ~]# echo $oidc_id
CB4443455AF63EE8A9144875D7D4BD0C
[root@awseksec2 ~]# aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4
[root@awseksec2 ~]# eksctl utils associate-iam-oidc-provider --cluster $cluster_name --approve
2023-11-19 08:55:48 [ℹ] will create IAM Open ID Connect provider for cluster "xybeks-cluster" in "ap-northeast-3"
2023-11-19 08:55:48 [✔] created IAM Open ID Connect provider for cluster "xybeks-cluster" in "ap-northeast-3"
参考链接:https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/enable-iam-roles-for-service-accounts.html
六、参考链接
🌏Helm
🌏Artifact Hub
🌏 在 Kubernetes 上最小化安装 KubeSphere
🌏 在 AWS EKS 上部署 KubeSphere
🌏Artifact Hub
🌏 在 Kubernetes 上最小化安装 KubeSphere
🌏 在 AWS EKS 上部署 KubeSphere
🌏将 Helm 与 Amazon EKS 结合使用 - Amazon EKS
相关文章:
【Amazon】在Amazon EKS集群中安装部署最小化KubeSphere容器平台
文章目录 一、准备工作二、部署 KubeSphere三、访问 KubeSphere 控制台四、安装Amazon EBS CSI 驱动程序4.1 集群IAM角色建立并赋予权限4.2 安装 Helm Kubernetes 包管理器4.3 安装Amazon EBS CSI 驱动程序 五、常见问题六、参考链接 一、准备工作 Kubernetes 版本必须为&…...
ubuntu20.04下安装标注工具CVAT
1 安装docker sudo apt-get update sudo apt-get --no-install-recommends install -y apt-transport-https ca-certificates \curl \gnupg-agent \software-properties-commoncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-r…...
pytest-pytest-html测试报告这样做,学完能涨薪3k
在 pytest 中提供了生成html格式测试报告的插件 pytest-html 安装 安装命令如下: pip install pytest-html使用 我们已经知道执行用例的两种方式,pytest.main()执行和命令行执行,而要使用pytest-html生成报告,只需要在执行时加…...
本地运行“李开复”的零一万物 34B 大模型
这篇文章,我们来聊聊如何本地运行最近争议颇多的,李开复带队的国产大模型:零一万物 34B。 写在前面 零一万物的模型争议有很多,不论是在海外的社交媒体平台,还是在国内的知乎和一种科技媒体上,不论是针对…...
Redis-Redis缓存高可用集群
1、Redis集群方案比较 哨兵模式 在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可…...
Django之admin页面样式定制(Simpleui)
好久不见,各位it朋友们! 本篇文章我将向各位介绍Django框架中admin后台页面样式定制的一个插件库,名为Simpleui。 一)简介 SimpleUI是一款简单易用的用户界面(UI)库,旨在帮助开发人员快速构建…...
TypeScript 中的type与interface
TypeScript 中的type与interface 对于 TypeScript,有两种定义类型的方法:type与interface。 人们常常想知道该使用哪一种,而答案并不是一刀切的。这确实取决于具体情况。有时,其中一种比另一种更好,但在许多情况下&a…...
【uniapp】uniapp开发小程序定制uni-collapse(折叠面板)
需求 最近在做小程序,有一个类似折叠面板的ui控件,效果大概是这样 代码 因为项目使用的是uniapp,所以打算去找uniapp的扩展组件,果然给我找到了这个叫uni-collapse的组件(链接:uni-collapse)…...
单片机学习7——定时器/计数器编程
#include<reg52.h>unsigned char a, num; sbit LED1 P1^0;void main() {num0;EA1;ET01;//IT00;//设置TMOD的工作模式TMOD0x01;//给定时器装初值,50000,50ms中断20次,就得到1sTH0(65536-50000)/256;TL0(65536-50000)%256;TR01; // 定时器/计数器启…...
OpenWrt Lan口上网设置
LAN口上网设置 连接上openwrt,我用的 倍控N5105,eth0,看到Openwrt的IP是10.0.0.1 在 网络 -> 网口配置 -> 设置好 WAN 口和 LAN 口 初次使用经常重置 openwrt 所以我设置的是 静态IP模式 - 网络 -> 防火墙 -> 常规设置 ->…...
监控同一局域网内其它主机上网访问信息
1.先取得网关IP 2.安装IPTABLES路由表 sudo apt-get install iptables 3.启用IP转发 sudo sysctl -p 查看配置是否生效 4.配置路由 iptables -t nat -A POSTROUTING -j MASQUERADE 配置成功后,使用sudo iptables-save查看...
DC cut 滤直流滤波器实现
在音频处理中,会无意中产生直流偏置,这个偏置如果通过功放去推喇叭,会对喇叭造成不可逆转的损坏,所以在实际应用中,会通过硬件(添加直流检测模块,如果有 使用继电器切断输出) 、软件(软件直流滤波算法)&…...
uni-app,nvue中text标签文本超出宽度不换行问题解决
复现:思路: 将text标签换为rich-text,并给rich-text增加换行的样式class类名解决:...
和鲸ModelWhale平台与海光人工智能加速卡系列完成适配认证,夯实 AI 应用核心底座
AIGC 浪潮席卷,以大模型为代表的人工智能发展呈现出技术创新快、应用渗透强、国际竞争激烈等特点。创新为本,落地为王,技术的快速发展与大规模训练需求的背后,是对平台化基础设施与 AI 算力的更高要求。在此全球 AI 产业竞争的风口…...
Flutter学习(四)如何取消listview的越界效果
背景 在flutter的开发过程中,ListView是很常见的一个组件,但是,由于ListView的某些自带的体验,导致不太好的用户体验。例如ListView中,滑动到顶部或者底部的时候,再次滑动,会有越界的效果&…...
system.setProperty导致的https血案
system.setProperty导致的https血案 现象排查思考建议 现象 系统外调签名服务突然无法使用,排查发起请求的服务正常,查看日志报recieve fatal alert: protocal_version, 当时大家没有深入研究代码,印象里最近没有动过服务,就网络…...
Python 测试框架 Pytest 的入门
简介 pytest 是一个功能强大而易于使用的 Python 测试框架。它提供了简单的语法和灵活的功能,用于编写和组织测试代码。 1、简单易用:pytest 的语法简洁明了,使得编写测试用例更加直观和易于理解。它使用 assert 语句来验证预期结果&#x…...
【开源】基于Vue.js的数据可视化的智慧河南大屏
项目编号: S 059 ,文末获取源码。 \color{red}{项目编号:S059,文末获取源码。} 项目编号:S059,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 数据模块 …...
什么是分布式锁?Redis实现分布式锁详解
目录 前言: 分布式系统买票示例 引入redis做分布式锁 引入过期时间 引入校验id 引入lua脚本 过期时间续约问题 redlock算法 小结: 前言: 在分布式系统中,涉及多个主机访问同一块资源,此时就需要锁来做互斥控制…...
ubuntu挂载硬盘方法
1.关闭服务器加上新硬盘 2.启动服务器,以root用户登录 3.查看硬盘信息 fdisk -l4.格式化分区 找到需要分区的目录,并记录分区的uuid,用于后面修改/etc/fstab永久挂载配置文件 mkfs.ext4 /dev/nvme0n1 mkfs.ext4 /dev/nvme1n1 Filesystem UUID: a1c…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
