Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >GKE外部负载均衡器配置,NEG的配置为空,健康检查无效

GKE外部负载均衡器配置,NEG的配置为空,健康检查无效
EN

Stack Overflow用户
提问于 2020-06-23 08:13:32
回答 2查看 1.1K关注 0票数 2

我正在进行GKE的部署,这是我的第一次部署,所以我对这些概念非常陌生,但我理解它们将如何使用这些工具,只是需要有自信的经验。

首先,我有一个集群,它有大约五个服务,其中两个我想通过外部负载均衡器公开。我为Gcloud定义了一个注释,用于在负载平衡下设置这些注释,这似乎是可行的,我还为服务设置了一个网络端点组。下面是如何按照部署和服务清单中的方式配置的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
---
#api-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert -f ./docker-compose.yml
    kompose.version: 1.21.0 ()
  creationTimestamp: null
  labels:
    io.kompose.service: api
  name: api
spec:
  replicas: 1
  selector:
    matchLabels:
      io.kompose.service: api
  strategy:
    type: Recreate
  template:
    metadata:
      annotations:
        kompose.cmd: kompose convert -f ./docker-compose.yml
        kompose.version: 1.21.0 ()
      creationTimestamp: null
      labels:
        io.kompose.service: api
    spec:
      containers:
      - args:
        - bash
        - -c
        - node src/server.js
        env:
        - name: NODE_ENV
          value: production
        - name: TZ
          value: America/New_York
        image: gcr.io/<PROJECT_ID>/api
        imagePullPolicy: Always
        name: api
        ports:
        - containerPort: 8087
        resources: {}
      restartPolicy: Always
      serviceAccountName: ""
status: {}

---
#api-service.yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
    cloud.google.com/neg: '{"ingress": true}'
  creationTimestamp: null
  labels:
    io.kompose.service: api
  name: api
spec:
  type: LoadBalancer
  ports:
  - name: "8087"
    port: 8087
    targetPort: 8087
status:
  loadBalancer: {}

我想我可能错过了某种配置,但我不确定。

我还看到了在yaml中通过添加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
livenessProbe:
      httpGet:
        path: /healthz
        port: 8080

我的入口配置如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
---
# master-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: master-application-ingress
  annotations:
    ingress.kubernetes.io/secure-backends: "true"
spec:
  rules:
  - http:
      paths:
      - path: /api
        backend:
          serviceName: api
          servicePort: 8087
  - http:
      paths:
      - path: /ui
        backend:
          serviceName: ui
          servicePort: 80

我看到它只需要端口,用于TCP检查,但我已经在我的应用程序和负载均衡器中定义了这些端口。我想我想知道我应该在哪里定义这些支票。

另外,我对注释为空创建的NEG有一个问题,或者对于清单创建的NEG,这是否正常?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-23 14:22:11

健康检查是根据您的readinessProbe而不是livenessProbe创建的。在创建入口资源之前,请确保在pod规范中配置了一个readinessProbe。

至于空置的NEG,这可能是由于健康检查不匹配造成的。NEG将依赖于就绪门功能(在此解释),因为您只定义了livenessProbe,因此完全有可能健康检查配置错误,从而失败。

您还应该有一个内部IP为您创建的内部LB,您能到达豆荚的方式吗?如果两者都失败了,健康检查很可能是问题所在,因为NEG没有向它认为尚未准备好的组中添加豆荚。

票数 2
EN

Stack Overflow用户

发布于 2020-12-06 12:56:27

现在,您还可以将BackendConfig创建为单独的Kubernetes声明。我的例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: cms-backend-config
  namespace: prod
spec:
  healthCheck:
    checkIntervalSec: 60
    port: 80
    type: HTTP #case-sensitive
    requestPath: /your-healthcheck-path
  connectionDraining:
    drainingTimeoutSec: 60 

--我根本没有任何就绪/活性探测,完全没有明确定义的,而且一切都正常工作。我还注意到,有时GKE和其他GCP之间仍有一些小故障。我记得我需要重新创建我的部署和从零进入在某个时候,在我玩了很长一段时间不同的选择。

我也这样做了,这可能是我开始在自动注册的NEGs中看到端点的主要原因,在入口中添加了一个默认的后端,以避免在负载均衡器中注册单独的缺省值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: prod-ingress
  namespace: prod
  annotations:
    kubernetes.io/ingress.allow-http: "false"
    kubernetes.io/ingress.global-static-ip-name: load-balancer-ip
    networking.gke.io/managed-certificates: my-certificate
spec:
  backend:
    serviceName: my-service
    servicePort: 80
  rules:
    - host: "example.com"
      http:
        paths:
          - path: /
            backend:
              serviceName: my-service
              servicePort: 80
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62539189

