【Amazon】在Amazon EKS集群中安装部署最小化KubeSphere容器平台

news2024/11/29 10:44:50

文章目录

    • 一、准备工作
    • 二、部署 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.yaml

kubectl 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.240
  externalTrafficPolicy: Cluster
  ports:
  - name: nginx
    nodePort: 30880
    port: 80
    protocol: TCP
    targetPort: 8000
  selector:
    app: ks-console
    tier: frontend
    version: v3.0.0
  sessionAffinity: None
  type: 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.coloradmin.cn/o/1256306.html

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

相关文章

RocketMQ的push消费方式实现的太聪明了

最近仍然畅游在RocketMQ的源码中&#xff0c;这几天刚好翻到了消费者的源码&#xff0c;发现RocketMQ的对于push消费方式的实现简直太聪明了&#xff0c;所以趁着我脑子里还有点印象的时候&#xff0c;赶紧来写一篇文章&#xff0c;来掰扯一下&#xff0c;防止过两天就忘得一干…

[网络] 5. TCP 链接的建立与释放~汇总

大部分内容源于网络加之个人理解&#xff5e;巨人的肩膀有多大决定你可以看得多远&#xff5e; 文章目录 1. 三次握手说一下三次握手的过程为什么是三次握手 2. 四次挥手说一下四次挥手的过程为什么需要四次挥手有可能出现三次挥手吗&#xff0c;什么时候会出现呢&#xff1f;为…

video标签在h5中被劫持问题

