小编cro*_*eck的帖子

为kubernetes作业/ cronjob终止istio sidecar istio-proxy

我们最近开始使用istio Istio建立内出了服务网格Kubernetes景观。

现在,如果将istio istio-proxysidecar容器注入到作业中,作业和cronjobs不会终止并永远运行,这是一个问题。本istio-proxy应注射虽然建立到工作需要交谈的服务适当的MTLS连接并符合我们的安全规定。

我还注意到了Istio(istio / issues / 6324)和kubernetes(kubernetes / issues / 25908)中的未解决问题,但是似乎两者都无法在短期内提供有效的解决方案。

起初,停止前挂钩似乎很适合解决此问题,但此概念本身存在一些困惑:kubernetes / issues / 55807

lifecycle:
  preStop:
    exec:
      command: 
        ...
Run Code Online (Sandbox Code Playgroud)

底线:如果容器成功完成,则不会执行这些钩子。

GitHub上还有一些相对较新的项目试图使用专用控制器(我认为这是最可取的方法)来解决这个问题,但是对我们的团队而言,他们还不够成熟,无法立即将它们投入生产:

同时,我们自己完成了以下变通方法,该变通方法可以执行到边车中并发送SIGTERM信号,但前提是主容器成功完成:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: terminate-sidecar-example-service-account
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: terminate-sidecar-example-role
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["get","delete"]
  - apiGroups: [""]
    resources: ["pods/exec"]
    verbs: ["create"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: …
Run Code Online (Sandbox Code Playgroud)

kubernetes istio

5
推荐指数
4
解决办法
1038
查看次数

使用 prometheus 抓取 kubernetes 容器的 HTTP 和 HTTPS 端口指标

我们希望 Prometheus 安装能够抓取 Pod 中两个容器的指标。一个容器通过 HTTPS 在端口 443 公开指标,而另一个容器通过 HTTP 在端口 8080 公开指标。两个容器在同一路径提供指标,即/metrics.

如果我们将prometheus.io/scheme声明为 http 或 https,则只会抓取一个容器。对于另一个我们总是收到:如果我们根本server returned HTTP status 400 Bad Request 不定义prometheus.io/scheme,也会发生同样的情况。然后,Prometheus 将为两个端口使用 http,并且对于在端口 443 公开指标的容器会失败,因为它只期望 HTTPS 请求。

有没有办法告诉普罗米修斯如何准确地抓取我们部署中的各个容器?获取两个容器的指标有哪些可行的解决方法?

版本

库伯内特斯:1.10.2

普罗米修斯:2.2.1

部署摘录

apiVersion: apps/v1
kind: Deployment
metadata:
  name: xxx
  namespace: xxx
spec:
  selector:
    matchLabels:
      app: xxx
  template:
    metadata:
      labels:
        app: xxx
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/path: "/metrics"
    spec:
      containers:
      - name: container-1
        image: xxx
        ports:
        - containerPort: 443
      - name: container-2 …
Run Code Online (Sandbox Code Playgroud)

kubernetes prometheus

0
推荐指数
1
解决办法
6939
查看次数

标签 统计

kubernetes ×2

istio ×1

prometheus ×1