首先,我在https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer测试了教程
这很好用。我还测试了相同的教程,但添加了一个tls机密来测试https,这也很好。
当我创造自己的形象时,我的问题就出现了。以下是我采取的步骤:
# We label our stage as "builder" FROM node:9.4.0-alpine as builder COPY package.json package-lock.json ./ ## Storing node modules on a separate layer will prevent unnecessary npm installs at each build RUN npm i && mkdir /srv/cs-ui && cp -R ./node_modules ./srv/cs-ui WORKDIR /srv/cs-ui COPY . . ## Build the angular app in production mode and store the artifacts in dist folder RUN $(npm bin)/ng build --environment "prod" FROM nginx ## Copy our default nginx config COPY nginx/default.conf /etc/nginx/conf.d/ ## Remove default nginx website RUN rm -rf /usr/share/nginx/html/* ## From "builder" stage copy over the artifacts in dist folder to default nginx nginx public folder COPY --from=builder /srv/cs-ui/dist /usr/share/nginx/html/
version: '2' services: cs-ui: image: "gcr.io/cs-micro/cs-ui:v1" container_name: "cs-ui" tty: true build: . ports: - "80:80"
gcloud docker -- push gcr.io/cs-micro/cs-ui:v1
kubectl run cs-ui --image=gcr.io/cs-micro/cs-ui:v1 --port=80
kubectl expose deployment cs-ui --target-port=80 --type=NodePort
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: basic-ingress spec: tls: - secretName: tls-certificate backend: serviceName: cs-ui servicePort: 80
带命令:
kubectl apply -f test.yaml
Name: cs-ui Namespace: default Labels: run=cs-ui Annotations: Selector: run=cs-ui Type: NodePort IP: 10.35.244.124 Port: 80/TCP TargetPort: 80/TCP NodePort: 30272/TCP Endpoints: 10.32.0.32:80 Session Affinity: None External Traffic Policy: Cluster Events: Name: kubernetes Namespace: default Labels: component=apiserver provider=kubernetes Annotations: Selector: Type: ClusterIP IP: 10.35.240.1 Port: https 443/TCP TargetPort: 443/TCP Endpoints: 35.195.192.28:443 Session Affinity: ClientIP Events:
Name: cs-ui Namespace: default CreationTimestamp: Thu, 25 Jan 2018 12:27:59 +0100 Labels: run=cs-ui Annotations: deployment.kubernetes.io/revision=1 Selector: run=cs-ui Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 1 max unavailable, 1 max surge Pod Template: Labels: run=cs-ui Containers: cs-ui: Image: gcr.io/cs-micro/cs-ui:v1 Port: 80/TCP Environment: Mounts: Volumes: Conditions: Type Status Reason ---- ------ ------ Available True MinimumReplicasAvailable OldReplicaSets: NewReplicaSet: cs-ui-2929390783 (1/1 replicas created) Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ScalingReplicaSet 9m deployment-controller Scaled up replica set cs-ui-2929390783 to 1
Name: basic-ingress Namespace: default Address: 35.227.220.186 Default backend: cs-ui:80 (10.32.0.32:80) TLS: tls-certificate terminates Rules: Host Path Backends ---- ---- -------- * * cs-ui:80 (10.32.0.32:80) Annotations: https-forwarding-rule: k8s-fws-default-basic-ingress--f5fde3efbfa51336 https-target-proxy: k8s-tps-default-basic-ingress--f5fde3efbfa51336 ssl-cert: k8s-ssl-default-basic-ingress--f5fde3efbfa51336 target-proxy: k8s-tp-default-basic-ingress--f5fde3efbfa51336 url-map: k8s-um-default-basic-ingress--f5fde3efbfa51336 backends: {"k8s-be-30272--f5fde3efbfa51336":"UNHEALTHY"} forwarding-rule: k8s-fw-default-basic-ingress--f5fde3efbfa51336 static-ip: k8s-fw-default-basic-ingress--f5fde3efbfa51336 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ADD 12m loadbalancer-controller default/basic-ingress Normal CREATE 11m loadbalancer-controller ip: 35.227.220.186 Normal Service 6m (x4 over 11m) loadbalancer-controller default backend set to cs-ui:30272
我读过无数关于当你的后台状态为“不健康”时该怎么办的帖子,但没有一篇有帮助。本教程中提到的添加防火墙规则:https://cloud.google.com/compute/docs/load-balancing/health-checks我已经补充了,但没有帮助。
如果你有任何建议,我很乐意测试一下。
原来我们的Angular应用程序在“/”上有一个重定向,它给出了302响应。此响应使运行状况检查失败,并导致不健康状态。
一旦我们设置了自定义健康检查,它就起作用了。
我正在学习如何使用入口在谷歌Kubernetes引擎上公开我的应用程序。我学习了几本教程,大致了解了需要什么。然而,我不知道为什么我的服务被标记为不健康,尽管它们可以从我直接定义的NodePort服务访问。 这是我的部署文件:(我删除了一些数据,但大部分保持不变) 在阅读时,我需要一个ReadinessProbe和LivinessProbe,以便GKE在我定义的路径上运行健康检查,并且通过使用我自
我试图通过GKE部署应用程序。到目前为止,我为应用程序的前端和后端创建了两个服务和两个部署。我使用“gce”控制器创建了一个ingress ressource,并映射了服务,如图所示 它几乎工作得很好(不是所有映射正确的根,但它工作得很好)。我在代码上添加了修改(只有应用程序的代码),我重建了图像并重新创建了服务,但入口似乎对我添加的修改和 我所有的服务都处于不健康状态 这是前台服务 当我描述时,
我正在学习如何使用入口来公开我的应用程序GKE v1.19。我按照GKE docs for Service、Ingress和BackendConfig的教程进行了以下设置。然而,一段时间后,我的后端服务仍然变得不健康。我的目标是覆盖入口控制器的默认“/”健康检查路径。 我在部署中定义了相同的运行状况检查。livenessProbe和readinessProbe下的yaml文件,它们似乎工作正常,因
我已经在端口80上配置了一个通过apache公开的web应用程序pod。我无法配置从internet访问的服务入口。问题是后端服务总是报告为不健康。 Pod配置: 服务配置: 入口配置: 这会导致后端服务报告为不健康。 健康检查设置:
问题内容: 我遵循了负载均衡器教程:https : //cloud.google.com/container- engine/docs/tutorials/http-balancer 在使用Nginx映像时,当尝试使用自己的应用程序映像时,它工作正常后端切换为不正常。 我的应用程序重定向到/(返回302),但在pod定义中添加了一个: 我的入口看起来像: 服务配置为: 后端健康状况如下: 入口的规
我遵循了负载均衡器教程:https://cloud.google.com/container-engine/docs/tutorials/http-balancer当我使用Nginx映像时工作正常,当我尝试使用我自己的应用程序映像时,尽管后端切换到不健康。 我的应用程序重定向到/(返回302),但我在pod定义中添加了一个livenessProbe: 我的入口看起来像: 服务配置为: 入口中的后端