Using with kubeadm
Step 1: Edit your /etc/systemd/system/kubelet.service.d/10-kubeadm.conf to add --cloud-provider=external
to the kubelet arguments
Environment="KUBELET_KUBECONFIG_ARGS=--cloud-provider=external --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Step 2: Use the kubeadm.conf
in manifests directory, edit it as appropriate and use the kubeadm.conf like so.
kubeadm init --config kubeadm.conf
Then follow the usual steps to bootstrap the other nodes using kubeadm join
Step 3: build the container image using the following (make bootstrap
will download go SDK and glide if needed)
GOOS=linux make images
Save the image using:
docker save openstack/openstack-cloud-controller-manager:v0.1.0 | gzip > openstack-cloud-controller-manager.tgz
Copy the tgz over to the nodes and load them up:
gzip -d openstack-cloud-controller-manager.tgz
docker load < openstack-cloud-controller-manager.tar
Step 4: Create a configmap with the openstack cloud configuration (see manifests/controller-manager/cloud-config
)
kubectl create configmap cloud-config --from-file=/etc/kubernetes/cloud-config -n kube-system
Step 5: Deploy controller manager
Option #1 - Using a single pod with the definition in manifests/controller-manager/openstack-cloud-controller-manager-pod.yaml
kubectl create -f manifests/controller-manager/openstack-cloud-controller-manager-pod.yaml
Option #2 - Using a daemonset
kubectl create -f manifests/controller-manager/openstack-cloud-controller-manager-ds.yaml
Step 6: Monitor using kubectl, for example:
for Option #1:
kubectl get pods -n kube-system
kubectl get pods -n kube-system openstack-cloud-controller-manager -o json
kubectl describe pod/openstack-cloud-controller-manager -n kube-system
for Option #2:
kubectl get ds -n kube-system
kubectl get ds -n kube-system openstack-cloud-controller-manager -o json
kubectl describe ds/openstack-cloud-controller-manager -n kube-system
Step 7: TBD - test features