Kubernetes容器的服务选择器

问题描述 投票:0回答:2

我在一个容器中有两个容器,并且Kubernetes服务有一个容器选择器。

容器1是UI,公开了端口8080。容器2是与Git同步的服务。

[我的问题是,当“ Container 2”死亡时(例如,由于Git关闭),Kubernetes服务从池中删除了Pod,并且该服务未将流量路由到Pod。

如何在Kubernetes Service中将选择器设置为容器而不是pod或其他解决方法?

---
apiVersion: v1
kind: Service
metadata:
  name: myapp
  namespace: default
spec:
  selector:
    app: myapp
  ports:
    - port: 80
      targetPort: 8080
      protocol: TCP

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  namespace: default
  labels:
    app: myapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: git
          image: git:1.0

        - name: ui
          image: ui:1.0
          ports:
            - containerPort: 8080

谢谢!

kubernetes service
2个回答
1
投票

尽管POD可以运行多个容器,但是这些容器的故障由Kubernetes一起管理。您可以在这里refer

[当您的Pod运行两个容器时,理想情况下,第二个容器必须是辅助容器-与SideCar实施类似,在该实施中,它只是更新或读取要由主容器使用的数据。

来自Kubernetes的Pod生命周期文档清楚地解释了这一点。

Pod正在运行,有两个容器。容器1退出失败:日志失败事件。如果restartPolicy为:总是:重新启动容器;Pod阶段保持运行状态。如果restartPolicy为:OnFailure:重新启动容器;Pod阶段保持运行状态。如果restartPolicy为:从不:不要重新启动容器;Pod阶段保持运行状态。

如果容器1没有运行,并且容器2退出:日志失败事件。

如果restartPolicy为:始终:重新启动容器;Pod阶段保持运行状态。如果restartPolicy为:OnFailure:重新启动容器;Pod阶段保持运行状态。如果restartPolicy为:从不:Pod阶段失败。


0
投票

如何在Kubernetes Service中将选择器设置为容器而不是pod或其他解决方法?

没有你不能。任何变通办法(如果有的话)都将是一种k8s反模式,只是因为部署不是为此而设计的。更多信息:

kubectl explain deployment.spec.template.metadata
kubectl explain deployment.spec.template.spec.containers
© www.soinside.com 2019 - 2024. All rights reserved.