我正在嘗試從 mysql 容器中獲取日志。我必須設定變數:
“設定全球general_log = 1”
我正在嘗試使用 kubernetes poststart 設定變數,但它不起作用。這是我的配置:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
serviceName: mysql
replicas: 1
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:5.7
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: password
lifecycle:
postStart:
exec:
command: ["/bin/bash", "-c","/etc/init.d/mysql start", "mysql -p${MYSQL_ROOT_PASSWORD} <<< 'SET GLOBAL general_log= 1;'" ]
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql #The path used to mount the hostPath share inside the pod.
- name: log-mysql
image: alpine
args: [/bin/sh, -c, "tail -n 1 -f /tmp/logs/mysql-0.log"]
volumeMounts:
- name: mysql-persistent-storage
mountPath: /tmp/logs
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pvclaim
---
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
應用此配置時沒有任何錯誤,但 general_log 變數的值保持關閉并且不會打開。
PS:當我連接到我的 pod 并手動輸入
mysql -p${MYSQL_ROOT_PASSWORD} <<< 'SET GLOBAL general_log= 1;'
變數的值打開。我不明白為什么它不能使用 Poststart。
我可以幫忙嗎?謝謝
uj5u.com熱心網友回復:
該命令執行得太早,就在容器創建之后和 mysqld 準備好接受命令之前。
您可以使用不同的方法來實作您的目標:
- 提供一個容器命令并使用“--general-log=1”
- 使用設定創建自定義 custom.cnf 檔案并將其卷掛載到 /etc/mysql/conf.d
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/410372.html
標籤:
下一篇:是否可以通過主機名允許出口流量?
