#cloud-config coreos: units: - name: kube-env.service command: start content: | [Unit] Description=Fetch kubernetes-node-environment Requires=network-online.target After=network-online.target [Service] Type=oneshot RemainAfterExit=yes ExecStartPre=/usr/bin/curl --fail --silent --show-error \ -H "X-Google-Metadata-Request: True" \ -o /etc/kube-env.yaml \ http://metadata.google.internal/computeMetadata/v1/instance/attributes/kube-env # Transform the yaml to env file. ExecStartPre=/usr/bin/mv /etc/kube-env.yaml /etc/kube-env ExecStart=/usr/bin/sed -i "s/: '/=/;s/'$//" /etc/kube-env - name: kubernetes-install-rkt.service command: start content: | [Unit] Description=Fetch rkt Documentation=http://github.com/coreos/rkt Requires=network-online.target After=network-online.target Requires=kube-env.service After=kube-env.service [Service] Type=oneshot RemainAfterExit=yes EnvironmentFile=/etc/kube-env ExecStartPre=/usr/bin/mkdir -p /etc/rkt ExecStartPre=/usr/bin/mkdir -p /opt/downloads ExecStartPre=/usr/bin/curl --fail --silent --show-error --location --create-dirs --output \ /opt/downloads/rkt.tar.gz https://github.com/coreos/rkt/releases/download/v${RKT_VERSION}/rkt-v${RKT_VERSION}.tar.gz ExecStart=/usr/bin/tar xf /opt/downloads/rkt.tar.gz -C /opt --overwrite - name: kubernetes-download-salt.service command: start content: | [Unit] Description=Download salt Requires=network-online.target After=network-online.target Requires=kube-env.service After=kube-env.service [Service] Type=oneshot RemainAfterExit=yes EnvironmentFile=/etc/kube-env ExecStartPre=/usr/bin/mkdir -p /opt/downloads ExecStartPre=/usr/bin/curl --fail --silent --show-error --location --create-dirs --output \ /opt/downloads/kubernetes-salt.tar.gz ${SALT_TAR_URL} # TODO(yifan): Check hash. ExecStart=/usr/bin/tar xf /opt/downloads/kubernetes-salt.tar.gz -C /opt --overwrite - name: kubernetes-download-manifests.service command: start content: | [Unit] Description=Download manifests Requires=network-online.target After=network-online.target Requires=kube-env.service After=kube-env.service [Service] Type=oneshot RemainAfterExit=yes EnvironmentFile=/etc/kube-env ExecStartPre=/usr/bin/mkdir -p /opt/downloads ExecStartPre=/usr/bin/curl --fail --silent --show-error --location --create-dirs --output \ /opt/downloads/kubernetes-manifests.tar.gz ${KUBE_MANIFESTS_TAR_URL} # TODO(yifan): Check hash. ExecStartPre=/usr/bin/mkdir -p /opt/kube-manifests ExecStart=/usr/bin/tar xf /opt/downloads/kubernetes-manifests.tar.gz -C /opt/kube-manifests --overwrite - name: kubernetes-install-node.service command: start content: | [Unit] Description=Install Kubernetes Server Requires=network-online.target After=network-online.target Requires=kube-env.service After=kube-env.service [Service] Type=oneshot RemainAfterExit=yes EnvironmentFile=/etc/kube-env ExecStartPre=/usr/bin/mkdir -p /opt/downloads ExecStartPre=/usr/bin/curl --fail --silent --show-error --location --create-dirs --output \ /opt/downloads/kubernetes-server-linux-amd64.tar.gz ${SERVER_BINARY_TAR_URL} # TODO(yifan): Check hash. ExecStart=/usr/bin/tar xf /opt/downloads/kubernetes-server-linux-amd64.tar.gz -C /opt --overwrite - name: kubelet.service command: start content: | [Unit] Description=Run Kubelet service Requires=network-online.target After=network-online.target Requires=kube-env.service After=kube-env.service Requires=kubernetes-download-manifests.service After=kubernetes-download-manifests.service [Service] EnvironmentFile=/etc/kube-env ExecStartPre=/usr/bin/curl --fail --silent --show-error \ -H "X-Google-Metadata-Request: True" \ -o /run/configure-kubelet.sh \ http://metadata.google.internal/computeMetadata/v1/instance/attributes/configure-kubelet ExecStartPre=/usr/bin/chmod 0755 /run/configure-kubelet.sh ExecStartPre=/run/configure-kubelet.sh ExecStart=/opt/kubernetes/server/bin/kubelet \ --api-servers=https://${INSTANCE_PREFIX}-master \ --enable-debugging-handlers=false \ --cloud-provider=gce \ --config=/etc/kubernetes/manifests \ --allow-privileged=true \ --v=2 \ --cluster-dns=${DNS_SERVER_IP} \ --cluster-domain=${DNS_DOMAIN} \ --logtostderr=true \ --container-runtime=${KUBERNETES_CONTAINER_RUNTIME} \ --rkt-path=/opt/rkt-v${RKT_VERSON}/rkt \ --configure-cbr0=${KUBERNETES_CONFIGURE_CBR0} \ --pod-cidr=${MASTER_IP_RANGE} \ --register-schedulable=false \ --reconcile-cidr=false Restart=always RestartSec=10 - name: docker.service drop-ins: - name: 50-docker-opts.conf content: | [Service] Environment='DOCKER_OPTS=--bridge=cbr0 --iptables=false --ip-masq=false' MountFlags=slave LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity Restart=always RestartSec=2s StartLimitInterval=0 - name: kubernetes-configure-node.service command: start content: | [Unit] Description=Configure Node For Kubernetes service Requires=kubernetes-install-node.service After=kubernetes-install-node.service Requires=kubernetes-install-rkt.service After=kubernetes-install-rkt.service Requires=kubernetes-download-salt.service After=kubernetes-download-salt.service Requires=kubernetes-download-manifests.service After=kubernetes-download-manifests.service # Need the kubelet/docker running because we will use docker load for docker images. Requires=kubelet.service After=kubelet.service [Service] Type=oneshot RemainAfterExit=yes EnvironmentFile=/etc/kube-env ExecStartPre=/usr/bin/curl --fail --silent --show-error \ -H "X-Google-Metadata-Request: True" \ -o /run/configure-node.sh \ http://metadata.google.internal/computeMetadata/v1/instance/attributes/configure-node ExecStartPre=/usr/bin/chmod 0755 /run/configure-node.sh ExecStart=/run/configure-node.sh - name: kubernetes-addons.service command: start content: | [Unit] Description=Start Kubernetes addons and watch for updates. Requires=kubernetes-configure-node.service After=kubernetes-configure-node.service [Service] Environment=KUBECTL_BIN=/opt/kubernetes/server/bin/kubectl Environment=kubelet_kubeconfig_file=/var/lib/kubelet/kubeconfig ExecStartPre=/usr/bin/chmod 0755 /opt/kubernetes/saltbase/salt/kube-addons/kube-addons.sh ExecStart=/opt/kubernetes/saltbase/salt/kube-addons/kube-addons.sh Restart=always RestartSec=10