在 GKE 中使用 sendgrid 和 kubernetes cron 作业发送邮件

send mails using sendgrid and kubernates cronjob in GKE

我正在尝试在 k8s 中使用 sendgrid api 和 cronjob 发送邮件,我在云函数中尝试了我的 python 代码,它是预期的 运行 但是当我使用我的创建 GCR 映像并将其部署在 k8s cronjob 中的代码我得到了一个urllib.error.URLError: <urlopen error [Errno 104] Connection reset by peer> 错误

好吧,我创建了一个用于调试的 pod,这是使用我的 linux 图像的 pod 定义:

apiVersion: v1
kind: Pod
metadata:
  name: notifier
spec:
  serviceAccountName: xxxxxxxxxxx
  containers:
    - name: test
      image: eu.gcr.io/xxxxxxxxxxxxxxxxxxxxxx:v1.4
      command: [ "/bin/bash", "-c", "--" ]
      args: [ "while true; do sleep 30; done;" ]

我知道我需要允许流量(出口和入口)以便我的 pod 可以从 api 获取流量但是我不知道该怎么做,这是我的 cronjob 定义:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: zzzzzzzzzzzzzzz
spec:
  schedule: "00 7 * * *"
  concurrencyPolicy: Forbid
  successfulJobsHistoryLimit: 5
  failedJobsHistoryLimit: 3
  jobTemplate:
    spec:
      parallelism: 1
      backoffLimit: 0
      template:
        spec:
          restartPolicy: Never
          serviceAccountName: xxxxxxxxxx
          containers:
            - name: yyyyyyyyyyyyy
              image: eu.gcr.io/xxxxxxxxxxxxxxxxxxxxxxxx:v1.4
              resources:
                requests:
                  memory: "512Mi"
                  cpu: 1
                limits:
                  memory: "1024Mi"
                  cpu: 2

我正在使用 kustomize k8s、GKE、python sendgrid api

感谢您的支持

为了与from/to sendgrid通信,你需要添加dns confs以便sendgrid api被识别,你需要打开端口(pod级别),我放弃了sendgrid,我使用了公司的smtp服务器。