Ten*_*aru 6 google-cloud-platform kubernetes google-kubernetes-engine docker-ingress
首先,我在https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer 上测试了教程
这工作正常。我还测试了相同的教程,但也添加了一个 tls 秘密来测试 https,它也运行良好。
当我创建自己的图像时,我的问题就出现了。这是我采取的步骤:
# 我们将我们的舞台标记为“builder” FROM node:9.4.0-alpine 作为构建器 复制 package.json package-lock.json ./ ## 将节点模块存储在单独的层上将防止在每次构建时安装不必要的 npm 运行 npm i && mkdir /srv/cs-ui && cp -R ./node_modules ./srv/cs-ui 工作目录 /srv/cs-ui 复制 。. ## 在生产模式下构建 angular 应用程序并将工件存储在 dist 文件夹中 运行 $(npm bin)/ng build --environment "prod" 从 nginx ## 复制我们的默认 nginx 配置 复制 nginx/default.conf /etc/nginx/conf.d/ ##删除默认的nginx网站 运行 rm -rf /usr/share/nginx/html/* ## 从“builder”阶段将 dist 文件夹中的工件复制到默认的 nginx nginx 公共文件夹 复制 --from=builder /srv/cs-ui/dist /usr/share/nginx/html/
版本:'2' 服务: cs-ui: 图片:“gcr.io/cs-micro/cs-ui:v1” 容器名称:“cs-ui” tty: 真的 建造: 。 端口: - “80:80”
gcloud docker -- 推送 gcr.io/cs-micro/cs-ui:v1
kubectl run cs-ui --image=gcr.io/cs-micro/cs-ui:v1 --port=80
kubectl 公开部署 cs-ui --target-port=80 --type=NodePort
apiVersion: 扩展/v1beta1 种类:入口 元数据: 名称:基本入口 规格: 网址: - 秘密名称:tls-证书 后端: 服务名称:cs-ui 服务端口:80
使用命令:
kubectl apply -f test.yaml
名称:cs-ui 命名空间:默认 标签:run=cs-ui 注释: 选择器:run=cs-ui 类型:节点端口 IP:10.35.244.124 端口:80/TCP 目标端口:80/TCP 节点端口:30272/TCP 端点:10.32.0.32:80 会话亲和力:无 外部流量策略:集群 事件: 名称:kubernetes 命名空间:默认 标签:组件=apiserver 提供者=kubernetes 注释: 选择器: 类型:集群IP IP:10.35.240.1 端口:https 443/TCP 目标端口:443/TCP 端点:35.195.192.28:443 会话亲和性:ClientIP 事件:
名称:cs-ui 命名空间:默认 创建时间戳:2018 年 1 月 25 日星期四 12:27:59 +0100 标签:run=cs-ui 注解:deployment.kubernetes.io/revision=1 选择器:run=cs-ui 副本:1 个想要的 | 1 更新 | 共 1 个 | 1 个可用 | 0 不可用 策略类型:滚动更新 最小准备秒数:0 RollingUpdateStrategy:1 最大不可用,1 最大激增 豆荚模板: 标签:run=cs-ui 容器: cs-ui: 图片:gcr.io/cs-micro/cs-ui:v1 端口:80/TCP 环境: 坐骑: 卷: 状况: 输入状态原因 ---- ------ ------ 可用真实最小副本数可用 旧副本集: NewReplicaSet:cs-ui-2929390783(已创建 1/1 副本) 事件: 键入来自消息的原因年龄 ---- ------ ---- ---- ------- 正常 ScalingReplicaSet 9m deployment-controller 将副本集 cs-ui-2929390783 扩展为 1
名称:基本入口 命名空间:默认 地址:35.227.220.186 默认后端:cs-ui:80 (10.32.0.32:80) TLS: tls-证书终止 规则: 主机路径后端 ---- ---- -------- * * cs-ui:80 (10.32.0.32:80) 注释: 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 目标代理:k8s-tp-default-basic-ingress--f5fde3efbfa51336 url-map: k8s-um-default-basic-ingress--f5fde3efbfa51336 后端:{“k8s-be-30272--f5fde3efbfa51336”:“不健康”} 转发规则:k8s-fw-default-basic-ingress--f5fde3efbfa51336 静态IP:k8s-fw-default-basic-ingress--f5fde3efbfa51336 事件: 键入来自消息的原因年龄 ---- ------ ---- ---- ------- 正常 ADD 12m loadbalancer-controller default/basic-ingress 正常 CREATE 11m loadbalancer-controller ip: 35.227.220.186 Normal Service 6m (x4 over 11m) loadbalancer-controller 默认后端设置为 cs-ui:30272
我已经阅读了无数关于当您获得 Unhealthy 后端状态时该怎么做的主题,但没有一个有帮助。有人提到要在本教程中添加防火墙规则:https : //cloud.google.com/compute/docs/load-balancing/health-checks,我已添加,但没有帮助。
如果您有任何建议,我会很乐意测试它们。
结果我们的 Angular 应用程序在“/”上进行了重定向,这给了它一个 302 响应。此响应会使运行状况检查失败并导致 UNHEALTHY 状态。
一旦我们设置了自定义健康检查,它就起作用了。
归档时间: |
|
查看次数: |
1110 次 |
最近记录: |