AWS EKS1.26+kubesphere3.4.1

1、前提准备

  • 1台EC2服务器Amazon Linux2,设置admin的角色

  • 安装 aws cli V2
​
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"unzip awscliv2.zipsudo ./aws/installexport PATH=/usr/local/bin:$PATHsource ~/.bash_profile​

  • 安装kubectl 1.27
​
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.1/2023-04-19/bin/linux/amd64/kubectlchmod +x ./kubectlmkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/binecho 'export PATH=$PATH:$HOME/bin' >> ~/.bashrckubectl version --short --client​

  • 安装 eksctl 最新版本
​
使用以下命令下载并提取最新版本的 eksctl。curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp将提取的二进制文件移至 /usr/local/bin。sudo mv /tmp/eksctl /usr/local/bin使用以下命令测试您的安装是否成功。eksctl version​

  • 安装helm
​
wget https://get.helm.sh/helm-v3.11.1-linux-amd64.tar.gztar -zxvf helm-v3.11.1-linux-amd64.tar.gz sudo mv linux-amd64/helm /usr/local/bin/helm​

2、创建集群

  • 使用eksctl安装EKS集群(这里自动新建了一个VPC,以及对应的子网。自动创建的子网,EKS 相关的标签已自动打好)

修改下面的集群名字

sudo yum install -y jqexport AWS_REGION=$(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r '.region')echo "export AWS_REGION=${AWS_REGION}" | tee -a ~/.bash_profileaws configure set default.region ${AWS_REGION}export ACCOUNT_ID=$(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r '.accountId')echo "export ACCOUNT_ID=${ACCOUNT_ID}" | tee -a ~/.bash_profileexport CLUSTER_NAME="eks-demo2"

需要根据实际场景修改下面的实例类型

cat << EOF > ${CLUSTER_NAME}-cluster.yaml---apiVersion: eksctl.io/v1alpha5kind: ClusterConfigmetadata:name: ${CLUSTER_NAME} # EKS Cluster nameregion: ${AWS_REGION} # Region Code to place EKS Clusterversion: "1.26"tags:karpenter.sh/discovery: ${CLUSTER_NAME}vpc:cidr: "10.101.0.0/16" # CIDR of VPC for use in EKS Clusternat:gateway: Disable # Disable NAT Gatewaykarpenter:version: 'v0.30.0'createServiceAccount: true # default is falsedefaultInstanceProfile: 'KarpenterNodeInstanceProfile' # default is to use the IAM instance profile created by eksctlwithSpotInterruptionQueue: true # adds all required policies and rules for supporting Spot Interruption Queue, default is falseiam:withOIDC: true # requiredmanagedNodeGroups:- name: node-group # Name of node group in EKS ClusterinstanceType: t3.xlarge # Instance type for node groupdesiredCapacity: 2 # The number of worker node in EKS ClustervolumeSize: 100  # EBS Volume for worker node (unit: GiB)volumeType: 'gp3'maxPodsPerNode: 100privateNetworking: falsessh:enableSsm: trueiam:withAddonPolicies:imageBuilder: true # Add permission for Amazon ECRalbIngress: true  # Add permission for ALB IngresscloudWatch: true # Add permission for CloudWatchautoScaler: true # Add permission Auto Scalingebs: true # Add permission EBS CSI driverEOFeksctl create cluster -f ${CLUSTER_NAME}-cluster.yaml

3、安装应的LB Controller

获取ID,确认 OIDC 是否已安装

aws eks describe-cluster --name ${CLUSTER_NAME} --query "cluster.identity.oidc.issuer" --output text

输出如下文本:

https://oidc.eks.cn-northwest-1.amazonaws.com.cn/id/36A3B4C5ED098358C3C724DA105EBC86

若没有安装,则执行:

安装OIDC

eksctl utils associate-iam-oidc-provider \

    --region ${AWS_REGION} \

    --cluster ${CLUSTER_NAME} \

    --approve

创建一个 IAM policy

下载 Amazon Load Balancer Controller IAM policy,该策略允许负载均衡器代表您调用 Amazon API

curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.5.4/docs/install/iam_policy.json

使用上一步中下载的策略创建一个 IAM policy

aws iam create-policy \

    --policy-name AWSLoadBalancerControllerIAMPolicy_${CLUSTER_NAME}  \

    --policy-document file://iam_policy.json

            创建serviceaccount

eksctl create iamserviceaccount \

  --cluster=${CLUSTER_NAME} \

  --namespace=kube-system \

  --name=aws-load-balancer-controller \

  --role-name AmazonEKSLoadBalancerControllerRole_${CLUSTER_NAME} \

  --attach-policy-arn=arn:aws:iam::${ACCOUNT_ID}:policy/AWSLoadBalancerControllerIAMPolicy_${CLUSTER_NAME} \

  --approve

