【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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

i社为什么不出游戏了?

I社&#xff0c;即国际知名的游戏公司&#xff0c;近来为何鲜有新游问世&#xff1f;曾经风靡一时的游戏开发者&#xff0c;如今为何陷入了沉寂&#xff1f;这其中的种种原因&#xff0c;值得我们深入剖析。 首先&#xff0c;I社近期的沉寂可能与其内部管理层的调整和战略规划…

Scrum敏捷开发培训团队和组织来说的重要性

Scrum敏捷开发培训对于团队和组织来说是至关重要的&#xff0c;有以下几点&#xff0c;大家可以参考下&#xff1a; 理解敏捷价值观和原则&#xff1a; 培训有助于团队理解敏捷方法背后的核心理念和价值观&#xff0c;包括个体和互动、工作软件、客户合作和响应变化。这有助于建…

RESTful API 架构快速入门 Flask实现

RESTful 简介 1.1 为什么要使用 RESTful 架构&#xff1f; Representational State Transfer&#xff08;REST&#xff09;是一种面向资源的架构风格&#xff0c;广泛应用于网络服务的设计和开发。使用RESTful架构有以下几个优点&#xff1a; 简单性和可扩展性&#xff1a; RE…

[LaTex]arXiv投稿攻略——jpg/png转pdf

一、将图片复制进ppt&#xff0c;右键单击图片选择设置图片格式&#xff0c;获取图片高度和宽度 二、选择“设计-幻灯片大小-自定义幻灯片大小” 三、设置幻灯片大小为图片大小 四、 选择“最大化” 五、 检查幻灯片大小是否与图像大小一致 六、导出为PDF

浅谈Python中的鸭子类型和猴子补丁

文章目录 前言一、鸭子类型二、猴子补丁关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 前言 Python 开发者可能…

springboot打印启动信息

打印启动信息 转载自:www.javaman.cn 1 spring Bean实例化流程 基本流程&#xff1a; 1、Spring容器在进行初始化时&#xff0c;会将xml或者annotation配置的bean的信息封装成一个BeanDefinition对象&#xff08;每一个bean标签或者bean注解都封装成一个BeanDefinition对象&a…

【Vulnhub靶机】Jarbas--Jenkins

文章目录 信息收集主机发现端口扫描目录爆破 漏洞探测whatwebhash-identifierwhatweb 文档说明&#xff1a;https://www.vulnhub.com/entry/jarbas-1,232/ 靶机下载&#xff1a;Download (Mirror): 信息收集 主机发现 扫描C段 sudo nmap -sn 10.9.75.0/24端口扫描 sudo nma…

装饰者设计模式

package com.jmj.pattern.decorator;/*** 快餐类(抽象构建角色)*/ public abstract class FastFood {private float price;private String desc;public float getPrice() {return price;}public void setPrice(float price) {this.price price;}public String getDesc() {retu…

竞赛选题 题目:基于python的验证码识别 - 机器视觉 验证码识别

文章目录 0 前言1 项目简介2 验证码识别步骤2.1 灰度处理&二值化2.2 去除边框2.3 图像降噪2.4 字符切割2.5 识别 3 基于tensorflow的验证码识别3.1 数据集3.2 基于tf的神经网络训练代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于pyt…

LV.12 D20 RTC实验 学习笔记

一、RTC简介 RTC(Real Time Clock)即实时时钟&#xff0c;它是一个可以为系统提供精确的时间基准的元器件&#xff0c;RTC一般采用精度较高的晶振作为时钟源&#xff0c;有些RTC为了在主电源掉电时还可以工作&#xff0c;需要外加电池供电 二、Exynos4412下的 RTC控制器 它支持…

Docker Swarm总结+service创建和部署、overlay网络以及Raft算法(2/4)

博主介绍&#xff1a;Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 &#x1f345;文末获取源码下载地址&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb;…

基于STM32的OLED多级菜单GUI实现(简化版智能手表)

前言&#xff1a;本文的OLED多级菜单UI为一个综合性的STM32小项目&#xff0c;使用多传感器与OLED显示屏实现智能终端的效果。项目中的多级菜单UI使用了较为常见的结构体索引法去实现功能与功能之间的来回切换&#xff0c;搭配DHT11&#xff0c;RTC&#xff0c;LED&#xff0c;…

【机器学习 | 开山篇】打造坚实基础、Kaggle 登榜之路

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

Linux中部署MongoDB

在 是一个必要的过程&#xff0c;因为MongoDB是一种流行的NoSQL数据库&#xff0c;它可以在大多数操作系统上使用。在本文中&#xff0c;我们将介绍如何在CentOS 8上部署MongoDB。 MongoDB的下载 您可以从MongoDB官网上下载最新的MongoDB版本。使用以下命令下载MongoDB&#…

SSF-CNN:空间光谱融合的卷积光谱图像超分网络

SSF-CNN: SPATIAL AND SPECTRAL FUSION WITH CNN FOR HYPERSPECTRAL IMAGE SUPER-RESOLUTION 文章目录 SSF-CNN: SPATIAL AND SPECTRAL FUSION WITH CNN FOR HYPERSPECTRAL IMAGE SUPER-RESOLUTION简介解决问题网络框架代码实现训练部分运行结果 简介 ​ 本文提出了一种利用空…

MYSQL 及 SQL 注入

文章目录 前言什么是sql注入防止SQL注入Like语句中的注入后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Mysql &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现…

Adversarial Attack on Graph Structured Data(2018 PMLR)

Adversarial Attack on Graph Structured Data----《图结构数据的对抗攻击》 摘要 基于图结构的深度学习已经在各种应用中显示出令人兴奋的结果。然而&#xff0c;与图像或文本对抗攻击和防御的大量研究工作相比&#xff0c;此类模型的鲁棒性却很少受到关注。在本文中&#xf…

⑩⑧【MySQL】InnoDB架构、事务原理、MVCC多版本并发控制

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ InnoDB存储引擎 ⑩⑧【MySQL】详解InnoDB存储引…

Day42力扣打卡

打卡记录 统计子串中的唯一字符&#xff08;找规律&#xff09; 链接 大佬的题解 class Solution:def uniqueLetterString(self, s: str) -> int:ans total 0last0, last1 {}, {}for i, c in enumerate(s):total i - 2 * last0.get(c, -1) last1.get(c, -1)ans tot…

【数据中台】开源项目(2)-Dbus数据总线

1 背景 企业中大量业务数据保存在各个业务系统数据库中&#xff0c;过去通常的同步数据的方法有很多种&#xff0c;比如&#xff1a; 各个数据使用方在业务低峰期各种抽取所需数据&#xff08;缺点是存在重复抽取而且数据不一致&#xff09; 由统一的数仓平台通过sqoop到各个…