我对 k8s 和 minikube 还很陌生,可以帮助理解我在运行时遇到的频繁但不普遍的错误 kubectl logs -f <POD NAME>
我有时会在我自己的命名空间中的 pod 上以及在 . 中kube-system
,例如,在尝试跟踪入口控制器日志时,无法预测地获得此信息。pods 本身没有明显的错误,并且kubectl logs
命令的输出包含看起来正常的日志行,例如failed to watch file "/var/log/pods/kube-system_nginx-ingress-controller-586cdc477c-95pgh_4b8310a4-5f9b-11e9-9666-0800270e7244/nginx-ingress-controller/1.log": no space left on device$
这个问题的最终来源是什么,我该如何解决?
尽管使用相同映像注册表的其他部署按预期工作,但我deployment
在minikube
本地注册表中收到“无法拉取映像”错误。
我的工作流程是从docker.collection
如下所示的 Dockerfile 构建映像。
$ minikube start --insecure-registry localhost:5000 --memory 4096
$ docker build . -f docker.collection -t localhost:5000/collection:latest -t localhost:5000/collection:dev
$ docker push localhost:5000/collection
$ cat deployment.yaml | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)
部署已根据需要创建,但 Pod 未启动,并且 minikube 仪表板显示:
无法拉取映像“localhost:5000/collection:dev”:rpc 错误:代码 = Unknown desc = 来自守护进程的错误响应:localhost:5000/collection:dev 未找到清单
我没有理由相信构建或推送映像有任何问题,并且在主机上,我可以成功拉取...
$ docker pull localhost:5000/collection:dev
dev: Pulling from collection
Digest: sha256:8becfdd412f0b86ece8335aa5ee1aede75992d17f88739a28da5939eab28fde5
Status: Image is up to date for localhost:5000/collection:dev
Run Code Online (Sandbox Code Playgroud)
我还应该检查什么?如何获得有关失败的更多详细信息?
我也检查过:
localhost:5000
:$ minikube …
Run Code Online (Sandbox Code Playgroud) 我正在尝试从 minikube 容器访问本地 MySQL 数据库。我的 minikube 可在带有 hyper-v 驱动程序的 Windows 10 上运行。我找到了一些解决方案(从 VirtualBox 创建仅主机网络),但没有找到适用于 hyper-v 的解决方案。有人可以帮助我如何从 minikube hyper-v 连接到 localhost mysql 服务器吗?
我想看看是否可以使用本地(Mac)kubectl 连接到远程 minikube 集群(Ubuntu 盒子)。我目前使用 Docker,并且可以使用docker-machine
. 只需评估机器名称,docker 就会使用远程机器。
我想知道 minikube/kubectl 是否有类似的东西?我发现一些文章提到我需要将远程~/.minikube
目录复制到本地,并更改一些配置。但这对于像这样的工具docker-machine
无缝完成的事情来说似乎相当复杂。
是否有类似的工具可用,或者如果没有,有人可以帮助我完成连接到远程集群所需的步骤吗?
远程机器
目前我使用docker
驱动程序(这是命令的完整输出,只有一行):
$ minikube config view
- driver: docker
Run Code Online (Sandbox Code Playgroud)
并拥有多项NodePort
服务:
$ kubectl get service -A
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default apigateway NodePort 10.100.122.255 <none> 8080:30601/TCP 19h
default discoveryserver NodePort 10.101.106.231 <none> 8761:30602/TCP 19h
default elasticsearch NodePort 10.97.197.14 <none> 9200:30604/TCP 19h
default harness NodePort 10.97.233.245 <none> 9090:30603/TCP 19h
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 19h
default …
Run Code Online (Sandbox Code Playgroud) 所以我实际上想启动我的 minikube 集群,并在 /data 上安装一个特殊目录。该目录包含我的数据库数据。
为此我尝试:
minikube start \
--driver=docker \
--extra-config=apiserver.service-node-port-range=1-35000 \
--disk-size=5000mb \
--mount \
--mount-string="${PWD}/srcs/mysql/datas:/data"
Run Code Online (Sandbox Code Playgroud)
实际上选项--mount
似乎--mount-string="${PWD}/srcs/mysql/datas:/data"
不起作用。没有显示警告或错误输出,但是当我连接到计算机并将文件列表到 /data 时,什么也没有出现。我的目录没有挂载。
如果我使用以下命令挂载目录:minikube mount ${PWD}/srcs/mysql/datas:/data
它可以工作,并且我可以在 /data 中列出我的数据。(但我真的想在启动时启动它,现在我做错了什么)。
所以在 docker-desktop 到处出现问题后,我才开始深入研究 minikube。我正在关注https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/,但我遇到了问题。
我完全按照教程的说明进行了操作:
我验证了所有内容都可用,并最终得到以下输出kubectl get ingress
:
NAME CLASS HOSTS ADDRESS PORTS AGE
example-ingress <none> hello-world.info 192.168.49.2 80 87m
Run Code Online (Sandbox Code Playgroud)
然而,当尝试访问 hello-world.info(无论是在我的主机文件中设置,还是直接访问 192.168.49.2,仅用于连接测试)时,除了请求超时之外,我什么也得不到。我的入口控制器的日志也没有提及任何失败的连接尝试。
通过 手动启动隧道时,连接工作正常minikube service ingress-nginx-controller-admission --namespace=kube-system
。
这是输出minikube profile list
:
|----------|-----------|---------|--------------|------|---------|---------|-------|
| Profile | VM Driver | Runtime | IP | Port | Version | Status | Nodes |
|----------|-----------|---------|--------------|------|---------|---------|-------|
| minikube | docker | docker | 192.168.49.2 | 8443 | v1.20.2 | Running …
Run Code Online (Sandbox Code Playgroud) 我有以下 minikube.service 文件:
\n[Unit]\nDescription=Runs minikube on startup\nAfter=vboxautostart-service.service vboxballoonctrl-service.service vboxdrv.service vboxweb-service.service\n\n[Service]\nType=forking\nExecStart=/usr/local/bin/minikube start\nUser=mark\nGroup=mark\n\n[Install]\nWantedBy=multi-user.target\n
Run Code Online (Sandbox Code Playgroud)\n当我从 shell 手动启动它时,它工作正常:
\nmark@minikube-vm:~$ sudo systemctl start minikube.service\nmark@minikube-vm:~$ minikube ip\n192.168.99.100\nmark@minikube-vm:~$ systemctl status minikube.service\n\xe2\x97\x8f minikube.service - Runs minikube on startup\n Loaded: loaded (/etc/systemd/system/minikube.service; enabled; vendor preset: enabled)\n Active: active (running) since Fri 2020-09-25 17:32:48 UTC; 34min ago\n Process: 8388 ExecStart=/usr/local/bin/minikube start (code=exited, status=0/SUCCESS)\n Tasks: 46 (limit: 19141)\n CGroup: /system.slice/minikube.service\n \xe2\x94\x9c\xe2\x94\x808434 /usr/lib/virtualbox/VBoxXPCOMIPCD\n \xe2\x94\x9c\xe2\x94\x808439 /usr/lib/virtualbox/VBoxSVC --auto-shutdown\n \xe2\x94\x9c\xe2\x94\x808618 /usr/lib/virtualbox/VBoxHeadless --comment minikube --startvm 6ec91432-0f09-4fdc-9976-6f736b15c37f --vrde config\n …
Run Code Online (Sandbox Code Playgroud)