Steps
- Setup Hyper-V and create an external switch
- Install Minikube for Windows
minikube start --vm-driver=hyperv --network-plugin=cni --enable-default-cni --extra-config=kubeadm.pod-network-cidr=10.244.0.0/16
Worklog:
- can't bring up with
--network-plugin=cni
, kube-proxy never starts sokubeadm start
waits until it times out - will start with default CNI, then deploy flannel as described at https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#pod-network
- Modified that file to use
host-gw
- Still can't start it, missing pod CIDR so init container fails
kubectl logs -n kube-system kube-flannel-ds-amd64-9wq9m I0501 23:20:51.533895 1 main.go:514] Determining IP address of default interface I0501 23:20:51.534202 1 main.go:527] Using interface with name eth0 and address 10.91.46.84 I0501 23:20:51.534222 1 main.go:544] Defaulting external address to interface address (10.91.46.84) I0501 23:20:51.631550 1 kube.go:126] Waiting 10m0s for node controller to sync I0501 23:20:51.631579 1 kube.go:309] Starting kube subnet manager I0501 23:20:52.631986 1 kube.go:133] Node controller sync successful I0501 23:20:52.632077 1 main.go:244] Created subnet manager: Kubernetes Subnet Manager - minikube I0501 23:20:52.632087 1 main.go:247] Installing signal handlers I0501 23:20:52.728845 1 main.go:386] Found network config - Backend type: host-gw E0501 23:20:52.729025 1 main.go:289] Error registering network: failed to acquire lease: node "minikube" pod cidr not assigned I0501 23:20:52.729148 1 main.go:366] Stopping shutdownHandler...
- Can't use
kubeadm --extra-config
to work around itminikube start --vm-driver=hyperv --network-plugin=cni --enable-default-cni --extra-config=kubeadm.pod-network-cidr=10.2 44.0.0/16 o minikube v1.0.1 on windows (amd64) $ Downloading Kubernetes v1.14.1 images in the background ... > Creating hyperv VM (CPUs=2, Memory=2048MB, Disk=20000MB) ... - "minikube" IP address is 10.91.46.89 - Configuring Docker as the container runtime ... - Version of container runtime is 18.06.3-ce : Waiting for image downloads to complete ... - Preparing Kubernetes environment ... - kubeadm.pod-network-cidr=10.244.0.0/16 - Pulling images required by Kubernetes v1.14.1 ... - Launching Kubernetes v1.14.1 using kubeadm ... ! Error starting cluster: kubeadm init: sudo /usr/bin/kubeadm init --config /var/lib/kubeadm.yaml --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=DirAvailable--etc-kubernetes-manifests --ignore-preflight-errors=DirAvailable--data-minikube --ignore-preflight-errors=Port-10250 --ignore-preflight-errors=FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml --ignore-preflight-errors=FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml --ignore-preflight-errors=FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml --ignore-preflight-errors=FileAvailable--etc-kubernetes-manifests-etcd.yaml --ignore-preflight-errors=Swap --ignore-preflight-errors=CRI can not mix '--config' with arguments [pod-network-cidr] : Process exited with status 1 * Sorry that minikube crashed. If this was unexpected, we would love to hear from you: - https://github.com/kubernetes/minikube/issues/new
- This looks helpful. kubernetes/minikube#3892
- Otherwise - need a full config. Trying to find one on disk
minikube ssh _ _ _ _ ( ) ( ) ___ ___ (_) ___ (_)| |/') _ _ | |_ __ /' _ ` _ `\| |/' _ `\| || , < ( ) ( )| '_`\ /'__`\ | ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )( ___/ (_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____) $ cd /var/lib $ ls arpd containers dockershim kubeadm.yaml minikube systemd boot2docker dbus glusterd kubelet minishift toolbox cni docker hyperv machines sudo $ cat kubeadm.yaml cat: kubeadm.yaml: Permission denied $ sudo cat kubeadm.yaml apiVersion: kubeadm.k8s.io/v1beta1 kind: InitConfiguration localAPIEndpoint: advertiseAddress: 10.91.46.84 bindPort: 8443 bootstrapTokens: - groups: - system:bootstrappers:kubeadm:default-node-token ttl: 24h0m0s usages: - signing - authentication nodeRegistration: criSocket: /var/run/dockershim.sock name: minikube taints: [] --- apiVersion: kubeadm.k8s.io/v1beta1 kind: ClusterConfiguration apiServer: extraArgs: enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota" certificatesDir: /var/lib/minikube/certs/ clusterName: kubernetes controlPlaneEndpoint: localhost:8443 dns: type: CoreDNS etcd: local: dataDir: /data/minikube kubernetesVersion: v1.14.1 networking: dnsDomain: cluster.local podSubnet: "" serviceSubnet: 10.96.0.0/12 --- apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration imageGCHighThresholdPercent: 100 evictionHard: nodefs.available: "0%" nodefs.inodesFree: "0%" imagefs.available: "0%"
docker run --rm -v "$PWD":/go/src/k8s.io/minikube -w /go/src/k8s.io/minikube golang:stretch make cross
Resources:
- makefile from slack discussion - https://github.com/coreos/flannel/blob/2275cad1b15d00c57c20bdc8db97b419b21f5f60/Makefile#L220
- Using Minikube - https://kubernetes.io/docs/setup/minikube/
- Setup Hyper-V - https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v
- Install Minikube https://kubernetes.io/docs/tasks/tools/install-minikube/
Yamls
Standard: https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml Minikube simplified: https://raw.githubusercontent.com/coreos/flannel/master/Documentation/minikube.yml