Kubernetes反复拉图像,并坚持创build容器

我试图创build一个单实例有状态的应用程序的行https://kubernetes.io/docs/tasks/run-application/run-single-instance-stateful-application/ ,除了我想使用Oracle数据库。

我运行W10并使用Minikube来设置群集,Hyper-V作为驱动程序,并且我还为Minikube创build了一个虚拟交换机。

我相应地编辑了部署YAML以使用Oracle数据库镜像和端口,并为Docker Hub添加了一个拉密(因为Oracle希望您login以拉取图像)。

最后的YAML:

apiVersion: v1 kind: Service metadata: name: orcldb spec: ports: - port: 1521 name: sqlnet - port: 5500 name: oraclexml selector: app: orcldb clusterIP: None --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: orcldb-pv-claim spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi --- apiVersion: apps/v1beta2 kind: Deployment metadata: name: orcldb spec: selector: matchLabels: app: orcldb strategy: type: Recreate template: metadata: labels: app: orcldb spec: containers: - image: store/oracle/database-enterprise:12.2.0.1 name: orcldb ports: - containerPort: 1521 name: sqlnet - containerPort: 5500 name: oraclexml volumeMounts: - name: orcldb-persistent-storage mountPath: /var/lib/orcldb imagePullSecrets: - name: dockerhubkey volumes: - name: orcldb-persistent-storage persistentVolumeClaim: claimName: orcldb-pv-claim 

所以,我运行kubectl create -f deployment.yaml ,一切都相应地创build:

 service "orcldb" created persistentvolumeclaim "orcldb-pv-claim" created deployment "orcldb" created 

但是,如果我运行kubectl describe pods orcldb ,我在事件中看到这一点:

 Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 1h (x2 over 1h) default-scheduler PersistentVolumeClaim is not bound: "orcldb-pv-claim" Normal Scheduled 1h default-scheduler Successfully assigned orcldb-7d96df68c8-bjwql to minikube Normal SuccessfulMountVolume 1h kubelet, minikube MountVolume.SetUp succeeded for volume "pvc-c91fd4a0-c3da-11e7-9300-00155d050c0a" Normal SuccessfulMountVolume 1h kubelet, minikube MountVolume.SetUp succeeded for volume "default-token-rszmg" Normal Pulling 1h kubelet, minikube pulling image "store/oracle/database-enterprise:12.2.0.1" Normal SuccessfulMountVolume 1h kubelet, minikube MountVolume.SetUp succeeded for volume "pvc-c91fd4a0-c3da-11e7-9300-00155d050c0a" Normal SuccessfulMountVolume 1h kubelet, minikube MountVolume.SetUp succeeded for volume "default-token-rszmg" Normal Pulling 1h kubelet, minikube pulling image "store/oracle/database-enterprise:12.2.0.1" Normal SuccessfulMountVolume 43m kubelet, minikube MountVolume.SetUp succeeded for volume "pvc-c91fd4a0-c3da-11e7-9300-00155d050c0a" Normal SuccessfulMountVolume 43m kubelet, minikube MountVolume.SetUp succeeded for volume "default-token-rszmg" Normal Pulling 43m kubelet, minikube pulling image "store/oracle/database-enterprise:12.2.0.1" Normal SuccessfulMountVolume 32m kubelet, minikube MountVolume.SetUp succeeded for volume "pvc-c91fd4a0-c3da-11e7-9300-00155d050c0a" Normal SuccessfulMountVolume 32m kubelet, minikube MountVolume.SetUp succeeded for volume "default-token-rszmg" Normal Pulling 32m kubelet, minikube pulling image "store/oracle/database-enterprise:12.2.0.1" 

另外,minikube集群有时会停止(?)/拒绝连接,之后我通常会重新启动minikube,但是一旦我离开它,它会在一段时间后恢复(重复拔出过程仍在继续)。

我一直没能find任何人面对这样的问题,所以我非常感谢为什么会发生这种情况。

部分minikube日志中有关磁盘的错误:

 Nov 07 18:37:22 minikube localkube[16252]: E1107 18:37:22.727122 16252 fsHandler.go:121] failed to collect filesystem stats - rootDiskErr: du command failed on /var/lib/docker/overlay2/611dbda511b2771528eff890891445fe89fdd171e6e1e944596b82b5a031d4c6 with output stdout: , stderr: du: cannot access '/var/lib/docker/overlay2/611dbda511b2771528eff890891445fe89fdd171e6e1e944596b82b5a031d4c6': No such file or directory Nov 07 18:37:22 minikube localkube[16252]: - exit status 1, rootInodeErr: cmd [find /var/lib/docker/overlay2/611dbda511b2771528eff890891445fe89fdd171e6e1e944596b82b5a031d4c6 -xdev -printf .] failed. stderr: find: '/var/lib/docker/overlay2/611dbda511b2771528eff890891445fe89fdd171e6e1e944596b82b5a031d4c6': No such file or directory Nov 07 18:37:22 minikube localkube[16252]: ; err: exit status 1, extraDiskErr: du command failed on /var/lib/docker/containers/97fc2e9f49de23415fe6494bf3684672aeb1213930de02314b1f2ce411f4dc6a with output stdout: , stderr: du: cannot access '/var/lib/docker/containers/97fc2e9f49de23415fe6494bf3684672aeb1213930de02314b1f2ce411f4dc6a': No such file or directory 

我从Oracle的巨大官方图像中移除,并使用Oracle Express 11g数据库的自定义映像。 图像现在被拉出,容器开始没有任何问题。

此外,Minikube在一段时间后会停止响应的问题可以通过在Hyper-V中禁用dynamic内存来解决,如本github问题中所述 。