首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes服务pod优先级排序

Kubernetes服务pod优先级排序
EN

Stack Overflow用户
提问于 2018-08-10 20:22:10
回答 2查看 110关注 0票数 0

我手头有以下场景,我希望在pod之间获得尽可能低的延迟(我不希望将所有容器部署到同一pod)。所以下面的场景是我想要实现的:

假设您有一个具有4个节点的Kubernetes集群:-在每个节点上,您有一个不属于kubernetes的中央数据库的sqlproxy -在每个节点上,您有4个pod,通过该sqlproxy调用数据库

据我所知,当我创建一个服务时,服务会在服务中的pod之间“随机”分配流量。这意味着来自节点1的pod可以调用节点4上的sqlproxy,节点2上的pod可以调用节点3上的sqlproxy,依此类推。

我希望尽可能在节点1上实现pod on node 1调用sqlproxy,因此它具有最小的延迟。

这是可能的吗?或者节点之间的延迟是如此之小以至于可以忽略吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-11 00:51:14

将SQL代理作为侧车部署到您的应用程序中(一个pod中有两个容器,一个是应用程序,一个是代理)。

您的部署将如下所示:

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  namespace: ...
  name: my-app
  labels:
    app: my-app

spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: app
          image: << app image >>
          ports:
            - containerPort: 8080
        - name: sql-proxy
          image: << SQL proxy image >>
          ports:
            - containerPort: 3306

现在让应用程序连接到localhost:3306,以连接到在同一pod中运行的SQL代理。通过这种方式,您可以避免潜在的代价高昂的跨节点跳跃,并保持本地连接。

票数 1
EN

Stack Overflow用户

发布于 2018-08-12 05:44:12

@Oliver提出的解决方案-将sqlproxy作为sidecar容器运行在与应用程序相同的pod中-可能会为您提供最低的延迟。

如果出于某种原因,您仍然希望在每个节点上运行一个sqlproxy实例(例如,为了利用数据库连接池和重用),应用程序将需要在运行时动态发现运行它的节点的IP地址,并使用它连接到同一节点上的sqlproxy实例。

下面是一种动态发现主机节点IP地址并将其设置为环境变量的方法(另请参阅Kubernetes文档中的The Downward API ):

代码语言:javascript
复制
...
spec:
  containers:
  - name: app-container-name
    image: <app-image>
    env:
    - name: POD_HOST_IP
      valueFrom:
        fieldRef:
          apiVersion: v1
          fieldPath: status.hostIP

使用$(POD_HOST_IP),我们可以在同一部署配置中的其他地方引用环境变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51786447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档