复制
相关文章
AngularJS Select(选择框)
在 AngularJS 中我们可以使用 ng-option 指令来创建一个下拉列表,列表项通过对象和数组循环输出,如下实例:
陈不成i
2021/07/23
2.5K0
在eclipse中没有server(需在选项中设置)
①在软件eclipse下的Help->InstallNew Software->中,在Work with中点击Add,如下,加入
全栈程序员站长
2022/07/25
4K0
在eclipse中没有server(需在选项中设置)
“我的‘换机焦虑’,选择太多等于没有选择”
为了换台新手机,我询问了周边12个90后的朋友们,真是不问不知道,一问吓一跳,12个朋友中,10个人用的都是iPhone,从8到13各种型号应有尽有。
用户2908108
2022/12/17
5740
“我的‘换机焦虑’,选择太多等于没有选择”
【错误记录】IntelliJ IDEA 中右键点击源码目录选择 New 选项 没有创建 Java Class 选项 ( 将对应的源码目录标记为 Sources 选项 )
右键点击源码根目录 , 在弹出的菜单中选择 " Open Module Settings " 选项 ,
韩曙亮
2023/03/30
2.3K0
【错误记录】IntelliJ IDEA 中右键点击源码目录选择 New 选项 没有创建 Java Class 选项 ( 将对应的源码目录标记为 Sources 选项 )
AngularJS ng-model 指令
ng-model 指令用于绑定应用程序数据到 HTML 控制器(input, select, textarea)的值。
陈不成i
2021/07/23
1.1K0
SourceTree 推送没有分支选择
使用 SourceTree Checkout 了 远程分支,本地分支与远程分支名字不匹配,然后 push 的时候就没有分支选择。
晓晨
2020/05/29
1.4K0
轻松构建灵活的表单,试试AngularJS 选择框
在Web开发中,表单是一个非常重要的组件。表单通常包含各种输入字段,例如输入框、复选框和选择框等,用于收集用户的输入数据。AngularJS 提供了一系列的指令和服务,使得表单的开发更加简单、高效。本文将详细介绍 AngularJS 中的选择框(Select)指令,以及如何使用它来构建灵活的表单。
网络技术联盟站
2023/07/05
2120
AngularJS系列之select下拉选择第一个选项为空白的解决办法
今天给大家介绍一下AngularJS系列之select下拉选择第一个选项为空白的解决办法。 相信大家也经常遇到这种情况吧:在使用AngularJS中的select组件开发的时候,莫名其妙的第一个选项就
林老师带你学编程
2018/01/03
3.2K0
初次使用AngularJS中的ng-view,路由控制
AngularJS中的route可以控制页面元素的改变,使多页面变成一个单页面 第一步:引入必要的js: <script src="js/lib/angular.js"></script> <script src="js/lib/angular-animate.min.js"></script> <script src="js/lib/angular-route.min.js"></script> <script src="app.js"></script> 第二步:准备好一个单页: <body ng-a
Ryan-Miao
2018/03/13
1.6K0
AngularJS ng-model 指令
在前端开发中,表单是用户与网站互动的重要组成部分。为了实现表单数据的双向绑定,AngularJS 提供了 ng-model 指令。本文将详细介绍 ng-model 指令的用法和工作原理,并提供一些实例帮助读者更好地理解和应用该指令。
网络技术联盟站
2023/07/05
1880
AngularJs ng-route路由详解
本篇基于ng-route来讲下angular中的路由,路由功能主要是 $routeProvider服务 与 ng-view 实现。 ng-view的实现原理,是根据路由的切换,动态编译html模板——$compile(html)(scope)。 更多内容参考:Angularjs总结 前提 首先需要在页面引入angular和angular-route,注意要在angular-route之前引入angular <script src="../../bower_components/angular/an
用户1154259
2018/01/17
1.9K0
angularJS学习之路(九)---ng-if
ng-if  指令可以根据表示的结果   在DOM中生成或者移除一个元素   而且是完全移除  不是隐藏或者显示
wust小吴
2019/07/08
4680
人生中的选择
我曾经在微博出了一个选择题: 假设不能兼得,以下三位候选人你会跟谁结婚: A)Sex Partner(性伴侣,在一起激情四射) B)Business Partner(商业伙伴,前途钱财与名利无限) C
用户1756920
2018/06/20
1.3K0
eclipse里没有server选项怎么办(eclipse中没有server选项)
用eclipese写网页很多时候需要配置tomcat,但有些朋友跟着网上的教程配置发现eclipse->【Window】->【Preferences】里没有【server】从而配置不了Runtime Environment。所以需要通过eclipse进行安装。 下面给出解决办法 首先,获取你的eclipse的版本类型,点击【help】->【about eclipse IDE】
全栈程序员站长
2022/08/01
1.3K0
eclipse里没有server选项怎么办(eclipse中没有server选项)
eclipse设置中没有server选项[通俗易懂]
用eclipse准备配置tomcat,发现配置中没有server选项,参考各种解决方法之后成功解决。
全栈程序员站长
2022/08/01
6.5K1
eclipse设置中没有server选项[通俗易懂]
选择篇(017)-哪个选项是不正确的?
在JavaScript中,所有对象键都是字符串(除了Symbol)。尽管有时我们可能不会给定字符串类型,但它们总是被转换为字符串。
齐丶先丶森
2022/05/12
1.3K0
angularjs中常用的ng指令介绍【转载】
原文:http://www.cnblogs.com/lvdabao/p/3379659.html
用户3055976
2018/09/12
2K0
没有万能的结构和选择
从磁盘到CPU的寄存器的所有存储介质,都是从体积大、速度慢、价格便宜 到体积小、速度高价格更贵;
明明如月学长
2021/08/31
3110
没有万能的结构和选择
在seaborn中设置和选择颜色梯度
seaborn在matplotlib的基础上进行开发,当然也继承了matplotlib的颜色梯度设置, 同时也自定义了一系列独特的颜色梯度。在seaborn中,通过color_palette函数来设置颜色, 用法如下
生信修炼手册
2020/11/02
3.8K0
在seaborn中设置和选择颜色梯度
Hibernate 5 在保存数据的时候提示数据库没有选择
09:06:40.277 [http-nio-8080-exec-1] ERROR o.h.id.enhanced.TableStructure - could not read a hi value
HoneyMoose
2020/04/15
1.5K0
Hibernate 5 在保存数据的时候提示数据库没有选择

相似问题

AngularJS -ng-选项选择值

11

AngularJs选择ng-选项无效

23

在AngularJS中使用带有选项选择的ng选项

16

在angularJS中使用ng选项选择绑定

11

在angularjs中禁用带有ng选项的选择箱

49
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文