diff --git a/cluster/gce/coreos/configure-node.sh b/cluster/gce/coreos/configure-node.sh index 7a9c0c65e51..d8cbf1c9e0e 100644 --- a/cluster/gce/coreos/configure-node.sh +++ b/cluster/gce/coreos/configure-node.sh @@ -160,6 +160,10 @@ function configure-master-addons() { CLUSTER_REGISTRY_DISK_SIZE=$(convert-bytes-gce-kube "${CLUSTER_REGISTRY_DISK_SIZE}") evaluate-manifests-dir ${MANIFESTS_DIR}/addons/registry ${addon_dir}/registry fi + + if [[ "${ENABLE_NODE_PROBLEM_DETECTOR}" == "true" ]]; then + evaluate-manifests-dir ${MANIFESTS_DIR}/addons/node-problem-detector ${addon_dir}/node-problem-detector + fi } function configure-master-components() { diff --git a/cluster/gce/coreos/kube-manifests/addons/dns/skydns-rc.yaml b/cluster/gce/coreos/kube-manifests/addons/dns/skydns-rc.yaml index ff3e6e08795..1a1ee3b1c0f 100644 --- a/cluster/gce/coreos/kube-manifests/addons/dns/skydns-rc.yaml +++ b/cluster/gce/coreos/kube-manifests/addons/dns/skydns-rc.yaml @@ -1,27 +1,27 @@ apiVersion: v1 kind: ReplicationController metadata: - name: kube-dns-v11 + name: kube-dns-v14 namespace: kube-system labels: k8s-app: kube-dns - version: v11 + version: v14 kubernetes.io/cluster-service: "true" spec: replicas: ${DNS_REPLICAS} selector: k8s-app: kube-dns - version: v11 + version: v14 template: metadata: labels: k8s-app: kube-dns - version: v11 + version: v14 kubernetes.io/cluster-service: "true" spec: containers: - - name: etcd - image: gcr.io/google_containers/etcd-amd64:2.2.1 + - name: kubedns + image: gcr.io/google_containers/kubedns-amd64:1.3 resources: # TODO: Set memory limits when we've profiled the container for large # clusters, then set request = limit to keep this container in @@ -29,33 +29,6 @@ spec: # "burstable" category so the kubelet doesn't backoff from restarting it. limits: cpu: 100m - memory: 500Mi - requests: - cpu: 100m - memory: 50Mi - command: - - /usr/local/bin/etcd - - -data-dir - - /var/etcd/data - - -listen-client-urls - - http://127.0.0.1:2379,http://127.0.0.1:4001 - - -advertise-client-urls - - http://127.0.0.1:2379,http://127.0.0.1:4001 - - -initial-cluster-token - - skydns-etcd - volumeMounts: - - name: etcd-storage - mountPath: /var/etcd/data - - name: kube2sky - image: gcr.io/google_containers/kube2sky:1.15 - resources: - # TODO: Set memory limits when we've profiled the container for large - # clusters, then set request = limit to keep this container in - # guaranteed class. Currently, this container falls into the - # "burstable" category so the kubelet doesn't backoff from restarting it. - limits: - cpu: 100m - # Kube2sky watches all pods. memory: 200Mi requests: cpu: 100m @@ -78,32 +51,23 @@ spec: # only setup the /readiness HTTP server once that's available. initialDelaySeconds: 30 timeoutSeconds: 5 - command: - - /kube2sky args: - # command = "/kube2sky" - - --domain=${DNS_DOMAIN} - - name: skydns - image: gcr.io/google_containers/skydns:2015-10-13-8c72f8c - resources: - # TODO: Set memory limits when we've profiled the container for large - # clusters, then set request = limit to keep this container in - # guaranteed class. Currently, this container falls into the - # "burstable" category so the kubelet doesn't backoff from restarting it. - limits: - cpu: 100m - memory: 200Mi - requests: - cpu: 100m - memory: 50Mi - command: - - /skydns + # command = "/kube-dns" + - --domain=${DNS_DOMAIN}. + - --dns-port=10053 + ports: + - containerPort: 10053 + name: dns-local + protocol: UDP + - containerPort: 10053 + name: dns-tcp-local + protocol: TCP + - name: dnsmasq + image: gcr.io/google_containers/dnsmasq:1.1 args: - # command = "/skydns" - - -machines=http://127.0.0.1:4001 - - -addr=0.0.0.0:53 - - -ns-rotate=false - - -domain=${DNS_DOMAIN}. + - --cache-size=1000 + - --no-resolv + - --server=127.0.0.1#10053 ports: - containerPort: 53 name: dns @@ -112,7 +76,7 @@ spec: name: dns-tcp protocol: TCP - name: healthz - image: gcr.io/google_containers/exechealthz:1.0 + image: gcr.io/google_containers/exechealthz-amd64:1.0 resources: # keep request = limit to keep this container in guaranteed class limits: @@ -121,15 +85,10 @@ spec: requests: cpu: 10m memory: 20Mi - command: - - /exechealthz args: - -cmd=nslookup kubernetes.default.svc.${DNS_DOMAIN} 127.0.0.1 >/dev/null - -port=8080 ports: - containerPort: 8080 protocol: TCP - volumes: - - name: etcd-storage - emptyDir: {} - dnsPolicy: Default # Don't use cluster DNS. \ No newline at end of file + dnsPolicy: Default # Don't use cluster DNS. diff --git a/cluster/gce/coreos/kube-manifests/addons/fluentd-elasticsearch/es-controller.yaml b/cluster/gce/coreos/kube-manifests/addons/fluentd-elasticsearch/es-controller.yaml index 509c3456751..c875984e108 100644 --- a/cluster/gce/coreos/kube-manifests/addons/fluentd-elasticsearch/es-controller.yaml +++ b/cluster/gce/coreos/kube-manifests/addons/fluentd-elasticsearch/es-controller.yaml @@ -20,7 +20,7 @@ spec: kubernetes.io/cluster-service: "true" spec: containers: - - image: gcr.io/google_containers/elasticsearch:1.8 + - image: gcr.io/google_containers/elasticsearch:1.9 name: elasticsearch-logging resources: # keep request = limit to keep this container in guaranteed class @@ -40,4 +40,4 @@ spec: mountPath: /data volumes: - name: es-persistent-storage - emptyDir: {} \ No newline at end of file + emptyDir: {} diff --git a/cluster/gce/coreos/kube-manifests/addons/node-problem-detector/node-problem-detector.yaml b/cluster/gce/coreos/kube-manifests/addons/node-problem-detector/node-problem-detector.yaml new file mode 100644 index 00000000000..e206cdf2092 --- /dev/null +++ b/cluster/gce/coreos/kube-manifests/addons/node-problem-detector/node-problem-detector.yaml @@ -0,0 +1,44 @@ +apiVersion: extensions/v1beta1 +kind: DaemonSet +metadata: + name: node-problem-detector-v0.1 + namespace: kube-system + labels: + k8s-app: node-problem-detector + version: v0.1 + kubernetes.io/cluster-service: "true" +spec: + template: + metadata: + labels: + k8s-app: node-problem-detector + version: v0.1 + kubernetes.io/cluster-service: "true" + spec: + hostNetwork: true + containers: + - name: node-problem-detector + image: gcr.io/google_containers/node-problem-detector:v0.1 + env: + # Config the host ip and port of apiserver. + - name: "KUBERNETES_SERVICE_HOST" + value: ${INSTANCE_PREFIX}-master + - name: "KUBERNETES_SERVICE_PORT" + value: "443" + securityContext: + privileged: true + resources: + limits: + cpu: "200m" + memory: "100Mi" + requests: + cpu: "20m" + memory: "20Mi" + volumeMounts: + - name: log + mountPath: /log + readOnly: true + volumes: + - name: log + hostPath: + path: /var/log/ diff --git a/cluster/gce/coreos/master-docker.yaml b/cluster/gce/coreos/master-docker.yaml index 50849eaa5aa..67240950185 100644 --- a/cluster/gce/coreos/master-docker.yaml +++ b/cluster/gce/coreos/master-docker.yaml @@ -35,7 +35,7 @@ coreos: Type=oneshot RemainAfterExit=yes ExecStartPre=/usr/bin/mkdir -p /opt/cni - ExecStartPre=/usr/bin/curl --fail --silent --show-error --location --create-dirs --output /opt/downloads/cni.tar.gz https://storage.googleapis.com/kubernetes-release/network-plugins/cni-42c4cb842dad606a84e93aad5a4484ded48e3046.tar.gz + ExecStartPre=/usr/bin/curl --fail --silent --show-error --location --create-dirs --output /opt/downloads/cni.tar.gz https://storage.googleapis.com/kubernetes-release/network-plugins/cni-c864f0e1ea73719b8f4582402b0847064f9883b0.tar.gz ExecStart=/usr/bin/tar xf /opt/downloads/cni.tar.gz -C /opt/cni/ - name: kubernetes-download-salt.service diff --git a/cluster/gce/coreos/master-rkt.yaml b/cluster/gce/coreos/master-rkt.yaml index ede9fff5cc9..1f7060568c5 100644 --- a/cluster/gce/coreos/master-rkt.yaml +++ b/cluster/gce/coreos/master-rkt.yaml @@ -35,7 +35,7 @@ coreos: Type=oneshot RemainAfterExit=yes ExecStartPre=/usr/bin/mkdir -p /opt/cni - ExecStartPre=/usr/bin/curl --fail --silent --show-error --location --create-dirs --output /opt/downloads/cni.tar.gz https://storage.googleapis.com/kubernetes-release/network-plugins/cni-42c4cb842dad606a84e93aad5a4484ded48e3046.tar.gz + ExecStartPre=/usr/bin/curl --fail --silent --show-error --location --create-dirs --output /opt/downloads/cni.tar.gz https://storage.googleapis.com/kubernetes-release/network-plugins/cni-c864f0e1ea73719b8f4582402b0847064f9883b0.tar.gz ExecStart=/usr/bin/tar xf /opt/downloads/cni.tar.gz -C /opt/cni/ - name: kubernetes-install-docker2aci.service diff --git a/cluster/gce/coreos/node-docker.yaml b/cluster/gce/coreos/node-docker.yaml index 0246c056a10..5096f9e5300 100644 --- a/cluster/gce/coreos/node-docker.yaml +++ b/cluster/gce/coreos/node-docker.yaml @@ -35,7 +35,7 @@ coreos: Type=oneshot RemainAfterExit=yes ExecStartPre=/usr/bin/mkdir -p /opt/cni - ExecStartPre=/usr/bin/curl --fail --silent --show-error --location --create-dirs --output /opt/downloads/cni.tar.gz https://storage.googleapis.com/kubernetes-release/network-plugins/cni-42c4cb842dad606a84e93aad5a4484ded48e3046.tar.gz + ExecStartPre=/usr/bin/curl --fail --silent --show-error --location --create-dirs --output /opt/downloads/cni.tar.gz https://storage.googleapis.com/kubernetes-release/network-plugins/cni-c864f0e1ea73719b8f4582402b0847064f9883b0.tar.gz ExecStart=/usr/bin/tar xf /opt/downloads/cni.tar.gz -C /opt/cni/ - name: kubernetes-download-manifests.service diff --git a/cluster/gce/coreos/node-rkt.yaml b/cluster/gce/coreos/node-rkt.yaml index 803ac735697..2b72e16cf38 100644 --- a/cluster/gce/coreos/node-rkt.yaml +++ b/cluster/gce/coreos/node-rkt.yaml @@ -35,7 +35,7 @@ coreos: Type=oneshot RemainAfterExit=yes ExecStartPre=/usr/bin/mkdir -p /opt/cni - ExecStartPre=/usr/bin/curl --fail --silent --show-error --location --create-dirs --output /opt/downloads/cni.tar.gz https://storage.googleapis.com/kubernetes-release/network-plugins/cni-42c4cb842dad606a84e93aad5a4484ded48e3046.tar.gz + ExecStartPre=/usr/bin/curl --fail --silent --show-error --location --create-dirs --output /opt/downloads/cni.tar.gz https://storage.googleapis.com/kubernetes-release/network-plugins/cni-c864f0e1ea73719b8f4582402b0847064f9883b0.tar.gz ExecStart=/usr/bin/tar xf /opt/downloads/cni.tar.gz -C /opt/cni/ - name: kubernetes-install-rkt.service