【问题标题】:where to place yaml bash command在哪里放置 yaml bash 命令
【发布时间】:2021-04-20 10:43:12
【问题描述】:

我现在正在尝试使用上述工具,但遇到了一些问题。 我无法转发我的端口,因为我的 ip-tables 似乎有一些问题 我的豆荚。

"sudo iptables -P FORWARD ACCEPT" 应该可以解决我的问题,但我想知道, 如何在我的 yaml 文件中插入该命令以便执行它,

在我的 pod 想要获取数据库之前。我说得对吗?

也许你可以帮我整理一下代码的放置位置以及如何实现逗号。

最好的问候!!!!

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-mysql


  initContainers:
    - name: forward accept
      command: ["sudo iptables"]
      args: ["-P", "FORWARD ACCEPT"]
      
  template:
    metadata:
      labels:
        app: my-mysql
    spec:
      volumes:
          - name: data-volume
            emptyDir: {}
    

      initContainers:
        - name: init-container-data-downloader
          image: curlimages/curl
          args:
            - "-o"
            - "/tmp/data/init.sql"
            - "https://google.de"
          volumeMounts:
            - mountPath: /tmp/data/
              name: data-volume
      containers:
        - name: mysql
          image: mysql
          volumeMounts:
            - mountPath: /docker-entrypoint-initdb.d/
              name: data-volume
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: "mysecretpw"
            - name: MYSQL_DATABASE
              value: "sportsdb"
          ports:
            - containerPort: 3306
            - containerPort: 33060






【问题讨论】:

  • 您要解决的实际问题是什么?你可能根本无法在 Kubernetes 中运行 iptables;有多层网络,加上 Linux 功能限制,因此单个 pod 将无法更改其节点的主机网络设置。

标签: kubernetes yaml microk8s


【解决方案1】:

在 initContainers 中运行它。您已经有一个,所以添加另一个

【讨论】:

【解决方案2】:

curlimages/curl docker 镜像不包含 iptables 二进制文件。我建议您创建一个自定义 docker 映像并添加所需的任何二进制文件。

您可以在initContainer中添加多个参数

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-mysql
  template:
    metadata:
      labels:
        app: my-mysql
    spec:
      volumes:
        - name: data-volume
          emptyDir: {}
      initContainers:
        - name: init-container-data-downloader
          image: alpine:3.12
          command: ["/bin/ash", "-c"]
          args:
            [
              "sudo iptables -P FORWARD ACCEPT; wget -q https://google.de -O /tmp/data/init.sql",
            ]
          volumeMounts:
            - mountPath: /tmp/data/
              name: data-volume
      containers:
        - name: mysql
          resources: {}
          image: mysql
          volumeMounts:
            - mountPath: /docker-entrypoint-initdb.d/
              name: data-volume
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: "mysecretpw"
            - name: MYSQL_DATABASE
              value: "sportsdb"
          ports:
            - containerPort: 3306

【讨论】:

    猜你喜欢
    • 2019-11-03
    • 2014-05-24
    • 2018-07-28
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 2017-04-14
    • 2021-04-17
    • 2015-01-17
    相关资源
    最近更新 更多