我在 CircleCI 中部署部署时遇到错误。请找到下面的配置文件。
运行 kubectl CLI 时,我们在kubectl和aws-cli
.
version: 2.1
orbs:
aws-ecr: circleci/aws-ecr@6.3.0
docker: circleci/docker@0.5.18
rollbar: rollbar/deploy@1.0.1
kubernetes: circleci/kubernetes@1.3.0
deploy:
version: 2.1
orbs:
aws-eks: circleci/aws-eks@1.0.0
kubernetes: circleci/kubernetes@1.3.0
executors:
default:
description: |
The version of the circleci/buildpack-deps Docker container to use
when running commands.
parameters:
buildpack-tag:
type: string
default: buster
docker:
- image: circleci/buildpack-deps:<<parameters.buildpack-tag>>
description: |
A collection of tools to deploy changes to AWS EKS in a declarative
manner where all changes to templates are checked into …
Run Code Online (Sandbox Code Playgroud) 我正在为我的 eks 环境设置我的新 Mac。安装 kubectl 后,aws-iam-authenticator 和 kubeconfig 文件放置在默认位置。我运行了命令 kubectl 命令并在命令块中收到了下面提到的错误。
我的集群使用 v1alpha1 客户端身份验证 api 版本,所以基本上我想在我的 Mac 中使用相同的版本。
我也尝试了最新版本(1.23.0)的 kubectl,仍然是同样的错误。然而,当我尝试使用 aws-iam-authenticator (版本 0.5.5)时,我无法下载较低版本。
有人可以帮我解决吗?
% kubectl version
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0", GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38", GitTreeState:"clean", BuildDate:"2020-12-08T17:59:43Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"darwin/amd64"}
Unable to connect to the server: getting credentials: exec plugin is configured to use API version client.authentication.k8s.io/v1alpha1, plugin returned version client.authentication.k8s.io/v1beta1
Run Code Online (Sandbox Code Playgroud)
谢谢和问候, 萨拉瓦娜
AWS 支持服务账户的 IAM 角色 (IRSA),允许集群操作员将 AWS IAM 角色映射到 Kubernetes 服务账户。
为此,必须在 EKS 集群中创建一个iamserviceaccount :
eksctl create iamserviceaccount \
--name <AUTOSCALER_NAME> \
--namespace kube-system \
--cluster <CLUSTER_NAME> \
--attach-policy-arn <POLICY_ARN> \
--approve \
--override-existing-serviceaccounts
Run Code Online (Sandbox Code Playgroud)
问题是我不想使用上面的eksctl
命令,因为我想使用terraform
.
eksctl 命令除了创建服务帐户之外还执行其他操作吗?如果它只创建一个服务帐户,那么YAML
它的代表是什么?
amazon-web-services amazon-iam kubernetes terraform amazon-eks
不知道这是 AWS 的错误还是其他错误。我创建了一个 IAM 用户并为其提供了完整的管理策略。然后,我使用该用户通过 CLI 创建 EKS 集群,但是当我使用root 用户eksctl
登录 AWS 控制台时,在尝试访问集群节点时出现以下错误。
您当前的用户或角色无权访问此 EKS 集群上的 Kubernetes 对象\n这可能是由于当前用户或角色没有描述集群资源的 Kubernetes RBAC 权限,或者在集群中没有条目\xe2\x80\x99s身份验证配置映射。
\n我有这些问题
\nAWS本身不建议为root用户创建访问密钥并将其用于可编程访问,所以我现在很困惑。有人帮忙
\n到目前为止我看到的所有问题以及此处文档的链接都在讨论在 AWS IAM 中创建的用户或角色,而不是根用户。
\n我创建了 eks 集群,尝试将其与本地 cli 连接,为此,我安装了 aws-cli 并提供了正确的“aws configure”凭据。我用来连接 aws 的用户具有 EKS 相关策略。我仍然收到以下错误...
E0209 21:09:44.893284 2465691 memcache.go:238] couldn't get current server API group list: the server has asked for the client to provide credentials
E0209 21:09:45.571635 2465691 memcache.go:238] couldn't get current server API group list: the server has asked for the client to provide credentials
E0209 21:09:46.380542 2465691 memcache.go:238] couldn't get current server API group list: the server has asked for the client to provide credentials
E0209 21:09:47.105407 2465691 memcache.go:238] couldn't …
Run Code Online (Sandbox Code Playgroud) 我在一个 ec2 实例上尝试创建我的集群。我已经安装了 kubectl,这是我的服务和工作负载 yaml 文件
服务.yaml
apiVersion: v1
kind: Service
metadata:
name: stockapi-webapp
spec:
selector:
app: stockapi
ports:
- name: http
port: 80
type: LoadBalancer
Run Code Online (Sandbox Code Playgroud)
工作负载.yaml
apiVersion: v1
kind: Deployment
metadata:
name: stockapi
spec:
selector:
matchLabels:
app: stockapi
replicas: 1
template: # template for the pods
metadata:
labels:
app: stockapi
spec:
containers:
- name: stock-api
image: public.ecr.aws/u1c1h9j4/stock-api:latest
Run Code Online (Sandbox Code Playgroud)
当我尝试跑步时
kubectl apply -f workloads.yaml
Run Code Online (Sandbox Code Playgroud)
我将此视为错误
The connection to the server localhost:8080 was refused - did you specify the right host or …
Run Code Online (Sandbox Code Playgroud) 我们配置了 EKS 设置,其中使用基于云原生 Buildpacks 的 Tekton Pipeline,但我们PipelineRuns
在没有获取 Pod 资源的情况下永远陷入困境并处于等待状态。我们创建了一个 PersistentVolumeClaim,如下所示:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: buildpacks-source-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
Run Code Online (Sandbox Code Playgroud)
创建后查看此 PVC 的事件,发现以下事件表明我们的 EKS 设置出现问题:
该命令kubectl describe pvc buildpacks-source-pvc
给出以下事件消息:
Name: buildpacks-source-pvc
Namespace: default
StorageClass: gp2
Status: Pending
Volume:
Labels: <none>
Annotations: volume.beta.kubernetes.io/storage-provisioner: ebs.csi.aws.com
volume.kubernetes.io/selected-node: ip-999-99-99-99.eu-central-1.compute.internal
volume.kubernetes.io/storage-provisioner: ebs.csi.aws.com
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Used By: affinity-assistant-0b3d266b91-0
affinity-assistant-53a7c08baf-0
affinity-assistant-a375f28de3-0
affinity-assistant-e8cb1a6e15-0
buildpacks-test-pipeline-run-9rz4l-fetch-repository-pod
Events:
Type Reason Age From Message
---- ------ …
Run Code Online (Sandbox Code Playgroud) amazon-ebs amazon-web-services kubernetes persistent-volumes amazon-eks
我遇到了AWS提供的KOPS以及他们的其他Kubernetes服务EKS.这两种产品都允许安装Kubernetes集群.但是,我想知道为什么人们会选择EKS超过KOPS,反之亦然,如果之前没有运行任何一个.
这个问题并没有问哪个更好,而是要求进行比较.
我创建了EKS Cluster.我在ECR中也有码头图像.我不知道如何在YAML中使用pod定义中的docker镜像.
是否需要秘密提供凭证?或者EKS IAM角色应该获得ECR的许可吗?
权限的任何更改都必须为ECR中的Image做?
我搜索了很多网站和文章,但没有找到完美的答案。我正在使用eks 版本 1.18。我可以看到一些 Pod 被“驱逐”,但是当尝试检查节点时,我可以看到错误“(从类似事件组合):无法垃圾收集所需数量的图像。想要释放 6283487641 字节,但释放了0 字节”。
有什么办法可以找到失败的原因吗?或者如何解决这个问题?任何建议都是非常受欢迎的。
我可以看到磁盘“覆盖”文件系统在几个小时内几乎已满。我不确定发生了什么事。下面的屏幕截图显示了我的内存利用率。
amazon-eks ×10
kubernetes ×8
amazon-iam ×2
eksctl ×2
amazon-ebs ×1
amazon-ec2 ×1
aws-cli ×1
aws-config ×1
aws-ecr ×1
aws-eks ×1
circleci ×1
kops ×1
kubectl ×1
nodes ×1
plugins ×1
terraform ×1