单实例有状态应用程序 - 容器 CrashLoopBackOff
Single-Instance stateful application - Container CrashLoopBackOff
我正在尝试按照单实例有状态应用程序的 kubernetes 教程进行操作:https://kubernetes.io/docs/tasks/run-application/run-single-instance-stateful-application/
问题是,在我应用那里列出的所有 yaml 之后,我的 pod 最终不可用,如下所示,
kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
mysql 1 1 1 0 1h
kubectl get pods
NAME READY STATUS RESTARTS AGE
mysql-fb75876c6-tpdzc 0/1 CrashLoopBackOff 17 1h
kubectl describe deployment mysql
Name: mysql
Namespace: default
CreationTimestamp: Mon, 03 Sep 2018 10:50:22 +0000
Labels: <none>
Annotations: deployment.kubernetes.io/revision=1
Selector: app=mysql
Replicas: 1 desired | 1 updated | 1 total | 0 available | 1 unavailable
StrategyType: Recreate
MinReadySeconds: 0
Pod Template:
Labels: app=mysql
Containers:
mysql:
Image: mysql:5.6
Port: 3306/TCP
Host Port: 0/TCP
Environment:
MYSQL_ROOT_PASSWORD: password
Mounts:
/var/lib/mysql from mysql-persistent-storage (rw)
Volumes:
mysql-persistent-storage:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: mysql-pv-claim
ReadOnly: false
Conditions:
Type Status Reason
---- ------ ------
Progressing True NewReplicaSetAvailable
Available False MinimumReplicasUnavailable
OldReplicaSets: <none>
NewReplicaSet: mysql-fb75876c6 (1/1 replicas created)
Events: <none>
kubectl describe pods mysql-fb75876c6-tpdzc
Name: mysql-fb75876c6-tpdzc
Namespace: default
Priority: 0
PriorityClassName: <none>
Node: wombat-dev-kubeadm-worker-1/142.93.56.123
Start Time: Mon, 03 Sep 2018 10:50:22 +0000
Labels: app=mysql
pod-template-hash=963143272
Annotations: <none>
Status: Running
IP: 192.168.1.14
Controlled By: ReplicaSet/mysql-fb75876c6
Containers:
mysql:
Container ID: docker://08d630190a83fb5097bf8a98f7bb5f474751e021aec68b1be958c675d3f26f27
Image: mysql:5.6
Image ID: docker-pullable://mysql@sha256:2e48836690b8416e4890c369aa174fc1f73c125363d94d99cfd08115f4513ec9
Port: 3306/TCP
Host Port: 0/TCP
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: Error
Exit Code: 137
Started: Mon, 03 Sep 2018 12:04:24 +0000
Finished: Mon, 03 Sep 2018 12:04:29 +0000
Ready: False
Restart Count: 19
Environment:
MYSQL_ROOT_PASSWORD: password
Mounts:
/var/lib/mysql from mysql-persistent-storage (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-6t8pg (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
mysql-persistent-storage:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: mysql-pv-claim
ReadOnly: false
default-token-6t8pg:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-6t8pg
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
---- ------ ---- ---- -------
Warning BackOff 1m (x334 over 1h) kubelet, wombat-dev-kubeadm-worker-1 Back-off restarting failed container
问题是:我该怎么办? 运行 kubectl logs mysql-fb75876c6-tpdzc
returns 完全没有输出。
有什么帮助吗?
这是kubeadm的版本
kubeadm version: &version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.2", GitCommit:"bb9ffb1654d4a729bb4cec18ff088eacc153c239", GitTreeState:"clean", BuildDate:"2018-08-07T23:14:39Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
使用kubectl logs -p
查看之前的状态日志。
容器正在以 退出代码 137 退出,这意味着 SIGTERM(相当于 kill -9 <process>
)发送到容器中执行的进程。通常这意味着 OOM Killer 进来杀死它,因为它使用的内存比可用内存多。您的机器上有足够的可用内存吗?
退出代码137
可能意味着这是一个内存问题。尝试增加专用于机器的 ram 数量。
Minikube 默认只有 1gb 的 ram,所以如果你想要更多,试试像这样的东西:minikube start --memory 4096
我正在尝试按照单实例有状态应用程序的 kubernetes 教程进行操作:https://kubernetes.io/docs/tasks/run-application/run-single-instance-stateful-application/
问题是,在我应用那里列出的所有 yaml 之后,我的 pod 最终不可用,如下所示,
kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
mysql 1 1 1 0 1h
kubectl get pods
NAME READY STATUS RESTARTS AGE
mysql-fb75876c6-tpdzc 0/1 CrashLoopBackOff 17 1h
kubectl describe deployment mysql
Name: mysql
Namespace: default
CreationTimestamp: Mon, 03 Sep 2018 10:50:22 +0000
Labels: <none>
Annotations: deployment.kubernetes.io/revision=1
Selector: app=mysql
Replicas: 1 desired | 1 updated | 1 total | 0 available | 1 unavailable
StrategyType: Recreate
MinReadySeconds: 0
Pod Template:
Labels: app=mysql
Containers:
mysql:
Image: mysql:5.6
Port: 3306/TCP
Host Port: 0/TCP
Environment:
MYSQL_ROOT_PASSWORD: password
Mounts:
/var/lib/mysql from mysql-persistent-storage (rw)
Volumes:
mysql-persistent-storage:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: mysql-pv-claim
ReadOnly: false
Conditions:
Type Status Reason
---- ------ ------
Progressing True NewReplicaSetAvailable
Available False MinimumReplicasUnavailable
OldReplicaSets: <none>
NewReplicaSet: mysql-fb75876c6 (1/1 replicas created)
Events: <none>
kubectl describe pods mysql-fb75876c6-tpdzc
Name: mysql-fb75876c6-tpdzc
Namespace: default
Priority: 0
PriorityClassName: <none>
Node: wombat-dev-kubeadm-worker-1/142.93.56.123
Start Time: Mon, 03 Sep 2018 10:50:22 +0000
Labels: app=mysql
pod-template-hash=963143272
Annotations: <none>
Status: Running
IP: 192.168.1.14
Controlled By: ReplicaSet/mysql-fb75876c6
Containers:
mysql:
Container ID: docker://08d630190a83fb5097bf8a98f7bb5f474751e021aec68b1be958c675d3f26f27
Image: mysql:5.6
Image ID: docker-pullable://mysql@sha256:2e48836690b8416e4890c369aa174fc1f73c125363d94d99cfd08115f4513ec9
Port: 3306/TCP
Host Port: 0/TCP
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: Error
Exit Code: 137
Started: Mon, 03 Sep 2018 12:04:24 +0000
Finished: Mon, 03 Sep 2018 12:04:29 +0000
Ready: False
Restart Count: 19
Environment:
MYSQL_ROOT_PASSWORD: password
Mounts:
/var/lib/mysql from mysql-persistent-storage (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-6t8pg (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
mysql-persistent-storage:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: mysql-pv-claim
ReadOnly: false
default-token-6t8pg:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-6t8pg
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
---- ------ ---- ---- -------
Warning BackOff 1m (x334 over 1h) kubelet, wombat-dev-kubeadm-worker-1 Back-off restarting failed container
问题是:我该怎么办? 运行 kubectl logs mysql-fb75876c6-tpdzc
returns 完全没有输出。
有什么帮助吗?
这是kubeadm的版本
kubeadm version: &version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.2", GitCommit:"bb9ffb1654d4a729bb4cec18ff088eacc153c239", GitTreeState:"clean", BuildDate:"2018-08-07T23:14:39Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
使用kubectl logs -p
查看之前的状态日志。
容器正在以 退出代码 137 退出,这意味着 SIGTERM(相当于 kill -9 <process>
)发送到容器中执行的进程。通常这意味着 OOM Killer 进来杀死它,因为它使用的内存比可用内存多。您的机器上有足够的可用内存吗?
退出代码137
可能意味着这是一个内存问题。尝试增加专用于机器的 ram 数量。
Minikube 默认只有 1gb 的 ram,所以如果你想要更多,试试像这样的东西:minikube start --memory 4096