添加 eks-charts 存储库。

helm repo add eks https://aws.github.io/eks-charts

更新您的本地存储库,以确保您拥有最新的图表。

helm repo update

            进行安装

helm install aws-load-balancer-controller eks/aws-load-balancer-controller \-n kube-system \--set clusterName=${CLUSTER_NAME} \--set serviceAccount.create=false \--set serviceAccount.name=aws-load-balancer-controller \--set enableShield=false \--set enableWaf=false \--set enableWafv2=false \

验证控制器是否已安装。

kubectl get deployment -n kube-system aws-load-balancer-controller

输出示例如下。

NAME                           READY   UP-TO-DATE   AVAILABLE   AGE

aws-load-balancer-controller   2/2     2            2           84s

  • 安装EBS CSI驱动
eksctl create iamserviceaccount \--name ebs-csi-controller-sa \--namespace kube-system \--cluster ${CLUSTER_NAME} \--role-name AmazonEKS_EBS_CSI_DriverRole_${CLUSTER_NAME} \--role-only \--attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \--approveeksctl create addon --name aws-ebs-csi-driver --cluster ${CLUSTER_NAME} --service-account-role-arn  arn:aws:iam::${ACCOUNT_ID}:role/AmazonEKS_EBS_CSI_DriverRole_${CLUSTER_NAME} –force

4、安装kubesphere

4.1、最小化安装

  • 使用 kubectl 安装 KubeSphere,

以下命令仅用于默认的最小安装。

kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.1/kubesphere-installer.yamlkubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.1/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!           ###
    #####################################################
    Account: admin
    Password: P@88w0rd
    NOTES:1. After logging into the console, please check themonitoring status of service components inthe "Cluster Management". If any service is notready, please wait patiently until all componentsare ready.2. Please modify the default password after login.
    #####################################################
    https://kubesphere.io             2020-xx-xx xx:xx:xx

  • 访问 KubeSphere 控制台

现在已经安装了 KubeSphere,您可以按照以下步骤访问 KubeSphere 的 Web 控制台。

  • 查看 ks-console 服务。

kubectl get svc -n kubesphere-system

但是这种内网 IP 无法直接用于外部访问,需要通过NodePort来暴露external-ip

  • 执行kubectl edit ks-console将 service 类型NodePort 更改为LoadBalancer,并且增加三条注解,完成后保存文件。

kubectl edit svc ks-console -n kubesphere-system

    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ipservice.beta.kubernetes.io/aws-load-balancer-scheme: internet-facingservice.beta.kubernetes.io/aws-load-balancer-type: external

  • #
    ......
    spec:clusterIP: 10.100.160.240externalTrafficPolicy: Clusterports:- name: nginxnodePort: 30880port: 80protocol: TCPtargetPort: 8000selector:app: ks-consoletier: frontendversion: v3.0.0sessionAffinity: Nonetype: LoadBalancer

  • 执行kubectl get svc -n kubesphere-system获取您的 EXTERNAL-IP。
  • # kubectl get svc -n kubesphere-system
    NAME                    TYPE           CLUSTER-IP       EXTERNAL-IP                                                               PORT(S)        AGE
    ks-apiserver            ClusterIP      10.100.108.212   <none>                                                                    80/TCP         6m28s
    ks-console              LoadBalancer   10.100.160.240   ad107c54ee456744c91c8da0b9321f2c-1235661477.ap-east-1.elb.amazonaws.com   80:30880/TCP   6m25s
    ks-controller-manager   ClusterIP      10.100.126.96    <none>                                                                    443/TCP        6m28s
    openldap                ClusterIP      None             <none>                                                                    389/TCP        6m54s
    redis                   ClusterIP      10.100.218.34    <none>                                                                    6379/TCP       6m59s

  • 使用 EKS 生成的 external-ip 访问 KubeSphere 的 Web 控制台。

注:这里在自动创建 aws 的 NLB,需要几分钟后,才能通过个external-ip正常访问

  • 使用默认帐户和密码(admin/P@88w0rd)登录控制台

4.2、网关(Ingress)设置

针对k8s的外网暴露,AWS做了优化,让ALB直接路由到k8sservice,如下图所示。此种方式性能更优,更稳定,但不支持跨域的相关配置 (跨域的配置通常在nginx或者应用程序内部实现)。

为了实现跨域名配置,采用如下图的做法,LB通过Nginx Ingressk路由到服务。如果想 100 兼容k8s的特性,建议此种办法做为实现。

 

 Kubesphere中进行网关配置 (2到3步完成配置)

进入kubeshpere。

1、启动用网设置,如下图所示。

2.配置网关

    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip

    service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing

    service.beta.kubernetes.io/aws-load-balancer-type: external

注:复制时,去掉“:”号

