我们只是尝试Kubernetes设置并严格遵循文档(在这一点上)。我们在DigitalOcean上,有一堆与之相关的教程和文档(添加了所有这些作为参考)。
至此,我成功部署了两个pod,现在尝试以最简单的方式为它们配置负载均衡器。正在部署所有内容,但无法初始化负载均衡器,并出现以下错误:
Error syncing load balancer: failed to ensure load balancer: failed to build load-balancer request: specified health check port 8080 does not exist on service default/https-with-cert
我验证了健康检查实际上是工作的豆荚,如果我ping他们直接。事实上,这与我们过去两年在手动设置基础架构时使用的运行状况检查相同。
构建正在通过github操作运行,一切都没有问题:
其中deployment.yml看起来像这样:
---
kind: Service
apiVersion: v1
metadata:
name: https-with-cert
annotations:
service.beta.kubernetes.io/do-loadbalancer-protocol: "http"
service.beta.kubernetes.io/do-loadbalancer-algorithm: "round_robin"
service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443"
service.beta.kubernetes.io/do-loadbalancer-certificate-id: "c1eae56c-42cd-4953-9ab9-1a6facae87f8"
# "api.priz.guru" should be configured to point at the IP address of the DO load-balancer
service.beta.kubernetes.io/do-loadbalancer-hostname: "api.priz.guru"
service.beta.kubernetes.io/do-loadbalancer-enable-proxy-protocol: "true"
service.beta.kubernetes.io/do-loadbalancer-disable-lets-encrypt-dns-records: "false"
service.beta.kubernetes.io/do-loadbalancer-size-unit: "2"
service.beta.kubernetes.io/do-loadbalancer-healthcheck-port: "8080"
service.beta.kubernetes.io/do-loadbalancer-healthcheck-protocol: "http"
service.beta.kubernetes.io/do-loadbalancer-healthcheck-path: "/v1/ping"
spec:
type: LoadBalancer
selector:
app: priz-api
ports:
- name: http
protocol: TCP
port: 80
targetPort: 8080
- name: https
protocol: TCP
port: 443
targetPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: priz-api
labels:
app: priz-api
spec:
# modify replicas according to your case
replicas: 2
strategy:
type: RollingUpdate
selector:
matchLabels:
app: priz-api
template:
metadata:
labels:
app: priz-api
spec:
containers:
- name: priz-api
image: <IMAGE>
env:
- name: PRIZ_DATABASE_URL
value: "${PRIZ_DATABASE_URL_PROD}"
- name: PRIZ_DATABASE_USER
value: "${PRIZ_DATABASE_USER_PROD}"
- name: PRIZ_DATABASE_PASSWORD
value: "${PRIZ_DATABASE_PASSWORD_PROD}"
- name: PRIZ_AUTH0_DOMAIN
value: "${PRIZ_AUTH0_DOMAIN_PROD}"
- name: PRIZ_AUTH0_API_DOMAIN
value: "${PRIZ_AUTH0_API_DOMAIN_PROD}"
- name: PRIZ_AUTH0_API_CLIENT_ID
value: "${PRIZ_AUTH0_API_CLIENT_ID_PROD}"
- name: PRIZ_AUTH0_API_CLIENT_SECRET
value: "${PRIZ_AUTH0_API_CLIENT_SECRET_PROD}"
- name: PRIZ_APP_BASE_URL
value: "${PRIZ_APP_BASE_URL_PROD}"
- name: PRIZ_STRIPE_API_KEY_SECRET
value: "${PRIZ_STRIPE_API_KEY_SECRET_PROD}"
- name: PRIZ_SEARCH_HOST
value: "${PRIZ_SEARCH_HOST_PROD}"
ports:
- containerPort: 8080
resources:
requests:
cpu: 500m
memory: 500Mi
limits:
cpu: 2000m
memory: 2000Mi
我该如何调试这个问题?缺少什么?
我们使用的一些参考文献:https://docs.digitalocean.com/products/kubernetes/how-to/add-load-balancers/https://docs.digitalocean.com/products/kubernetes/how-to/configure-load-balancers/https://github.com/digitalocean/digitalocean-cloud-controller-manager/tree/master/docs/controllers/services/examples
1条答案
按热度按时间fcy6dtqo1#
我不知道这是否是同一个问题,但我在以下步骤中遇到了相同的错误消息
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-on-digitalocean-kubernetes-using-helm
事实上,它第一次工作,但我已经删除了集群,并在一个新的集群上测试,以确保我现在修改的脚本从头开始工作...
第二次我得到了上面的错误
所以我又把说明书看了一遍
此设置将使用具有三个节点的DigitalOcean Kubernetes集群,但您也可以手动创建集群。
为了保存成本,我设置了一个单节点集群
因此,我再次使用默认的3节点集群,它按预期工作。