【问题标题】:How to migrate kubeconfig on windows 10如何在 Windows 10 上迁移 kubeconfig
【发布时间】:2020-01-14 22:09:42
【问题描述】:

我已经尝试安装 minikube 两天了。我遇到了一个又一个问题。这个让我难过。

  • 在 Windows 10 上安装 minikube
  • Docker 已经使用 hyperv 运行数月了
  • 使用 choco 关注 windows,忽略 hyperv 安装的所有内容。

W0107 08:23:27.485052 3337 common.go:77] 您的配置文件使用了已弃用的 API 规范:“kubeadm.k8s.io/v1beta1”。请使用 'kubeadm config migrate --old-config old.yaml --new-config new.yaml',它将使用更新的 API 版本编写新的、类似的规范。

据我了解,有一个新配置。我需要迁移到。为此,我需要使用 kubeadm,但我无法找到有关在何处找到这些文件或如何进行迁移的任何信息。这是我尝试过的。

我从提升的命令提示符运行:

  • minikube ssh

然后我在以下目录中找到了kubeadm。

  • cd /var/lib/minikube/binaries/v1.17.0

我从哪里开始向它抛出一些随机命令以希望得到一些帮助

$ ./kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.0", GitCommit:"70132b0f130acc0bed193d9ba59dd186f0e634cf", GitTreeState:"clean", BuildDate:"2019-12-07T21:17:50Z", GoVersion:"go1.13.4", Compiler:"gc", Platform:"linux/amd64"}


$ ./kubeadm config view
failed to load admin kubeconfig: open /home/docker/.kube/config: no such file or directory
To see the stack trace of this error execute with --v=5 or higher

$ ./kubeadm init --config defaults
unable to read config from "defaults" : open defaults: no such file or directory
To see the stack trace of this error execute with --v=5 or higher

正如错误消息所说的那样,我试了一下。那也没用

$ ./kubeadm config migrate --old-config old.yaml --new-config new.yaml
open old.yaml: no such file or directory
To see the stack trace of this error execute with --v=5 or higher

在翻阅日志后,我发现它正在尝试加载以下配置文件,因此我尝试将其加载为旧配置文件,希望它足够聪明,可以制作自己的新配置文件。

./kubeadm config migrate --old-config /var/tmp/minikube/kubeadm.yaml --new-config new.yaml
open /var/tmp/minikube/kubeadm.yaml: permission denied 
To see the stack trace of this error execute with --v=5 or higher

好的,然后让我们检查文件的权限

$ ls -la /var/tmp/minikube/kubeadm.yaml
-rw-r----- 1 root root 1156 Jan  1  0001 /var/tmp/minikube/kubeadm.yaml

那不好,让我们尝试更新它

$ chmod u=r /var/tmp/minikube/kubeadm.yaml
chmod: changing permissions of '/var/tmp/minikube/kubeadm.yaml': Operation not 
 permitted

好的

$ sudu chmod u=r /var/tmp/minikube/kubeadm.yaml
-bash: sudu: command not found

编辑 sudo

 $ sudo chmod u=r /var/tmp/minikube/kubeadm.yaml 
 $ ls -la /var/tmp/minikube/kubeadm.yaml
 -r--r----- 1 root root 1156 Jan  1  0001 /var/tmp/minikube/kubeadm.yaml

更新 777

$ sudo chmod 777 /var/tmp/minikube/kubeadm.yaml
$ ls -la /var/tmp/minikube/kubeadm.yaml
-rwxrwxrwx 1 root root 1156 Jan  1  0001 /var/tmp/minikube/kubeadm.yaml
fig new.yamlconfig migrate --old-config /var/tmp/minikube/kubeadm.yaml --new-conf
W0107 13:19:23.298409    4361 validation.go:28] Cannot validate kube-proxy config - no validator is available
W0107 13:19:23.298437    4361 validation.go:28] Cannot validate kubelet config - no validator is available
failed to write the new configuration to the file "new.yaml": open new.yaml: permission denied
To see the stack trace of this error execute with --v=5 or higher

仍然没有骰子。这似乎是一个非常有限的 bash shell。

有一个文件

好的,感谢一些 chmod 777,我知道有一个文件,但我该怎么处理它?

