当前位置: 首页 > news >正文

【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。

  1. 执行以下命令开始安装:
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
  1. 检查安装日志:
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
  1. 使用 kubectl get pod --all-namespaces 查看所有 Pod 是否在 KubeSphere 的相关命名空间中正常运行。如果是,请通过以下命令检查控制台的端口(默认为 30880):
kubectl get svc/ks-console -n kubesphere-system
  1. 确保在安全组中打开了端口 30880,并通过 NodePort (IP:30880) 使用默认帐户和密码 (admin/P@88w0rd) 访问 Web 控制台。

  2. 登录控制台后,您可以在系统组件中检查不同组件的状态。如果要使用相关服务,可能需要等待某些组件启动并运行。

image-20231119161735670

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

image-20231119163138947

三、访问 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)登录控制台。

image-20231119163604595

image-20231119163651248

image-20231119170832806

四、安装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   

image-20231119170706334

[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驱动程序造成的。

image-20231119163731525

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

image-20231119170813434

🔴问题:集群 OIDC 发布者 URL 必须存在 IAM OIDC 提供商。

Error: unable to create iamserviceaccount(s) without IAM OIDC provider enabled

image-20231119165654493
✅解决:添加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 安装 安装命令如下&#xff1a; pip install pytest-html使用 我们已经知道执行用例的两种方式&#xff0c;pytest.main()执行和命令行执行&#xff0c;而要使用pytest-html生成报告&#xff0c;只需要在执行时加…...

本地运行“李开复”的零一万物 34B 大模型

这篇文章&#xff0c;我们来聊聊如何本地运行最近争议颇多的&#xff0c;李开复带队的国产大模型&#xff1a;零一万物 34B。 写在前面 零一万物的模型争议有很多&#xff0c;不论是在海外的社交媒体平台&#xff0c;还是在国内的知乎和一种科技媒体上&#xff0c;不论是针对…...

Redis-Redis缓存高可用集群

1、Redis集群方案比较 哨兵模式 在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态&#xff0c;如果master节点异常&#xff0c;则会做主从切换&#xff0c;将某一台slave作为master&#xff0c;哨兵的配置略微复杂&#xff0c;并且性能和高可…...

Django之admin页面样式定制(Simpleui)

好久不见&#xff0c;各位it朋友们&#xff01; 本篇文章我将向各位介绍Django框架中admin后台页面样式定制的一个插件库&#xff0c;名为Simpleui。 一&#xff09;简介 SimpleUI是一款简单易用的用户界面&#xff08;UI&#xff09;库&#xff0c;旨在帮助开发人员快速构建…...

TypeScript 中的type与interface

TypeScript 中的type与interface 对于 TypeScript&#xff0c;有两种定义类型的方法&#xff1a;type与interface。 人们常常想知道该使用哪一种&#xff0c;而答案并不是一刀切的。这确实取决于具体情况。有时&#xff0c;其中一种比另一种更好&#xff0c;但在许多情况下&a…...

【uniapp】uniapp开发小程序定制uni-collapse(折叠面板)

需求 最近在做小程序&#xff0c;有一个类似折叠面板的ui控件&#xff0c;效果大概是这样 代码 因为项目使用的是uniapp&#xff0c;所以打算去找uniapp的扩展组件&#xff0c;果然给我找到了这个叫uni-collapse的组件&#xff08;链接&#xff1a;uni-collapse&#xff09…...

单片机学习7——定时器/计数器编程

#include<reg52.h>unsigned char a, num; sbit LED1 P1^0;void main() {num0;EA1;ET01;//IT00;//设置TMOD的工作模式TMOD0x01;//给定时器装初值&#xff0c;50000,50ms中断20次&#xff0c;就得到1sTH0(65536-50000)/256;TL0(65536-50000)%256;TR01; // 定时器/计数器启…...

OpenWrt Lan口上网设置

LAN口上网设置 连接上openwrt&#xff0c;我用的 倍控N5105&#xff0c;eth0&#xff0c;看到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 滤直流滤波器实现

在音频处理中&#xff0c;会无意中产生直流偏置&#xff0c;这个偏置如果通过功放去推喇叭&#xff0c;会对喇叭造成不可逆转的损坏&#xff0c;所以在实际应用中&#xff0c;会通过硬件(添加直流检测模块&#xff0c;如果有 使用继电器切断输出) 、软件(软件直流滤波算法)&…...

uni-app,nvue中text标签文本超出宽度不换行问题解决

复现&#xff1a;思路&#xff1a; 将text标签换为rich-text&#xff0c;并给rich-text增加换行的样式class类名解决&#xff1a;...

和鲸ModelWhale平台与海光人工智能加速卡系列完成适配认证,夯实 AI 应用核心底座

AIGC 浪潮席卷&#xff0c;以大模型为代表的人工智能发展呈现出技术创新快、应用渗透强、国际竞争激烈等特点。创新为本&#xff0c;落地为王&#xff0c;技术的快速发展与大规模训练需求的背后&#xff0c;是对平台化基础设施与 AI 算力的更高要求。在此全球 AI 产业竞争的风口…...

Flutter学习(四)如何取消listview的越界效果

背景 在flutter的开发过程中&#xff0c;ListView是很常见的一个组件&#xff0c;但是&#xff0c;由于ListView的某些自带的体验&#xff0c;导致不太好的用户体验。例如ListView中&#xff0c;滑动到顶部或者底部的时候&#xff0c;再次滑动&#xff0c;会有越界的效果&…...

system.setProperty导致的https血案

system.setProperty导致的https血案 现象排查思考建议 现象 系统外调签名服务突然无法使用&#xff0c;排查发起请求的服务正常&#xff0c;查看日志报recieve fatal alert: protocal_version, 当时大家没有深入研究代码&#xff0c;印象里最近没有动过服务&#xff0c;就网络…...

Python 测试框架 Pytest 的入门

简介 pytest 是一个功能强大而易于使用的 Python 测试框架。它提供了简单的语法和灵活的功能&#xff0c;用于编写和组织测试代码。 1、简单易用&#xff1a;pytest 的语法简洁明了&#xff0c;使得编写测试用例更加直观和易于理解。它使用 assert 语句来验证预期结果&#x…...

【开源】基于Vue.js的数据可视化的智慧河南大屏

项目编号&#xff1a; S 059 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S059&#xff0c;文末获取源码。} 项目编号&#xff1a;S059&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 数据模块 …...

什么是分布式锁?Redis实现分布式锁详解

目录 前言&#xff1a; 分布式系统买票示例 引入redis做分布式锁 引入过期时间 引入校验id 引入lua脚本 过期时间续约问题 redlock算法 小结&#xff1a; 前言&#xff1a; 在分布式系统中&#xff0c;涉及多个主机访问同一块资源&#xff0c;此时就需要锁来做互斥控制…...

ubuntu挂载硬盘方法

1.关闭服务器加上新硬盘 2.启动服务器&#xff0c;以root用户登录 3.查看硬盘信息 fdisk -l4.格式化分区 找到需要分区的目录,并记录分区的uuid&#xff0c;用于后面修改/etc/fstab永久挂载配置文件 mkfs.ext4 /dev/nvme0n1 mkfs.ext4 /dev/nvme1n1 Filesystem UUID: a1c…...

3个颠覆性技巧:用手柄打造你的跨平台B站娱乐中心

3个颠覆性技巧&#xff1a;用手柄打造你的跨平台B站娱乐中心 【免费下载链接】wiliwili 第三方B站客户端&#xff0c;目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上 项目地址: https://gitcode.com/GitHub_Trending/wi/wiliwili 你是否厌倦了手机小…...

抖音评论采集工具:3步快速获取完整评论数据的终极指南

抖音评论采集工具&#xff1a;3步快速获取完整评论数据的终极指南 【免费下载链接】TikTokCommentScraper 项目地址: https://gitcode.com/gh_mirrors/ti/TikTokCommentScraper 想要深入分析抖音热门视频的用户反馈&#xff1f;希望了解竞品账号的互动情况&#xff1f;…...

WeKnora快速上手:5分钟搭建零幻觉问答系统

WeKnora快速上手&#xff1a;5分钟搭建零幻觉问答系统 1. 为什么选择WeKnora问答系统 在日常工作和学习中&#xff0c;我们经常遇到这样的情况&#xff1a;需要从大段文本中快速找到特定信息&#xff0c;或者确保AI回答完全基于我们提供的资料。传统AI聊天工具虽然方便&#…...

为RWKV7-1.5B-G1A开发VS Code插件:实现智能编程辅助

为RWKV7-1.5B-G1A开发VS Code插件&#xff1a;实现智能编程辅助 1. 引言&#xff1a;当AI助手遇见代码编辑器 想象一下这样的场景&#xff1a;你正在VS Code中编写Python代码&#xff0c;刚输入函数名&#xff0c;AI就自动补全了整个函数体&#xff1b;写注释描述需求后&…...

别再用微服务思维做AI系统!:重构技术选型逻辑——基于LLM生命周期的4阶段决策树(训练→蒸馏→推理→反馈闭环)

第一章&#xff1a;AI原生软件研发技术选型决策树 2026奇点智能技术大会(https://ml-summit.org) AI原生软件并非传统应用叠加大模型API的简单组合&#xff0c;而是以模型为中心重构开发范式——从数据流、状态管理、推理调度到可观测性&#xff0c;每一层都需重新权衡。技术选…...

Step3-VL-10B-Base辅助编程(AI编程):根据界面草图生成前端代码

Step3-VL-10B-Base辅助编程&#xff08;AI编程&#xff09;&#xff1a;根据界面草图生成前端代码 你有没有过这样的经历&#xff1f;产品经理或者设计师在白板上画了一个界面草图&#xff0c;然后对你说&#xff1a;“这个功能&#xff0c;明天能上线吗&#xff1f;” 看着那…...

FlowState Lab助力游戏开发:实时生成动态地形与天气效果

FlowState Lab助力游戏开发&#xff1a;实时生成动态地形与天气效果 1. 游戏开发的新挑战与机遇 现代游戏开发面临一个核心矛盾&#xff1a;玩家对画面表现力的要求越来越高&#xff0c;而开发团队的时间和资源却总是有限的。传统的地形和天气系统需要美术师手动设计每一个细…...

次元画室微信小程序开发:打造个人AI画室轻应用

次元画室微信小程序开发&#xff1a;打造个人AI画室轻应用 想随时随地用手机把照片变成动漫风、油画风或者任何你喜欢的艺术风格吗&#xff1f;自己动手开发一个微信小程序&#xff0c;把“次元画室”这样的AI绘画模型装进口袋&#xff0c;听起来是不是很酷&#xff1f;今天&a…...

uniapp结合微信公众号H5静默授权:从本地调试到获取openid的完整实践

1. 理解静默授权与openid的核心逻辑 静默授权是微信公众号开发中获取用户基础信息的常用方式&#xff0c;特别适合不需要用户主动授权的场景。与需要用户点击确认的snsapi_userinfo授权不同&#xff0c;snsapi_base授权可以在用户无感知的情况下完成。这个过程中最关键的产出物…...

Python FastAPI 高并发项目结构

Python FastAPI 高并发项目结构解析 在当今高并发的互联网应用中&#xff0c;选择高效的框架和合理的项目结构至关重要。Python的FastAPI凭借其异步支持、高性能和简洁的语法&#xff0c;成为构建高并发服务的理想选择。仅靠框架本身无法充分发挥其潜力&#xff0c;合理的项目…...