【发布时间】:2020-06-23 22:43:13
【问题描述】:
在部署到 AWS EKS 时,我很难通过 Internet 公开我的应用程序。
我已经创建了一个部署和一个服务,在使用 kubectl 时我可以看到这两个都在运行。我可以看到该应用程序已成功连接到外部数据库,因为它在启动时运行了一个初始化所述数据库的脚本。
我的问题是在尝试通过 Internet 访问应用程序时出现的。我已尝试访问集群端点,但出现此错误:
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {
},
"status": "Failure",
"message": "forbidden: User "system:anonymous" cannot get path "/"",
"reason": "Forbidden",
"details": {
},
"code": 403
}
但是,如果我访问“/readyz”路径,则会返回“ok”。 "/version" 返回以下内容:
{
"major": "1",
"minor": "16+",
"gitVersion": "v1.16.8-eks-e16311",
"gitCommit": "e163110a04dcb2f39c3325af96d019b4925419eb",
"gitTreeState": "clean",
"buildDate": "2020-03-27T22:37:12Z",
"goVersion": "go1.13.8",
"compiler": "gc",
"platform": "linux/amd64"
}
我的 deployment.yml 文件包含以下内容:
apiVersion: apps/v1
kind: Deployment
metadata:
name: client
labels:
app: client
spec:
replicas: 1
selector:
matchLabels:
app: client
template:
metadata:
labels:
app: client
spec:
containers:
- name: client
image: image/repo
ports:
- containerPort: 80
imagePullPolicy: Always
我的 service.yml:
apiVersion: v1
kind: Service
metadata:
name: client
labels:
run: client
spec:
type: LoadBalancer
ports:
- name: "80"
port: 80
targetPort: 80
protocol: TCP
selector:
run: client
我可以看到负载均衡器已在 AWS 控制台中创建,并且我已尝试更新 LB 的安全组以能够与集群端点通信。 LB 仪表板显示一个附加的实例是“OutOfService”,并且在监控选项卡下,我可以看到一个不健康的主机。
我已尝试访问控制台 EC2 区域中提供的负载均衡器端点(这与 kubectl get services 作为 LB 服务的 EXTERNAL-IP 返回的内容相匹配),但我收到了一个空响应在那里。
curl XXXXXXX.eu-west-2.elb.amazonaws.com:80
curl: (52) Empty reply from server
在网络浏览器中访问时也是如此。
我似乎在这个圈子里兜圈子,任何帮助都将不胜感激。
【问题讨论】:
标签: amazon-web-services kubernetes amazon-eks