我在一个容器中有两个容器,并且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
谢谢!
尽管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阶段失败。
如何在Kubernetes Service中将选择器设置为容器而不是pod或其他解决方法?
没有你不能。任何变通办法(如果有的话)都将是一种k8s反模式,只是因为部署不是为此而设计的。更多信息:
kubectl explain deployment.spec.template.metadata
kubectl explain deployment.spec.template.spec.containers