我创建了EKS Cluster.我在ECR中也有码头图像.我不知道如何在YAML中使用pod定义中的docker镜像.
是否需要秘密提供凭证?或者EKS IAM角色应该获得ECR的许可吗?
权限的任何更改都必须为ECR中的Image做?
让我描述一下我的情况:
当我在带有1个附加卷的Kubernetes上创建部署时,一切工作正常。当我创建相同的部署,但附加了第二个卷(总计:2个卷)时,吊舱因错误而卡在“待定”上:
pod has unbound PersistentVolumeClaims (repeated 2 times)
0/2 nodes are available: 2 node(s) had no available volume zone.
Run Code Online (Sandbox Code Playgroud)
已检查是否在正确的可用区中创建了卷。
我有一个使用2个节点的Amazon EKS设置的集群。我有以下默认存储类:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: gp2
annotations:
storageclass.kubernetes.io/is-default-class: "true"
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
reclaimPolicy: Retain
mountOptions:
- debug
Run Code Online (Sandbox Code Playgroud)
我有一个mongodb部署,它需要两个卷,一个卷安装在/data/db
文件夹上,另一个卷安装在我需要的某个随机目录中。这是用于创建三个组件的最小Yaml(我故意评论了几行):
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
namespace: my-project
creationTimestamp: null
labels:
io.kompose.service: my-project-db-claim0
name: my-project-db-claim0
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
namespace: my-project
creationTimestamp: …
Run Code Online (Sandbox Code Playgroud) 问题
在ContainerCreating
滚动更新消息后,600个pod部署中的多个pod卡在其中:
Failed create pod sandbox: rpc error: code = Unknown desc = NetworkPlugin cni failed to set up pod <pod name> network: add cmd: failed to assign an IP address to container
我尝试过的
maxIPAddresses, value: 759.000000
ipamdActionInProgress, value: 1.000000
addReqCount, value: 16093.000000
awsAPILatency, value: 564.000000
delReqCount, value: 32337.000000
eniMaxAvailable, value: 69.000000
assignIPAddresses, value: 558.000000
totalIPAddresses, value: 682.000000
eniAllocated, value: 69.000000
Run Code Online (Sandbox Code Playgroud)
问题
CNI指标输出是否表明存在问题?好像有足够的IP。
我还能尝试调试什么?
我确实尝试过kubectl 描述节点masterNodeName,它给出的输出为:
Name: ip-172-28-3-142
Roles: master
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/arch=amd64
kubernetes.io/hostname=ip-172-28-3-142
kubernetes.io/os=linux
node-role.kubernetes.io/master=
Annotations: kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
node.alpha.kubernetes.io/ttl: 0
projectcalico.org/IPv4Address: 172.28.3.142/20
projectcalico.org/IPv4IPIPTunnelAddr: 192.163.119.24
volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp: Thu, 06 Jun 2019 04:10:28 +0000
Taints: <none>
Unschedulable: false
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
NetworkUnavailable False Sat, 24 Aug 2019 12:10:03 +0000 Sat, 24 Aug 2019 12:10:03 +0000 CalicoIsUp Calico is running on this node
MemoryPressure False Tue, 27 Aug 2019 14:08:19 +0000 Tue, 11 …
Run Code Online (Sandbox Code Playgroud) 我已创建https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html中指定的EKS群集
按照上面的链接中的步骤添加了工作节点,第3步:启动和配置Amazon EKS工作节点
在安全组中,我还添加了为工作节点启用ssh的规则。当我尝试使用“ ec2-user”用户名和有效密钥登录工作节点时,SSH登录未发生。
谁能帮助我调试此问题?
amazon-ec2 amazon-web-services kubernetes amazon-eks aws-eks
这是我的service.yaml代码:
kind: Service
apiVersion: v1
metadata:
name: login
spec:
selector:
app: login
ports:
- protocol: TCP
name: http
port: 5555
targetPort: login-http
type: NodePort
Run Code Online (Sandbox Code Playgroud)
我写的服务类型为
type: NodePort
Run Code Online (Sandbox Code Playgroud)
但当我点击命令如下时,它不会将外部IP显示为"节点":
'kubectl get svc'
Run Code Online (Sandbox Code Playgroud)
这是输出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 7h
login NodePort 10.100.70.98 <none> 5555:32436/TCP 5m
Run Code Online (Sandbox Code Playgroud)
请帮我理解错误.
我正在尝试在AWS上设置kubernetes。为此,我根据官方的AWS教程创建了一个具有3个节点(t2.small)的EKS集群。然后,我想用一些与Postgres(不同VPC中的RDS)通信的应用程序运行一个pod。
但不幸的是,该应用程序未连接到数据库。
是)我有的:
完成所有这些步骤后,我执行kubectl命令:
kubectl exec -it my-pod-app-6vkgm nslookup rds-vpc.unique_id.us-east-1.rds.amazonaws.com
nslookup: can't resolve '(null)': Name does not resolve
Name: rds-vpc.unique_id.us-east-1.rds.amazonaws.com
Address 1: 52.0.109.113 ec2-52-0-109-113.compute-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
然后,我连接到三个节点之一并执行命令:
getent hosts rds-vpc.unique_id.us-east-1.rds.amazonaws.com
52.0.109.113 ec2-52-0-109-113.compute-1.amazonaws.com rds-vpc.unique_id.us-east-1.rds.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
为了从Pod访问RDS,我在EKS设置中错过了什么?
更新:
我试图通过以下方法解决此问题Service
:
apiVersion: v1
kind: Service
metadata:
name: postgres-service
spec:
type: ExternalName
externalName: rds-vpc.unique_id.us-east-1.rds.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
因此,我在EKS中创建了此服务,然后尝试将其postgres-service
称为DB URL而不是直接RDS主机地址。
此修复程序无效:(
我在和jx,kubernetes和helm斗争。我在执行env目录中的命令的jx上运行Jenkinsfile:
sh 'jx step helm build'
sh 'jx step helm apply'
Run Code Online (Sandbox Code Playgroud)
它成功完成并部署了pods /创建了部署等。但是,头盔列表为空。
当我执行类似helm install ...
或的操作时,helm upgrade --install ...
它会创建一个发布,并且头盔列表显示了这一点。
这是正确的行为吗?
更多细节:
安装了以下软件的EKS:
eksctl create cluster --region eu-west-2 --name integration --version 1.12 \
--nodegroup-name integration-nodes \
--node-type t3.large \
--nodes 3 \
--nodes-min 1 \
--nodes-max 10 \
--node-ami auto \
--full-ecr-access \
--vpc-cidr "172.20.0.0/16"
Run Code Online (Sandbox Code Playgroud)
然后我用一些kubectly apply
命令(不共享文件)设置入口(外部和内部)。然后设置路由和与vpc相关的内容。
JX安装了:
jx install --provider=eks --ingress-namespace='internal-ingress-nginx' \
--ingress-class='internal-nginx' \
--ingress-deployment='nginx-internal-ingress-controller' \
--ingress-service='internal-ingress-nginx' --on-premise \
--external-ip='#########' \
--git-api-token=######### \
--git-username=######### …
Run Code Online (Sandbox Code Playgroud) 我创建了AWS EKS集群,因为使用我的AWS userID创建的集群已添加到system:masters
组中。但是,当选中ConfigMap时,aws-auth
我看不到我的用户ID。为什么呢
我必须授予其他用户访问权限,因此我必须为IAM用户分配适当的AWS策略,然后aws-auth
使用以下映射编辑ConfigMap
mapUsers:
----
- userarn: arn:aws:iam::573504862059:user/abc-user
username: abc-user
groups:
- system:masters
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经了解了当用户属于system:masters
组时,该用户在群集上具有管理员权限。
如何添加对特定名称空间具有受限特权的新用户?我是否需要为上述用户做同样的事情?如果是这样,那么我应该将新用户添加到哪个组?
我尝试了以下命令:
kubectl logs --tail
Run Code Online (Sandbox Code Playgroud)
我收到此错误/帮助输出:
Error: flag needs an argument: --tail
Aliases:
logs, log
Examples:
# Return snapshot logs from pod nginx with only one container
kubectl logs nginx
# Return snapshot logs for the pods defined by label app=nginx
kubectl logs -lapp=nginx
# Return snapshot of previous terminated ruby container logs from pod web-1
kubectl logs -p -c ruby web-1
# Begin streaming the logs of the ruby container in pod web-1
kubectl logs -f -c ruby web-1
# …
Run Code Online (Sandbox Code Playgroud) 我可以继承节点标签到吊舱标签吗?
即我想有zone
和instance-type
从节点标签荚
aws-eks ×11
kubernetes ×10
amazon-eks ×6
kubectl ×2
amazon-ec2 ×1
aws-ecr ×1
devops ×1
docker ×1
eks ×1
jenkins-x ×1
kubeadm ×1