我在EKS上创建了一个kubernetes集群。我使用eksctl create cluster创建集群。我能够胜任一切。
但是,我的同事创建了另一个集群,我想知道如何生成/获取cobeconfigs,以便可以指向同事创建的集群。
答案 0 :(得分:3)
有两种获取kubeconfig的方法。
aws eks update-kubeconfig --name <clustername> --region <region>
eksctl utils write-kubeconfig --cluster=<clustername>
假设您在同一帐户上拥有EKS并且对您可见。
获得kubeconfig后,如果有访问权限,则可以开始使用kubectl。
如果您没有访问权限,则需要要求所有者将您的userID权限授予集群。
列出了完整的详细信息here
答案 1 :(得分:0)
如果您已禁用集群Kubernetes API服务器端点的公共访问,则只能从VPC或connected network中访问API服务器。以下是访问Kubernetes API服务器端点的几种可能方法:
已连接的网络 –使用AWS transit gateway或其他connectivity选项将网络连接到VPC,然后在连接的网络中使用计算机。您必须确保您的Amazon EKS控制平面安全组包含允许来自已连接网络的端口443上的入口流量的规则。
Amazon EC2堡垒主机 –您可以将Amazon EC2实例启动到群集的VPC中的公共子网中,然后通过SSH登录到该实例中以运行kubectl
命令。有关更多信息,请参见Linux bastion hosts on AWS。您必须确保您的Amazon EKS控制平面安全组包含允许堡垒主机从端口443进入流量的规则。有关更多信息,请参见Amazon EKS security group considerations。
为堡垒主机配置kubectl
时,请确保使用已经映射到集群的RBAC配置的AWS凭证,或者将堡垒要使用的IAM用户或角色添加到RBAC配置中,然后再进行操作删除端点的公共访问权限。有关更多信息,请参见Managing users or IAM roles for your cluster和Unauthorized or access denied (kubectl)。
AWS Cloud9 IDE – AWS Cloud9是基于云的集成开发环境(IDE),可让您仅使用浏览器即可编写,运行和调试代码。您可以在集群的VPC中创建一个AWS Cloud9 IDE,并使用IDE与集群进行通信。有关更多信息,请参见Creating an environment in AWS Cloud9。您必须确保您的Amazon EKS控制平面安全组包含允许来自IDE安全组的端口443上的入口流量的规则。有关更多信息,请参见Amazon EKS security group considerations。
在为AWS Cloud9 IDE配置kubectl
时,请确保使用已经映射到集群的RBAC配置的AWS凭证,或者在添加之前将IDE使用的IAM用户或角色添加到RBAC配置中您删除端点公共访问权限。有关更多信息,请参见Managing users or IAM roles for your cluster和Unauthorized or access denied (kubectl)。
在这里看看:eks-endpoints-access。
一个可能的选择是使用多个单一租户Amazon EKS集群。通过这种策略,每个租户都可以在共享的AWS账户内使用自己的Kubernetes集群,或者在组织内为大型企业使用专用账户。 部署集群后,您可能需要概览所有部署的集群以监视每个租户,确保我们正在运行最新版本的EKS控制平面并大规模运行。 Rancher是一种流行的开源工具,用于管理多个Kubernetes集群,请确保查看this article on the Open Source blog以获得有关如何部署和使用它的详细信息。
如果您的同事所在的群集位于同一VPC中,建议您使用AWS App Mesh。 App Mesh是一种服务网格,可让您控制和监视跨部署在同一VPC中的两个群集的服务。
架构:
为了成功进行基础部署:
kubectl
版或更高版本的1.11
installed。jq
installed。aws-iam-authenticator
installed brew tap weaveworks/tap
和brew install weaveworks/tap/eksctl
的macOS上安装eksctl,并确保它至少在版本0.1.26
上。请注意,本演练假设您可以在us-east-1
地区中进行操作。
假设两个集群都正常工作
分别根据KUBECONFIG
的输出更新每个集群上的eksctl
环境变量:
在相应的标签中运行以下内容。
export KUBECONFIG=~/.kube/eksctl/clusters/first-cluster
export KUBECONFIG=~/.kube/eksctl/clusters/second-cluster
您现在已经设置了两个集群,并将kubectl指向相应的集群。
现在是时候部署App Mesh自定义组件了
要在吊舱创建时自动注入App Mesh组件和代理,您需要在集群上创建一些自定义资源。为此使用 头盔 。在两个群集上均安装分till器,然后使用helm在两个群集上运行以下命令。
下载App Mesh存储库
>> git clone https://github.com/aws/aws-app-mesh-examples (https://github.com/aws/aws-app-mesh-examples).git
>> cd aws-app-mesh-examples/walkthroughs/howto-k8s-cross-cluster
安装头盔
>>brew install kubernetes-helm
安装耕作机
使用头盔需要在群集上安装一个服务器端组件,名为tiller。请按照documentation中的说明在两个群集上安装分till。
验证分er安装
>>kubectl get po -n kube-system | grep -i tiller
tiller-deploy-6d65d78679-whwzn 1/1 Running 0 5h35m
安装App Mesh组件
运行以下命令集以安装App Mesh控制器和Injector组件。
helm repo add eks https://aws.github.io/eks-charts
kubectl create ns appmesh-system
kubectl apply -f https://raw.githubusercontent.com/aws/eks-charts/master/stable/appmesh-controller/crds/crds.yaml
helm upgrade -i appmesh-controller eks/appmesh-controller --namespace appmesh-system
helm upgrade -i appmesh-inject eks/appmesh-inject --namespace appmesh-system --set mesh.create=true --set mesh.name=global
您现在可以将示例前台应用程序和colorapp应用程序以及将同时覆盖两个群集的App Mesh一起部署到各个群集。
您应该位于walkthrough / howto-k8s-cross-cluster文件夹中,所有命令都将从该位置运行。
您的帐户ID:
export AWS_ACCOUNT_ID=<your_account_id>
export AWS_DEFAULT_REGION=us-east-1
export ENVOY_IMAGE=...
VPC_ID
环境变量设置为启动Kubernetes Pod的VPC。 VPC将用于设置aws eks describe-cluster
。有关为何需要AWS Cloud Map PrivateDnsNamespace的原因,请参见下文。export VPC_ID=...
export CLUSTER1=first-cluster
export CLUSTER2=second-cluster
部署
./deploy.sh
最后记住要验证部署。 您可以在这里找到更多信息:app-mesh-eks。
答案 2 :(得分:0)
您可以获得aws IAM访问密钥和ID,这些ID和ID有权访问两个群集的群集,并设置两个aws配置文件,并使用以下命令访问群集:
aws eks update-kubeconfig --name群集名称--profile aws配置文件名称
上面的命令将在kubeconfig文件中添加访问详细信息,并设置当前上下文。 之后,您可以使用kubectl命令切换上下文:
kubectl配置使用上下文arn-nameofeks-cluster
先决条件: