[英]Can't create two mysql pods on k8s
我正在嘗試在一個集群中運行兩個 mysql pod。 第一個 mysql pod 使用 hdd 作為存儲。 第二個 mysql pod 使用 ssd 作為存儲。第一個 pod 工作。 但是第二個吊艙陷入“崩潰循環”。
我使用兩個 .yaml 文件制作了兩個 pod。 這些文件在這里。
deployMysqlHdd.yaml(第一個 pod。這是有效的。)
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local-hdd-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysqlpersistentvolume
spec:
capacity:
storage: 1000Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: local-hdd-storage
local:
path: /k8sLocalStorage/mysql
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: disktype
operator: In
values:
- hdd
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysqlvolumeclaim
spec:
accessModes:
- ReadWriteMany
volumeMode: Filesystem
resources:
requests:
storage: 1000Gi
storageClassName: local-hdd-storage
---
apiVersion: v1
kind: Service
metadata:
name: mysql-nodeport
spec:
type: NodePort
ports:
- name: mysql-port
port: 3306
targetPort: 3306
nodePort: 3306
selector:
name: mysql
---
apiVersion: v1
kind: Secret
metadata:
name: mysql-auth
type: Opaque
stringData:
password: **********
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysqldeployment
spec:
replicas: 1
selector:
matchLabels:
name: mysql
template:
metadata:
labels:
name: mysql
spec:
containers:
- name: mysql
image: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-auth
key: password
volumeMounts:
- name: mysqlvolumes
mountPath: /var/lib/mysql
volumes:
- name: mysqlvolumes
persistentVolumeClaim:
claimName: mysqlvolumeclaim
---
deployMysqlSSD.yaml(第二個pod。這不起作用。)
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: intelnuc-local-mysql-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: intelnuc-mysql-persistentvolume
spec:
capacity:
storage: 500Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: intelnuc-local-mysql-storageclass
local:
path: /k8sNodeData/mysql
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: disktype
operator: In
values:
- ssd
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: intelnuc-mysql-persistentvolumeclaim
spec:
accessModes:
- ReadWriteMany
volumeMode: Filesystem
resources:
requests:
storage: 500Gi
storageClassName: intelnuc-local-mysql-storageclass
---
apiVersion: v1
kind: Service
metadata:
name: intelnuc-mysql-nodeport
spec:
type: NodePort
ports:
- name: intelnuc-mysql-port
port: 3306
targetPort: 3306
nodePort: 3307
selector:
name: mysql-high-resource
---
apiVersion: v1
kind: Secret
metadata:
name: intelnuc-mysql-auth
type: Opaque
stringData:
password: ***********
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: intelnuc-mysql-deployment
spec:
replicas: 1
selector:
matchLabels:
name: intelnuc-mysql
template:
metadata:
labels:
name: intelnuc-mysql
spec:
containers:
- name: intelnuc-mysql
image: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: intelnuc-mysql-auth
key: password
volumeMounts:
- name: intelnuc-mysql-volumes
mountPath: /var/lib/mysql
volumes:
- name: intelnuc-mysql-volumes
persistentVolumeClaim:
claimName: intelnuc-mysql-persistentvolumeclaim
---
kubectl describe pod
關於第二個 pod 的結果在這里。
Name: intelnuc-mysql-deployment-9685c849-mvg4p
Namespace: default
Priority: 0
Node: intelnuc/192.168.1.10
Start Time: Sat, 19 Sep 2020 06:37:16 +0000
Labels: name=intelnuc-mysql
pod-template-hash=9685c849
Annotations: <none>
Status: Running
IP: 10.244.2.23
IPs:
IP: 10.244.2.23
Controlled By: ReplicaSet/intelnuc-mysql-deployment-9685c849
Containers:
intelnuc-mysql:
Container ID: docker://8bbe74e6d90cce313be9e8708319470a85a25a98742bc0472bcda193be91d277
Image: mysql
Image ID: docker-pullable://mysql@sha256:e1bfe11693ed2052cb3b4e5fa356c65381129e87e38551c6cd6ec532ebe0e808
Port: <none>
Host Port: <none>
State: Terminated
Reason: Error
Exit Code: 1
Started: Sat, 19 Sep 2020 06:38:13 +0000
Finished: Sat, 19 Sep 2020 06:38:13 +0000
Last State: Terminated
Reason: Error
Exit Code: 1
Started: Sat, 19 Sep 2020 06:37:43 +0000
Finished: Sat, 19 Sep 2020 06:37:43 +0000
Ready: False
Restart Count: 3
Environment:
MYSQL_ROOT_PASSWORD: <set to the key 'password' in secret 'intelnuc-mysql-auth'> Optional: false
Mounts:
/var/lib/mysql from intelnuc-mysql-volumes (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-6m588 (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
intelnuc-mysql-volumes:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: intelnuc-mysql-persistentvolumeclaim
ReadOnly: false
default-token-6m588:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-6m588
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled <unknown> default-scheduler Successfully assigned default/intelnuc-mysql-deployment-9685c849-mvg4p to intelnuc
Normal Pulling 10s (x4 over 63s) kubelet, intelnuc Pulling image "mysql"
Normal Pulled 7s (x4 over 60s) kubelet, intelnuc Successfully pulled image "mysql"
Normal Created 7s (x4 over 60s) kubelet, intelnuc Created container intelnuc-mysql
Normal Started 7s (x4 over 60s) kubelet, intelnuc Started container intelnuc-mysql
Warning BackOff 6s (x5 over 56s) kubelet, intelnuc Back-off restarting failed container
我認為第二個 pod 上的 NodePort 服務設置錯誤,我曾嘗試更改設置。 但我無法解決這個問題。
我想知道在哪里修復它。
附加信息。
kubectl logs <podname>
的結果在這里。
2020-09-20 07:33:20+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.21-1debian10 started.
2020-09-20 07:33:20+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2020-09-20 07:33:20+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.21-1debian10 started.
2020-09-20 07:33:20+00:00 [Note] [Entrypoint]: Initializing database files
2020-09-20T07:33:20.840302Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.21) initializing of server in progress as process 43
2020-09-20T07:33:20.841379Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2020-09-20T07:33:20.841384Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
2020-09-20T07:33:20.841423Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-09-20T07:33:20.841495Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.21) MySQL Community Server - GPL.
我認為,問題是因為第二個服務的標簽與部署的標簽不匹配。 能否請您更改並重試。
就像服務標簽選擇器“名稱:mysql-high-resource”一樣,嘗試使用“名稱:intelnuc-mysql”。
apiVersion: v1
kind: Service
metadata:
name: intelnuc-mysql-nodeport
spec:
type: NodePort
ports:
- name: intelnuc-mysql-port
port: 3306
targetPort: 3306
nodePort: 3307
selector:
name: mysql-high-resource
我根據喬納斯的評論運行kubectl logs <podname>
。 我看到了問題的原因。 它有效,因為我清空了 mysql 數據目錄。 謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.