./kubeadm config migrate --old-config /var/tmp/minikube/kubeadm.yaml --new-config /home/docker/new.yaml
W0107 13:22:21.615314    6352 validation.go:28] Cannot validate kube-proxy config - no validator is available
W0107 13:22:21.615375    6352 validation.go:28] Cannot validate kubelet config - no validator is available

似乎很少或没有关于如何处理这个问题的文档我已经在论坛上交叉发布了这个问题。 #6227 任何帮助将不胜感激。我尝试删除 minikube 并再次添加它,结果相同。

当前状态

sudo chmod 777 /var/tmp/minikube/kubeadm.yaml
ls -la /var/tmp/minikube/kubeadm.yaml
cd /var/lib/minikube/binaries/v1.17.0
./kubeadm config migrate --old-config /var/tmp/minikube/kubeadm.yaml --new-config /home/docker/new.yaml
sudo chmod 777 /var/tmp/minikube 
mv /var/tmp/minikube/kubeadm.yaml /var/tmp/minikube/kubeadmold.yaml
mv /home/docker/new.yaml /var/tmp/minikube/kubeadm.yaml

minikube start --vm-driver=hyperv --v=7 --alsologtostderr

没有改变同样的错误信息。

1.16.0

C:\Windows\system32>minikube start --vm-driver=hyperv --kubernetes-version=1.16.0
* minikube v1.6.0 on Microsoft Windows 10 Pro 10.0.18363 Build 18363
* Selecting 'hyperv' driver from user configuration (alternates: [])
* Creating hyperv VM (CPUs=2, Memory=2000MB, Disk=20000MB) ...
! Unable to verify SSH connectivity: dial tcp: address fe80::215:5dff:fe37:c505:22: too many colons in address. Will retry...
! Unable to verify SSH connectivity: dial tcp: address fe80::215:5dff:fe37:c505:22: too many colons in address. Will retry...
! Unable to verify SSH connectivity: dial tcp: address fe80::215:5dff:fe37:c505:22: too many colons in address. Will retry...
! Unable to verify SSH connectivity: dial tcp: address fe80::215:5dff:fe37:c505:22: too many colons in address. Will retry...
! Unable to verify SSH connectivity: dial tcp: address fe80::215:5dff:fe37:c505:22: too many colons in address. Will retry...
! Unable to verify SSH connectivity: dial tcp: address fe80::215:5dff:fe37:c505:22: too many colons in address. Will retry...
X minikube is unable to connect to the VM: dial tcp: address fe80::215:5dff:fe37:c505:22: too many colons in address

This is likely due to one of two reasons:

- VPN or firewall interference
- hyperv network configuration issue

Suggested workarounds:

- Disable your local VPN or firewall software
- Configure your local VPN or firewall to allow access to fe80::215:5dff:fe37:c505
- Restart or reinstall hyperv
- Use an alternative --vm-driver

【问题讨论】:

  • 1.您想将 kubeconfig 从 Linux Minikube 迁移到 Windows Minikube? 2. 你在使用 Docker for Windows 吗? 3.您是否根据此文档安装了Minikubeminikube.sigs.k8s.io/docs/start/windows? 4. 你用的是 Ubuntu / Debian / CentOS 还是其他的? 5. 你可能打错了sudu 而不是sudo
  • 1.我想在 Windows 10 上安装 minikube。 2. 是的,我已经使用 docker for windows 很长时间了。 3.是的,完全符合。 - 与 hyperv 相关的一切,因为它已经安装了。 4. 不知道这些是我在 Windows 10 上的 Linux 发行版。 5. 使用 sudo 检查编辑没有骰子
  • 根据kubernetes.io/docs/setup/release/notes/…,此 apiVersion 在 1.17 中已删除。你可以在 K8s 1.16 上运行它吗?
  • @PjoterS 这是我第一次自己使用 k8s,我不知道你在问什么。我只是按照说明进行操作。我只想让 k8s 在我的机器上运行,这样我就可以学习如何使用它,而无需支付谷歌云时间。是不是有一个命令可以安装它并让它运行?听起来你说如果你想让我去旧版本的话,它在 Windows 上根本不起作用。我做了一个复数课程,说要使用 minikube。
  • 我的意思是尝试安装 Kubernetes v.1.16,因为 v.1.17 于 2019 年 12 月 9 日发布,一些更改可能不包含在课程中。我确信你可以在 Windows 上运行 Minikube。我需要在 Windows 上尝试一下。

