AWS EKS1.26+kubesphere3.4.1

2024-01-06 23:36
文章标签 aws kubesphere3.4 eks1.26

本文主要是介绍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后,访问如下:

这篇关于AWS EKS1.26+kubesphere3.4.1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/577996

相关文章

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

一键云迁移:利用VMware PowerCLI将OVA虚拟机顺利迁移到AWS

哈喽大家好,欢迎来到虚拟化时代君(XNHCYL)。 “   大家好,我是虚拟化时代君,一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…(每天更新不间断,福利不见不散) 第一章、小叙         众所周知,在vSphere6.5/6.7版本后,已经无法通过Web Console导出虚拟机为OVA(单个文件),vSphere 7和8只能通过Po

如何进行 AWS 云监控

什么是 AWS? Amazon Web Services(AWS)是 Amazon 提供的一个全面、广泛使用的云计算平台。它提供广泛的云服务,包括计算能力、存储选项、网络功能、数据库、分析、机器学习、人工智能、物联网和安全。 使用 AWS 有哪些好处? 使用 AWS 可为企业提供可扩展性、成本效益、可靠性、安全性、灵活性、全球覆盖和创新等。凭借对计算资源的按需访问、即用即付定价、全球基础设施

AWS was not able to validate the provided access credentials

AWS同步监控报错 botocore.exceptions.ClientError: An error occurred (AuthFailure) when calling the DescribeInstances operation: AWS was not able to validate the provided access credentials 原因 计算机时间不同步

golang中使用aws-sdk-go-v2

1.aws-sdk-go-v2常用api 1.引入所需包     import ("context""fmt""log""os""path/filepath""sync""time""github.com/aws/aws-sdk-go-v2/aws""github.com/aws/aws-sdk-go-v2/config""github.com/aws/aws-sdk-go-v2/crede

AWS SES服务 Golang接入教程(排坑版)

因为刚来看的时候 也迷迷糊糊的 所以 先讲概念 再上代码 一 基础设置 这里需要完成两个最基础的设置任务 1 是验证至少一个收件电子邮箱 2 【很关键】是验证发送域。即身份里的域类型的身份。(可以理解为配置你的域名邮箱服务器(SMPT)为亚马逊提供的服务器)。点击“待验证”可以看到 一份 DNS 解析记录,将此份记录逐个添加到你域名的DNS服务器。 如下图(我用的是Cloudflare)

[AWS云]EC2扩容磁盘之linux系统

背景: ec2的磁盘存储满了,需要扩容。 1.控制台修改存储大小: 2. 3.登录服务器,刷新磁盘: 云盘扩容growpart /dev/vdb 1对ext4扩容命令resize2fs /dev/vdb1对xfs扩容命令xfs_growfs /dev/vdc1

亚马逊云免费服务器安装教程AWS微软系统教程含Tomcat,mysql,Tomcat去项目名,端口名!

一直想弄个云服务器耍耍,奈何费用较高,又是个人,所以一直没弄! 昨天偶然得知有免费云服务器,搜索到了亚马逊云 aws.amazon.com 闲话少说! 亚马逊云服务器安装教程windows系统 步骤如下: 1.去aws.amazon.com注册账号,这个不用多说 2.登录进去后,在我的账户里面选择管理控制台 3.然后选择启动虚拟机 4.选择对应的操作系统,鄙人初始linu

如何从 AWS CodeCommit 迁移到极狐GitLab?

极狐GitLab 是 GitLab 在中国的发行版,可以私有化部署,对中文的支持非常友好,是专为中国程序员和企业推出的企业级一体化 DevOps 平台,一键就能安装成功。安装详情可以查看官网指南。 本文将分享如何从 AWS CodeCommit 服务无缝迁移到极狐GitLab,并且使用极狐GitLab 的一体化 DevSecOps 平台功能来进行软件研发。 2024 年 7 月 25 日,

AWS EC2实例类型与业务选型的精准匹配

在云计算领域,AWS(亚马逊云服务)的EC2(Elastic Compute Cloud)凭借其多样化的实例类型,我们九河云有多年上云经验,一起探讨不同业务场景使用不同的计算资源。选择合适的EC2实例类型,对于确保业务性能、优化成本以及实现资源的最优配置至关重要。 一、理解EC2实例类型 AWS EC2提供了多种实例类型,包括通用型(如T系列和M系列)、计算优化型(C系列)、内存优化型(R系列