前提
以下の参考サイトを元に、Ubuntu環境、CentOS環境両方で試したのですが、同じエラーになってしまいました。
参考サイト:VagrantでkubeadmでKubernetesを起動する \
CentOS仮想環境は参考サイトの物を使いました。Ubuntuも確かそうだった気がする…
一応、最後には上手く行ったので備忘録を残しておきます
CentOS 7
と打つと、Vagrant up
`した後に
`kubectl version
1 2 3 |
[root@master /]# kubectl version Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.1", GitCommit:"4485c6f18cee9a5d3c3b4e523bd27972b1b53892", GitTreeState:"clean", BuildDate:"2019-07-18T09:18:22Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"} The connection to the server 10.0.2.15:8443 was refused - did you specify the right host or port? |
となりHostServeにアクセス拒否されたというエラーになってしまいます。
調べてみるとFire wallのせいでアクセス拒否されている可能性があるとのことだったので、以下のコマンドを実行しておきます。
1 2 |
systemctl disable firewalld systemctl stop firewalld |
終わったら、kubernetesクラスターを実行しましょう
1 2 |
# Add addons minikube start --vm-driver=none |
ここでこけたら、VMマシーンのメモリが足りていない可能性あり
Ubuntu
を打ち込むと以下のようにエラーになってしまいました。vagrant up
`した直後に
`kubectl vaersion
1 2 3 |
vagrant@minikube:~$ kubectl version Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.4", GitCommit:"c27b913fddd1a6c480c229191a087698aa92f0b1", GitTreeState:"clean", BuildDate:"2019-02-28T13:37:52Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"} The connection to the server 10.0.2.15:8443 was refused - did you specify the right host or port? |
HostServerにアクセス拒否されたというエラーです。
どうやら設定が足りていないようです。スーパーユーザーで試してもダメでした。
1 2 3 4 |
vagrant@minikube:~$ sudo su root@minikube:/home/vagrant# kubectl version Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.4", GitCommit:"c27b913fddd1a6c480c229191a087698aa92f0b1", GitTreeState:"clean", BuildDate:"2019-02-28T13:37:52Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"} The connection to the server localhost:8080 was refused - did you specify the right host or port? |
ここで助けられたのが以下のサイトです。
1 2 3 4 5 6 7 8 |
root@minikube:/home/vagrant# kubectl config view apiVersion: v1 clusters: [] contexts: [] current-context: "" kind: Config preferences: {} users: [] |
で、Kubectlの接続ファイルが空であることが確認できたので、以下のコマンドを打ち込んでいきます。kubectl config view
1 2 3 4 |
mkdir -p $HOME/.kube cp /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG=$HOME/.kube/config |
kubernetesの接続設定が終わったので、kubernetesクラスターを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
minikube start --vm-driver=none 😄minikube v1.4.0 on Ubuntu 16.04 (vbox/amd64) ▪ KUBECONFIG=/root/.kube/config 🤹 Running on localhost (CPUs=2, Memory=1999MB, Disk=9861MB) ... ℹ️ OS release is Ubuntu 16.04.6 LTS 🐳 Preparing Kubernetes v1.16.0 on Docker 18.06.2-ce ... 💾 Downloading kubeadm v1.16.0 💾 Downloading kubelet v1.16.0 🚜 Pulling images ... 🚀 Launching Kubernetes ... 💣 Error starting cluster: cmd failed: sudo env PATH=/var/lib/minikube/binaries/v1.16.0:$PATH kubeadm init --config /var/tmp/minikube/kubeadm.yaml --ignore-preflight-errors=DirAvailable--etc-kubernetes-manifests,DirAvailable--var-lib-minikube,FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml,FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml,FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml,FileAvailable--etc-kubernetes-manifests-etcd.yaml,Port-10250,Swap : running command: sudo env PATH=/var/lib/minikube/binaries/v1.16.0:$PATH kubeadm init --config /var/tmp/minikube/kubeadm.yaml --ignore-preflight-errors=DirAvailable--etc-kubernetes-manifests,DirAvailable--var-lib-minikube,FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml,FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml,FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml,FileAvailable--etc-kubernetes-manifests-etcd.yaml,Port-10250,Swap output: [init] Using Kubernetes version: v1.16.0 [preflight] Running pre-flight checks [WARNING FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml]: /etc/kubernetes/manifests/kube-apiserver.yaml already exists [WARNING FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml]: /etc/kubernetes/manifests/kube-controller-manager.yaml already exists [WARNING FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml]: /etc/kubernetes/manifests/kube-scheduler.yaml already exists [WARNING FileAvailable--etc-kubernetes-manifests-etcd.yaml]: /etc/kubernetes/manifests/etcd.yaml already exists [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/ [WARNING FileExisting-ebtables]: ebtables not found in system path [WARNING FileExisting-socat]: socat not found in system path [WARNING Service-Kubelet]: kubelet service is not enabled, please run 'systemctl enable kubelet.service' [WARNING Port-10250]: Port 10250 is in use error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR Port-8443]: Port 8443 is in use [ERROR Port-10251]: Port 10251 is in use [ERROR Port-10252]: Port 10252 is in use [ERROR Port-2379]: Port 2379 is in use [ERROR Port-2380]: Port 2380 is in use [ERROR DirAvailable--var-lib-minikube-etcd]: /var/lib/minikube/etcd is not empty [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher : running command: sudo env PATH=/var/lib/minikube/binaries/v1.16.0:$PATH kubeadm init --config /var/tmp/minikube/kubeadm.yaml --ignore-preflight-errors=DirAvailable--etc-kubernetes-manifests,DirAvailable--var-lib-minikube,FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml,FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml,FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml,FileAvailable--etc-kubernetes-manifests-etcd.yaml,Port-10250,Swap .: exit status 1 😿 Sorry that minikube crashed. If this was unexpected, we would love to hear from you: 👉 https://github.com/kubernetes/minikube/issues/new/choose ❌ Problems detected in kube-apiserver [22eb439ec881]: I1103 09:57:12.597967 1 log.go:172] http: TLS handshake error from 127.0.0.1:47782: remote error: tls: bad certificate I1103 09:57:12.602728 1 log.go:172] http: TLS handshake error from 127.0.0.1:47786: remote error: tls: bad certificate I1103 09:57:12.628955 1 log.go:172] http: TLS handshake error from 127.0.0.1:47788: remote error: tls: bad certificate ❌ Problems detected in kube-addon-manager [cc2e4ad4406f]: error: error pruning nonNamespaced object /v1, Kind=Namespace: Get https://localhost:8443/api/v1/namespaces?labelSelector=kubernetes.io%2Fcluster-service%21%3Dtrue%2Caddonmanager.kubernetes.io%2Fmode%3DReconcile: dial tcp 127.0.0.1:8443: connect: connection refused |
1 2 3 4 5 6 |
root@minikube:/home/vagrant# kubectl version Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.4", GitCommit:"c27b913fddd1a6c480c229191a087698aa92f0b1", GitTreeState:"clean", BuildDate:"2019-02-28T13:37:52Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:27:17Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"} root@minikube:/home/vagrant# kubectl get nodes NAME STATUS ROLES AGE VERSION minikube Ready master 11d v1.16.0 |
後半のエラーが気になりますが、Kubeコマンドが使えることを確認できました。
2020年4月5日 追記
この記事を読んでいる方のほとんどが学習用にKubernetes環境を用意しようとしている方だと思います。
僕自身もKubernetesについて学習している最中なのですが、今はローカルに全てのKubernetes環境を用意するのではなく、クラウドサービスのKubernetesエンジンを使って学習を進めています。
こっちの方が設定エラーなどに気を取られず、学習を進められるための準備としては手っ取り早いかと思います。
- GCP
クイックスタート | Kubernetes Engine のドキュメント | Google Cloud
Google AccountでGoogle Cloud Platformに入り、Cloud SDK をインストールするだけでKubernetes環境を作成することができます。
これからの時代はクラウドネイティブ、マルチクラウドだ!!
Leave a Reply