#cloud-config coreos: units: - name: kube-apiserver.service command: start content: | [Unit] After=opt-kubernetes.mount etcd2.service ConditionFileIsExecutable=/opt/kubernetes/bin/kube-apiserver Description=Kubernetes API Server Documentation=https://github.com/kubernetes/kubernetes Requires=opt-kubernetes.mount etcd2.service [Service] ExecStart=/opt/kubernetes/bin/kube-apiserver \ --tls-cert-file=./opt/kubernetes/certs/apiserver.pem \ --tls-private-key-file=/opt/kubernetes/certs/apiserver-key.pem \ --client-ca-file=/opt/kubernetes/certs/ca.pem \ --service-account-key-file=/opt/kubernetes/certs/apiserver-key.pem \ --service-account-lookup=${SERVICE_ACCOUNT_LOOKUP} \ --admission-control=${ADMISSION_CONTROL} \ --insecure-bind-address=0.0.0.0 \ --insecure-port=8080 \ --etcd-servers=http://127.0.0.1:2379 \ --kubelet-port=10250 \ --v=4 \ --service-cluster-ip-range=${SERVICE_CLUSTER_IP_RANGE} Restart=always RestartSec=2 [Install] WantedBy=multi-user.target - name: kube-controller-manager.service command: start content: | [Unit] After=opt-kubernetes.mount kube-apiserver.service ConditionFileIsExecutable=/opt/kubernetes/bin/kube-controller-manager Description=Kubernetes Controller Manager Documentation=https://github.com/kubernetes/kubernetes Requires=opt-kubernetes.mount kube-apiserver.service [Service] ExecStart=/opt/kubernetes/bin/kube-controller-manager \ --master=127.0.0.1:8080 \ --service-account-private-key-file=/opt/kubernetes/certs/apiserver-key.pem \ --root-ca-file=/opt/kubernetes/certs/ca.pem \ --v=4 Restart=always RestartSec=2 [Install] WantedBy=multi-user.target - name: kube-scheduler.service command: start content: | [Unit] After=opt-kubernetes.mount kube-apiserver.service ConditionFileIsExecutable=/opt/kubernetes/bin/kube-scheduler Description=Kubernetes Scheduler Documentation=https://github.com/kubernetes/kubernetes Requires=opt-kubernetes.mount kube-apiserver.service [Service] ExecStart=/opt/kubernetes/bin/kube-scheduler \ --master=127.0.0.1:8080 Restart=always RestartSec=2 [Install] WantedBy=multi-user.target - name: kube-addons.service command: start content: | [Unit] After=opt-kubernetes.mount kube-apiserver.service ConditionPathIsDirectory=/opt/kubernetes/addons Description=Kubernetes addons Documentation=https://github.com/kubernetes/kubernetes Requires=opt-kubernetes.mount Wants=kube-apiserver.service [Service] Type=oneshot ExecStartPre=/bin/bash -c 'while [[ \"\$(curl -s http://127.0.0.1:8080/healthz)\" != \"ok\" ]]; do sleep 1; done' ExecStartPre=/bin/sleep 10 ExecStart=/opt/kubernetes/bin/kubectl create -f /opt/kubernetes/addons ExecStop=/opt/kubernetes/bin/kubectl delete -f /opt/kubernetes/addons RemainAfterExit=yes [Install] WantedBy=multi-user.target