如何解决放置 yaml bash 命令的位置
我现在正在试验上述工具,但遇到了一些问题。 我无法转发我的端口,因为我的 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
解决方法
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
,
在 initContainers 中运行它。你已经有了一个,所以添加另一个
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。