资讯专栏INFORMATION COLUMN

【k8s】在AWS EKS部署并通过ALB访问k8s Dashboard保姆级教程

番茄西红柿 / 3513人阅读

摘要:本教程适用范围本教程适用范围在上使用服务部署,并通过访问集群计算节点采用托管,并使用启动模板。到此,完成集群的搭建,部署,部署,并实现了外网访问。

本教程适用范围

  • 在AWS上使用EKS服务部署k8s Dashboard,并通过ALB访问
  • EKS集群计算节点采用托管EC2,并使用启动模板。
  • 使用AWS海外账号,us-west-2区域
  • 使用账号默认vpc(172.31.0.0/16)和子网
  • 使用awscli创建而不是eksctl
  • 对AWS有一定了解,不适用于AWS小白
  • 文中代码,汉字部分需要修改成自己的信息

涉及到知识点

  • AWS服务:EC2,IAM,EKS,VPC,ACM,ALB,SecurityGroup, awscli, eksctl
  • K8s: Service, Pod, Ingress, Node

必备条件

  • 有一台用于操作的服务器(本教程使用ec2: ubuntu 18,EKS默认将集群最大权限赋予创建集群的用户,所以不建议使用控制台创建集群,尤其是对于SSO登录用户)
  • 拥有AWS administrator权限(本教程将权限赋予服务器)
  • 拥有域名管理权限(能够创建并解析域名)
  • 拥有域名证书(本教程使用ACM证书)

详细步骤

安装kubectl,awscli

# install kubectlwget https://dl.k8s.io/release/v1.22.0/bin/linux/amd64/kubectlchmod 755 kubectlmv kubectl /usr/bin# install awsclipip3 install awscli# install eksctlwget https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gztar -xvf eksctl_Linux_amd64.tar.gzchmod 755 eksctlmv eksctl /usr/bin

输入如下表示安装完成

在EKS上启动一个集群

使用aws控制台,创建eks-cluster角色,策略如下:

创建eks-cluster安全组

将需要使用的子网添加如下标签(有了此标签,才能使用alb)

创建集群

aws eks create-cluster /   --region us-west-2 /   --name zhenglisai /   --kubernetes-version 1.21 /   --role-arn arn:aws:iam::你的账号ID:role/eks-cluster /   --resources-vpc-config subnetIds=subnet-cf36ca92,subnet-75866b0d,subnet-19ef9b32,securityGroupIds=sg-0daa7eabdc1f845fd

从控制台可以看到集群创建中

查看集群状态

创建集群计算节点实例启动模板

在控制台EC2中创建启动模板,使用镜像AMI:ami-0cb182e3037115aa0,根据自己需要选择实例类型,安全组,服务器密钥对,启动模板中不要设置网络接口和IAM 实例配置文件,最重要的一步是在启动模板最后的用户数据中填写:

脚本后参数为EKS集群名

创建集群计算节点实例角色

创建集群计算节点组

aws eks create-nodegroup /  --cluster-name zhenglisai /  --nodegroup-name zls-node /  --scaling-config minSize=1,maxSize=3,desiredSize=2 /  --subnets subnet-cf36ca92 subnet-75866b0d subnet-19ef9b32 /  --node-role arn:aws:iam::你的账号ID:role/eks-demo /  --launch-template version=4,id=lt-020949e5e604df89c

配置kubectl以访问EKS

# --name 后为集群名aws eks --region us-west-2 update-kubeconfig --name zhenglisai

配置完成后,访问EKS集群

表示完成配置,可以访问集群了。

查看所有正在运行的pod

可以看到,有两个pod没有起来,我们看一下为什么没有起来
执行

kubectl get pods coredns-85d5b4454c-rkccb --namespace kube-system --output yaml

看输出是没有可用的计算节点,说明我们上一步创建的计算节点还没运行起来,查看可用节点,确实没有

等大约两分钟以后,再次执行,可以看到实例已经注册到集群了

再次查看pod状态,都已经运行起来了。

安装Metric Server

这个东西主要用于集群的弹性扩容指标和dashboard指标,不是用于监控资源!
执行部署

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

输出

验证部署是否成功

部署Dashboard

执行

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.5/aio/deploy/recommended.yaml

默认情况下,Kubernetes 控制面板用户的权限是有限的,我们创建一个超级用户

创建一个名为eks-admin.yaml的文件,内容为

apiVersion: v1kind: ServiceAccountmetadata:  name: eks-admin  namespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata:  name: eks-adminroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: cluster-adminsubjects:- kind: ServiceAccount  name: eks-admin  namespace: kube-system

执行此文件

kubectl apply -f eks-admin.yaml

获取Dashboard的token令牌,用于访问Dashboard

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep eks-admin | awk {print $1})

到此为止,已完成集群的搭建和Dashboard的部署,但是此时只能在集群内部访问Dashboard,无法通过外网访问。下一步将Dashboard接口暴露给ALB

安装AWS负载均衡器控制器到EKS集群

下载IAM策略

wget  https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.2.0/docs/install/iam_policy.json

创建策略

aws iam create-policy /    --policy-name AWSLoadBalancerControllerIAMPolicy /    --policy-document file://iam_policy.json

创建集群IAM OIDC身份提供商

eksctl utils associate-iam-oidc-provider --cluster zhenglisai --approve