将video的视频链接转为blob export const encryptionVideo (options: URL) > {return new Promise((resolve, reject) > {window.URL window.URL || window.webkitURL;var xhr new XMLHttpRequest();xhr.open(GET, options.url, true);xhr.responseType blob;xhr.onl…

正则化与正则剪枝

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 引言正则化为什么会过拟合拉格朗日与正则化梯度衰减与正则化 应用解决过拟合网络剪枝 …

JPA 自关联 设置单向多对一

Spring boot 3 JPA中&#xff0c;遇到一个需求&#xff0c;建一个数据字典表&#xff1a; Dictionary&#xff0c;存放两级数据&#xff0c;第一级为字典项目&#xff0c;第二级为项目内容&#xff0c;查询时要把parent_id对应父项的名称也一起查出来&#xff0c;返回前端。 …

VUE简易计划清单

目录 效果预览图 完整代码 效果预览图 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…

Web前端 ---- 【Vue】什么?代码堆在一起不好维护?辛辛苦苦改造的单文件组件用不了?看我直接Vue Cli脚手架安排

目录 前言 单文件组件 什么是单文件组件 单文件组件的内容 Es6模块的导入和导出 创建单文件组件 Vue Cli脚手架 前言 继上篇文章Vue组件的使用介绍了如何使用Vue组件&#xff0c;但是发现有一个很重要的问题&#xff0c;就是代码复用性很差&#xff0c;并且无法提供样式…

文件的写入和读取操作

题目&#xff1a; 编写一个程序&#xff0c;实现以下功能&#xff1a; 1. 创建一个新的文本文件&#xff0c;并将用户输入的数据写入文件中。 2. 打开已存在的文本文件&#xff0c;并将其中的数据显示在屏幕上。 #include <stdio.h> #include <stdlib.h> void wri…

事件委派+自定义属性+编程式导航实现路由跳转及传参

当我们页面中有许多a标签需要实现点击跳转到同一个页面并携带不同的参数时&#xff0c;我们就可以使用事件委派自定义属性编程式导航 的方式&#xff0c;用最小的内存实现路由跳转的最大效率。 为什么我们不用router-link 进行跳转&#xff1f; 要知道&#xff0c;我们页面中…

汇编:关于栈的知识

1.入栈和出栈指令 2. SS与SP 3. 入栈与出栈 3.1 执行push ax ↑↑ 3.2 执行pop ax ↓↓ 3.3 栈顶超界的问题 4. 寄存器赋值 基于8086CPU编程时&#xff0c;可以将一段内存当作栈来使用。一个栈段最大可以设为64KB&#xff08;0-FFFFH&#xff09;。 1.入栈和出栈指令…

058-第三代软件开发-文件Model

第三代软件开发-文件Model 文章目录 第三代软件开发-文件Model项目介绍文件Model 关键字&#xff1a; Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Language&#xff09;…

[计算机网络]应用层概述

0.写在前面: 该层为教学模型的最后一层,某种意义上来说是最接近各位开发者的一层,正因如此,这层中的很多定义和概念大家都有属于自己的理解, 完全按照书本反而才是异类,因此在这里我会去结合我做前端开发的一些经验,来处理和讲解一些概念,另外本层中的部分协议也不会过多阐述了…

提升逼格,自己搭建博客网站不求人

背景 对于一个热爱分享知识和经验的大佬来说&#xff0c;搭建一个自己的个人博客是十分必要的。因为各个免费写博客平台都会有每天写博客限制&#xff0c;比如我现在这篇文章的限制&#xff0c;就是每天最多发表3篇&#xff0c;同时还给我的博客添加一大波广告&#xff0c;真是…

async函数和await关键字

async写在一个函数a前面&#xff0c;该函数变为异步函数&#xff0c;可在里面使用await关键字&#xff0c;await后面一般跟一个promise对象&#xff08;axios函数返回一个promise对象&#xff0c;里面有异步任务&#xff09;&#xff0c;await会原地等待该异步任务结果&#xf…

JVM基础篇:垃圾回收

1.前言 1.1C/C的内存管理 在C/C这类没有自动垃圾回收机制的语言中&#xff0c;一个对象如果不再使用&#xff0c;需要手动释放&#xff0c;否则就会出现内存泄漏。我们称这种释放对象的过程为垃圾回收&#xff0c;而需要程序员编写代码进行回收的方式为手动回收。内存泄漏指的…

WiFi 发射链路 MCS 自适应机制介绍

链路适配是指发射机选择最优的MCS向特定的接收机发送数据的过程。链路自适应算法的实现有其特殊性&#xff0c;但通常基于测量的数据包错误率(PER)。大多数算法监视PER并调整MCS以跟踪一个最佳的长期平均值&#xff0c;以平衡由于使用更高MCS发送更短数据包而减少的开销和由于更…

坚鹏:中国工商银行数字化背景下银行公司业务如何快速转型培训

中国工商银行作为全球最大的银行&#xff0c;资产规模超过40万亿元&#xff0c;最近几年围绕“数字生态、数字资产、数字技术、数字基建、数字基因”五维布局&#xff0c;深入推进数字化转型&#xff0c;加快形成体系化、生态化实施路径&#xff0c;促进科技与业务加速融合&…

jupyter notebook 添加conda环境变量为内核(kenel)

第一步&#xff1a;安装ipykernel 在激活环境后&#xff0c;需要安装ipykernel包&#xff0c;以便将Conda环境添加到Jupyter Notebook中。使用以下命令安装&#xff1a; pip install ipykernel第二步&#xff1a;将Conda环境添加到Jupyter 需要将Conda环境添加到Jupyter Not…

在拼多多,照见热气腾腾的平凡人生

文 | 螳螂观察 作者 | 易不二 内容丰富的《鲁迅日记》里&#xff0c;经常会出现“xx日晴&#xff0c;无事”的记载。 如果按照年份算&#xff0c;在被记载的日子里&#xff0c;每年鲁迅都有一二十天的时间是“无事”的状态。 很难想象&#xff0c;为人类历史文明前进照亮了…

2024年最新最全的Jmeter接口测试必会技能:jmeter对图片验证码的处理

jmeter对图片验证码的处理 在web端的登录接口经常会有图片验证码的输入&#xff0c;而且每次登录时图片验证码都是随机的&#xff1b;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段&#xff0c;然后再登录接口中使用&#xff1b; 通过jmeter对图片验证码…