3. 网关设置完成后,会发现在服务中会出一个router的服务,并且具有外网访问地址(NLB的地址),拷贝这里的外网地址作为,与域名绑定,做CName映射。(测试阶段,也可以使用本地hosts配置)

4、后续可以正常使用应用网关配置 路由。涉及的SSL证书也在这里上传和创建。

5、部署一个示例应用

创建deployment

后面继续下一步,一路保持默认设置,直到创建按钮,点击创建。

创建service

后面的操作,保持默认设置。

创建应用路由(Ingress)

后面一路保持默认设置。

在本地电脑配置hosts后,访问如下:

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

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

相关文章

[MAUI]在.NET MAUI中调用拨号界面

在.NET MAUI中调用拨号界面 前置要求: Visual Studio 2022 安装包“.NET Multi-platform App UI 开发” 参考文档: 电话拨号程序 新建一个MAUI项目 在解决方案资源管理器窗口中找到Platforms/Android/AndroidManifest.xml在AndroidManifest.xml中添加下文中…块如下:<?xml…

打包机接流水线使用

常规的打包机机型分为半自动和全自动两种。 半自动捆扎机一般用于单机操作&#xff0c;全自动捆扎机常用于后包装线&#xff0c;与其他包装机械形成自动包装线。那么全自动打包机在包装流水线上有哪些应用呢&#xff1f; 1.配合其他包装设备进行捆扎打包。这是打包机比较常见的…

junit单元测试:使用@ParameterizedTest 和 @CsvSource注解简化单元测试方法

在平常的开发工作中&#xff0c;我们经常需要写单元测试。比如&#xff0c;我们有一个校验接口&#xff0c;可能会返回多种错误信息。我们可以针对这个接口&#xff0c;写多个单元测试方法&#xff0c;然后将其场景覆盖全。那么&#xff0c;怎么才能写一个测试方法&#xff0c;…

如何在Linux上部署1Panel面板并远程访问内网Web端管理界面

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器&#xff0c;包括主机监控、…

SSH 无密登录配置

1)配置 ssh (1)基本语法 ssh 另一台电脑的 IP 地址 (2)ssh 连接时出现 Host key verification failed 的解决方法 [yuxuan@yuxuan102 ~]$ ssh yuxuan103 ➢ 如果出现如下内容 Are you sure you want to continue connecting (yes/no)? ➢ 输入 yes,并回车 (3)退回到 …

Windows系统如何使用VNC远程连接Deepin桌面【内网穿透】

文章目录 1. 安装x11vnc2. 本地远程连接测试3. Deepin安装Cpolar4. 配置公网远程地址5. 公网远程连接Deepin桌面6. 固定连接公网地址7. 固定公网地址连接测试 x11vnc是一种在Linux系统中实现远程桌面控制的工具&#xff0c;它的原理是通过X Window系统的协议来实现远程桌面的展…

使用openssl 生成pfx格式证书时报错:unable to load certificates

问题现象包如下&#xff1a; 之前在centos上使用openssl部署证书服务器以及颁发证书的时候遇到的问题&#xff0c;在进行个人证书生成之后需要形成pfx格式证书&#xff0c;结果过程中报错了。网上类似资料比较少&#xff0c;做个记录。 生成pfx格式证书的命令&#xff1a; o…

Spring依赖注入的魔法:深入DI的实现原理【beans 五】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Spring依赖注入的魔法&#xff1a;深入DI的实现原理【beans 五】 前言DI的基本概念基本概念&#xff1a;为什么使用依赖注入&#xff1a; 构造器注入构造器注入的基本概念&#xff1a;示例&#xff1a…

【linux笔记1】

目录 【linux笔记1】文件内容的理解用户管理用户管理命令添加用户切换用户修改用户信息删除用户 用户组 【linux笔记1】 文件内容的理解 etc文件夹&#xff1a;etc是拉丁语"et cetera"的缩写&#xff0c;意思是“和其他的”或“等等”。在linux系统中&#xff0c;“…

Unity报错:InvalidOperationException: Insecure connection not allowed的解决方法

问题描述 在导入Steam VR 插件后报错&#xff1a; InvalidOperationException: Insecure connection not allowed UnityEngine.Networking.UnityWebRequest.SendWebRequest () (at <4139bb31c03640e7b650db6ec39d5754>:0) UnityEngine.WWW..ctor (System.String url) (…

Halcon计算最小外接矩形Smallest_rectangle2

Halcon计算最小外接矩形Smallest_rectangle2 该算子用于求最小外接矩形。该算子的原型如下&#xff1a; smallest _rectangle2 (Regions : : : Row, Column, Phi, Lengthl, Length2)其各参数的含义如下。 参数1&#xff1a;Regions 表示输入的区域。 参数2和3&#xff1a;Row…

计算机Java项目|基于Springboot实现患者管理系统

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 文末获取源码 项目编号&#xff1a;KS-032…