创建k8s账户并关联策略

eksctl create iamserviceaccount /  --cluster=zhenglisai /  --namespace=kube-system /  --name=aws-load-balancer-controller /  --attach-policy-arn=arn:aws:iam::你的账号ID:policy/AWSLoadBalancerControllerIAMPolicy /  --override-existing-serviceaccounts /  --approve    

安装负载均衡器控制器

kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller/crds?ref=master"helm repo add eks https://aws.github.io/eks-chartshelm repo updatehelm upgrade -i aws-load-balancer-controller eks/aws-load-balancer-controller /  --set clusterName=zhenglisai /  --set serviceAccount.create=false /  --set serviceAccount.name=aws-load-balancer-controller /  -n kube-system

验证安装是否完成

部署Ingress

创建部署文件,dashboard-ingress.yaml,内容如下(需要修改汉字部分内容):

---apiVersion: networking.k8s.io/v1beta1kind: Ingressmetadata:  namespace: kubernetes-dashboard  name: ingress-dashboard  annotations:    alb.ingress.kubernetes.io/load-balancer-name: zhenglisai    alb.ingress.kubernetes.io/backend-protocol: HTTPS    kubernetes.io/ingress.class: alb    alb.ingress.kubernetes.io/scheme: internet-facing    alb.ingress.kubernetes.io/target-type: ip    alb.ingress.kubernetes.io/listen-ports: [{"HTTPS":443}]    alb.ingress.kubernetes.io/certificate-arn: 你证书的ARN,在ACM中查看spec:  rules:    - host: 你的域名      http:        paths:        - path: /*          backend:            serviceName: kubernetes-dashboard            servicePort: 443

执行文件,创建ingress

kubectl apply -f dashboard-ingress.yaml

去域名解析网站,创建域名,并指向ALB的DNS

使用https协议访问域名

输入上一章节中获取Dashboard的token令牌即可登录

到此,完成EKS集群的搭建,Dashobard部署,Ingress部署,并实现了外网访问Dashboard。

原创作者:郑立赛


邮箱:zhenglisai@qq.com


欢迎关注我们的公众号获取最新文章:运维自动化开发


公众号
公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/125371.html

相关文章

  • 公有云托管K8s服务百花齐放,企业如何统一纳管、便捷管理?

    摘要:正在美国拉斯维加斯举行的大会上,亚马逊新发布的一系列计算及存储相关的功能中,最轰动容器领域,无非是一种无需管理服务器即可运行容器的服务,以及,一个完全托管的服务。的发布,意味着国际范围内三大最主要的云服务商和,已全部提供托管的服务。 正在美国拉斯维加斯举行的AWS re:Invent 2017大会上,亚马逊新发布的一系列计算及存储相关的功能中,最轰动容器领域,无非是AWS Fargat...

    AdolphLWQ 评论0 收藏0
  • 公有云托管K8s服务百花齐放,企业如何统一纳管、便捷管理?

    摘要:正在美国拉斯维加斯举行的大会上,亚马逊新发布的一系列计算及存储相关的功能中,最轰动容器领域,无非是一种无需管理服务器即可运行容器的服务,以及,一个完全托管的服务。的发布,意味着国际范围内三大最主要的云服务商和,已全部提供托管的服务。 正在美国拉斯维加斯举行的AWS re:Invent 2017大会上,亚马逊新发布的一系列计算及存储相关的功能中,最轰动容器领域,无非是AWS Fargat...

    golden_hamster 评论0 收藏0
  • Rancher Kubernetes Engine(RKE)正式发布:闪电般的Kubernetes安

    摘要:现在,越来越多的开发人员不再使用传统的应用程序服务器,而是开始使用作为分布式应用程序平台开发人员使用作为后端数据库。而我们已注意到,将诸如之类的轻量级安装程序嵌入到分布式应用程序中,满足了很多来自用户的兴趣与需求。 作为Rancher 2.0的重要组件,Rancher Kubernetes Engine(RKE)现已正式全面发布!这是Rancher Labs推出的新的开源项目,一个极致...

    canopus4u 评论0 收藏0
  • Rancher Kubernetes Engine(RKE)正式发布:闪电般的Kubernetes安

    摘要:现在,越来越多的开发人员不再使用传统的应用程序服务器,而是开始使用作为分布式应用程序平台开发人员使用作为后端数据库。而我们已注意到,将诸如之类的轻量级安装程序嵌入到分布式应用程序中,满足了很多来自用户的兴趣与需求。 作为Rancher 2.0的重要组件,Rancher Kubernetes Engine(RKE)现已正式全面发布!这是Rancher Labs推出的新的开源项目,一个极致...

    Anchorer 评论0 收藏0
  • k8saws--add-ebs-tags-controller为ebs增加tag

    摘要:但是可惜的是,当中的块存储并不支持这样的方式。都是监听指定资源,然后分别对和和三种事件,做出处理。部署具体部署的如下注意,加入集群中不存在角色,可以自行进行授权。例如创建成果以后,去的查看如下 前言 在使用aws的托管k8s--eks过程中,避免不了使用aws的LB和块存储。AWS公有云所有的资源都可以自定义tags,这样的好处就是可以根据tag具体含义来对资源进行不同维度的审计和统计...

    chanjarster 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<