我使用其设置步骤完成了AWS EKS。
AWS EKS版本1.11,coredns
使用的VPC我根据这里其文档创建两个公共专用子网:https://docs.aws.amazon.com/eks/latest/userguide/create-public-private-vpc.html
部署到私有子网的节点标记为“私有”,部署到公共子网的节点标记为“公共”。
当我在每个nodeSelector(公共/私有)上部署一个忙碌盒Pod时,公共容器将无法解析dns,而私有容器则可以。
const width = 200;
const height = 200;
const canvas = document.getElementsByTagName('canvas')[0];
const context = canvas.getContext('2d');
canvas.width = width;
canvas.height = height;
const destData = new ImageData(width, height);
const dData = destData.data;
for (let y = 0; y < height; y++) {
for (let x = 0; x < width; x++) {
const o = 4 * (y * width + x);
dData[o] = 255; // R
dData[o + 1] = 0; // G
dData[o + 2] = 0; // B
dData[o + 3] = 255; // A
}
}
context.putImageData(destData, 0, 0);
如果我ssh到成功的公共子网节点本身我能够平主机名(即google.com)。
有什么想法吗?
nslookup: can't resolve 'kubernetes.default'
# kubectl exec -it busybox-private -- nslookup kubernetes.default
Server: 172.20.0.10
Address 1: 172.20.0.10 ip-172-20-0-10.ec2.internal
Name: kubernetes.default
Address 1: 172.20.0.1 ip-172-20-0-1.ec2.internal
# kubectl exec -it busybox-public -- nslookup kubernetes.default
Server: 172.20.0.10
Address 1: 172.20.0.10
nslookup: can't resolve 'kubernetes.default'
command terminated with exit code 1
经历“调试DNS解析” https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/
奇怪的是,AWS的coredns pod仍然标记为kube-dns
# kubectl -n=kube-system get all
NAME READY STATUS RESTARTS AGE
pod/aws-node-46626 1/1 Running 0 3h
pod/aws-node-52rqw 1/1 Running 1 3h
pod/aws-node-j7n8l 1/1 Running 0 3h
pod/aws-node-k7kbr 1/1 Running 0 3h
pod/aws-node-tr8x7 1/1 Running 0 3h
pod/coredns-7bcbfc4774-5ssnx 1/1 Running 0 20h
pod/coredns-7bcbfc4774-vxrgs 1/1 Running 0 20h
pod/kube-proxy-2c7gj 1/1 Running 0 3h
pod/kube-proxy-5qr9h 1/1 Running 0 3h
pod/kube-proxy-6r96f 1/1 Running 0 3h
pod/kube-proxy-9tqxt 1/1 Running 0 3h
pod/kube-proxy-bhkzx 1/1 Running 0 3h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 172.20.0.10 <none> 53/UDP,53/TCP 20h
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/aws-node 5 5 5 5 5 <none> 20h
daemonset.apps/kube-proxy 5 5 5 5 5 <none> 20h
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/coredns 2 2 2 2 20h
NAME DESIRED CURRENT READY AGE
replicaset.apps/coredns-7bcbfc4774 2 2 2 20h
答案 0 :(得分:0)
我认为我发现问题所在是查看工作节点安全组。
AWS EKS kube-dns终端节点和Pod位于私有子网中。
我有两个CloudFormation堆栈。...一个用于在私有子网中自动缩放节点,一个用于在公共子网中自动缩放节点。
他们没有公共安全组,因此在公共节点上运行的Pod无法访问在私有节点上运行的kube-dns Pod。
一旦我更新了工作节点安全组以允许dns开始工作时进行交叉通信。
请张贴任何人看到任何意想不到的后果。谢谢!