标签: kubernetes windows-10 minikube


【解决方案1】:

如您所见,kubeadm 版本表明您使用的是 Kubernetes kubeadm,这与 Minikube 有点不同。

Kubeadm 是一个让 Kubernetes 在现有机器上工作的工具。它将配置并启动所有必需的Kubernetes 组件。使用Kubeadm,您可以创建具有多个节点的集群(kubeadm join)。

Minikube是一个启动单个Kubernets Cluster本地节点的工具。

Stackoverflow这个问题已经有了很好的解释。

我认为来自 LinuxKubeadm configuration 不能在 Windows 上运行。正如您在评论中提到的,您想在 Windows 中运行 Minikube 来学习 Kubernetes,我将逐步提供如何在 Windows 10 上运行 Minikube

在 Windows 10 上安装 Minikube

由于您已经拥有 docker,我将跳过安装步骤。

1.下载kubectlminikube

official kubernetes docs提供最新版本。

kubectl v1.17minikube 来自 github (minikube-windows-amd64.exe)。

2。添加到PATH 表单文件夹到Environment Variables

创建文件夹,您将在其中粘贴 kubectl.exe 并重命名 minikube.exe 文件。 将此文件夹添加到PATH。 (如果有人需要here is tutorial)。

3.在Hyper-V 中创建外部Virtual Switch Manager

转到Hyper-V。从右侧菜单中选择Virtual Switch Manager。选择External 并将其命名为Primary Virtual Switch。然后申请。

4.验证minikubekubeadm 版本。

PS C:\WINDOWS\system32> kubectl version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.0", GitCommit:"70132b0f130acc0bed193d9ba59dd186f0e634cf", GitTreeState:"clean", BuildDate:"2019-12-07T21:20:10Z", GoVersion:"go1.13.4", Compiler:"gc", Platform:"windows/amd64"}​
Server Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.0", GitCommit:"70132b0f130acc0bed193d9ba59dd186f0e634cf", GitTreeState:"clean", BuildDate:"2019-12-07T21:12:17Z", GoVersion:"go1.13.4", Compiler:"gc", Platform:"linux/amd64"}​
PS C:\WINDOWS\system32> minikube version​
minikube version: v1.6.2​
commit: 54f28ac5d3a815d1196cd5d57d707439ee4bb392

5.创建Minikube Cluster

以管理员身份运行PowerShell

minikube start --vm-driver hyperv --hyperv-virtual-switch "Primary Virtual Switch"

PS C:\WINDOWS\system32> minikube start --vm-driver hyperv --hyperv-virtual-switch "Primary Virtual Switch"
* minikube v1.6.2 on Microsoft Windows 10 Enterprise 10.0.17134 Build 17134​
* Selecting 'hyperv' driver from user configuration (alternates: [])​
* Creating hyperv VM (CPUs=2, Memory=2000MB, Disk=20000MB) ...​
* Preparing Kubernetes v1.17.0 on Docker '19.03.5' ...​
* Pulling images ...​
* Launching Kubernetes ...​
* Waiting for cluster to come online ...​
* Done! kubectl is now configured to use "minikube"​

现在您可以使用kubectl 命令并且已经拥有运行Minikube 所需的默认资源。

PS C:\WINDOWS\system32> kubectl get pods --all-namespaces​
NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE​
kube-system   coredns-6955765f44-c4cbj           1/1     Running   0          31m​
kube-system   coredns-6955765f44-rqfth           1/1     Running   0          31m​
kube-system   etcd-minikube                      1/1     Running   0          31m​
kube-system   kube-addon-manager-minikube        1/1     Running   0          31m​
kube-system   kube-apiserver-minikube            1/1     Running   0          31m​
kube-system   kube-controller-manager-minikube   1/1     Running   0          31m​
kube-system   kube-proxy-j6q29                   1/1     Running   0          31m​
kube-system   kube-scheduler-minikube            1/1     Running   0          31m​
kube-system   storage-provisioner                1/1     Running   0          31m

另外,你可以查看this关于在windows上运行Minikube的文章。

您也可以考虑Docker for Windows,它会自动执行许多操作,但它会安装旧版本的kubernetes(目前为1.14)。

【讨论】:

    猜你喜欢
    • 2017-10-29
    • 2016-07-25
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多