【发布时间】:2026-02-10 10:25:01
【问题描述】:
我正在开发 Kubernetes 集群,我想在其中运行一个运行 cron 作业的容器。在同一个集群中,我正在部署 3 个其他容器,它们运行 app-code。在同一个集群中添加不同类型的容器需要哪些更改?
service.yaml:
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/name: supplier-service
app.kubernetes.io/instance: supplier-service-instance
app.kubernetes.io/version: "1.0.0"
app.kubernetes.io/component: backend
app.kubernetes.io/managed-by: kubectl
annotations:
# Note that the backend talks over HTTP.
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
# TODO: Fill in with the ARN of your certificate.
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: OUR_ARN
# Only run SSL on the port named "https" below.
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https
service.beta.kubernetes.io/do-loadbalancer-redirect-http-to-https: "true"
service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443"
name: supplier-service
spec:
selector:
app: supplier-service
type: LoadBalancer
ports:
- name: http
port: 80
targetPort: 80
- name: https
port: 443
targetPort: 443
deployment.yaml -- 这个 Yaml 文件运行 app-code
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: supplier-service
app.kubernetes.io/instance: supplier-service-instance
app.kubernetes.io/version: '1.0.0'
app.kubernetes.io/managed-by: kubectl
name: supplier-service-deployment
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 1
selector:
matchLabels:
app: supplier-service
template:
metadata:
labels:
app: supplier-service
spec:
containers:
- image: IMAGE-FROM-ECR/supplier-service:latest
imagePullPolicy: Always
name: supplier-service
ports:
- containerPort: 80
- containerPort: 443
- containerPort: 6379
我准备好了一个新的 DockerFile,它可以在容器内安装 cron 作业。
部署-cron.yaml:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: supplier-service
app.kubernetes.io/instance: supplier-service-instance
app.kubernetes.io/version: '1.0.0'
app.kubernetes.io/managed-by: kubectl
name: supplier-service-deployment
spec:
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 1
selector:
matchLabels:
app: supplier-service
template:
metadata:
labels:
app: supplier-service
spec:
containers:
- image: AWS-ECR/supplier-service-cron:latest
imagePullPolicy: Always
name: supplier-service
ports:
- containerPort: 80
- containerPort: 443
- containerPort: 6379
这是在现有集群中运行单个容器的正确方法,还是需要进行任何其他更改?谢谢你。 :-)
【问题讨论】:
-
这不起作用..当您使用名称为
supplier-service-deployment的deployment.yaml开始第一次部署时,您将无法使用名称为deployment-cron.yaml的deployment-cron.yaml再次部署一个名称为supplier-service-deployment的...不使用cronjob的理由 -
@D.T. :我不希望 crons 在所有容器上运行,因为这些 crons 也会发送电子邮件......如果它在所有容器上运行,就会发送很多电子邮件。 :-)
-
你想完成什么?看起来您想用不同的容器替换 pod 中的现有容器,但它不应该那样工作。您想要实现的目标是创建一个 pod 来循环使用您的应用程序的所有 pod 吗?你的
supplier-service-cron是做什么的?
标签: docker kubernetes cron