diff --git a/Documentation/kubernetes.md b/Documentation/kubernetes.md index e0d9109f..affc7587 100644 --- a/Documentation/kubernetes.md +++ b/Documentation/kubernetes.md @@ -56,21 +56,22 @@ Get all pods. $ kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE - kube-system heapster-v1.2.0-4088228293-k3yn8 2/2 Running 0 3m - kube-system kube-apiserver-node1.example.com 1/1 Running 0 4m - kube-system kube-controller-manager-node1.example.com 1/1 Running 0 3m - kube-system kube-dns-v19-l2u8r 3/3 Running 0 4m - kube-system kube-proxy-node1.example.com 1/1 Running 0 3m - kube-system kube-proxy-node2.example.com 1/1 Running 0 3m - kube-system kube-proxy-node3.example.com 1/1 Running 0 3m - kube-system kube-scheduler-node1.example.com 1/1 Running 0 3m - kube-system kubernetes-dashboard-v1.4.1-0iy07 1/1 Running 0 4m + kube-system heapster-v1.2.0-4088228293-5xbgg 2/2 Running 0 41m + kube-system kube-apiserver-node1.example.com 1/1 Running 0 40m + kube-system kube-controller-manager-node1.example.com 1/1 Running 0 40m + kube-system kube-dns-782804071-326dd 4/4 Running 0 41m + kube-system kube-dns-autoscaler-2715466192-8bm78 1/1 Running 0 41m + kube-system kube-proxy-node1.example.com 1/1 Running 0 41m + kube-system kube-proxy-node2.example.com 1/1 Running 0 41m + kube-system kube-proxy-node3.example.com 1/1 Running 0 40m + kube-system kube-scheduler-node1.example.com 1/1 Running 0 40m + kube-system kubernetes-dashboard-3543765157-2nqgh 1/1 Running 0 41m ## Kubernetes Dashboard Access the Kubernetes Dashboard with `kubeconfig` credentials by port forwarding to the dashboard pod. - $ kubectl port-forward kubernetes-dashboard-v1.4.1-SOME-ID 9090 -n=kube-system + $ kubectl port-forward kubernetes-dashboard-SOME-ID 9090 -n=kube-system Forwarding from 127.0.0.1:9090 -> 9090 Then visit [http://127.0.0.1:9090](http://127.0.0.1:9090/). diff --git a/examples/ignition/k8s-controller.yaml b/examples/ignition/k8s-controller.yaml index ff47e14e..d0503e7e 100644 --- a/examples/ignition/k8s-controller.yaml +++ b/examples/ignition/k8s-controller.yaml @@ -243,6 +243,7 @@ storage: - --client-ca-file=/etc/kubernetes/ssl/ca.pem - --service-account-key-file=/etc/kubernetes/ssl/apiserver-key.pem - --runtime-config=extensions/v1beta1/networkpolicies=true + - --anonymous-auth=false livenessProbe: httpGet: host: 127.0.0.1 @@ -350,36 +351,74 @@ storage: port: 10251 initialDelaySeconds: 15 timeoutSeconds: 15 - - path: /srv/kubernetes/manifests/kube-dns-rc.yaml + - path: /srv/kubernetes/manifests/kube-dns-autoscaler-deployment.yaml filesystem: root contents: inline: | - apiVersion: v1 - kind: ReplicationController + apiVersion: extensions/v1beta1 + kind: Deployment metadata: - name: kube-dns-v20 + name: kube-dns-autoscaler + namespace: kube-system + labels: + k8s-app: kube-dns-autoscaler + kubernetes.io/cluster-service: "true" + spec: + template: + metadata: + labels: + k8s-app: kube-dns-autoscaler + annotations: + scheduler.alpha.kubernetes.io/critical-pod: '' + scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]' + spec: + containers: + - name: autoscaler + image: gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.0.0 + resources: + requests: + cpu: "20m" + memory: "10Mi" + command: + - /cluster-proportional-autoscaler + - --namespace=kube-system + - --configmap=kube-dns-autoscaler + - --mode=linear + - --target=Deployment/kube-dns + - --default-params={"linear":{"coresPerReplica":256,"nodesPerReplica":16,"min":1}} + - --logtostderr=true + - --v=2 + - path: /srv/kubernetes/manifests/kube-dns-deployment.yaml + filesystem: root + contents: + inline: | + apiVersion: extensions/v1beta1 + kind: Deployment + metadata: + name: kube-dns namespace: kube-system labels: k8s-app: kube-dns - version: v20 kubernetes.io/cluster-service: "true" spec: - replicas: 1 + strategy: + rollingUpdate: + maxSurge: 10% + maxUnavailable: 0 selector: - k8s-app: kube-dns - version: v20 + matchLabels: + k8s-app: kube-dns template: metadata: labels: k8s-app: kube-dns - version: v20 annotations: scheduler.alpha.kubernetes.io/critical-pod: '' scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]' spec: containers: - name: kubedns - image: gcr.io/google_containers/kubedns-amd64:1.8 + image: gcr.io/google_containers/kubedns-amd64:1.9 resources: limits: memory: 170Mi @@ -405,6 +444,11 @@ storage: args: - --domain=cluster.local. - --dns-port=10053 + - --config-map=kube-dns + - --v=2 + env: + - name: PROMETHEUS_PORT + value: "10055" ports: - containerPort: 10053 name: dns-local @@ -412,6 +456,9 @@ storage: - containerPort: 10053 name: dns-tcp-local protocol: TCP + - containerPort: 10055 + name: metrics + protocol: TCP - name: dnsmasq image: gcr.io/google_containers/kube-dnsmasq-amd64:1.4 livenessProbe: @@ -435,6 +482,31 @@ storage: - containerPort: 53 name: dns-tcp protocol: TCP + resources: + requests: + cpu: 150m + memory: 10Mi + - name: dnsmasq-metrics + image: gcr.io/google_containers/dnsmasq-metrics-amd64:1.0 + livenessProbe: + httpGet: + path: /metrics + port: 10054 + scheme: HTTP + initialDelaySeconds: 60 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 5 + args: + - --v=2 + - --logtostderr + ports: + - containerPort: 10054 + name: metrics + protocol: TCP + resources: + requests: + memory: 10Mi - name: healthz image: gcr.io/google_containers/exechealthz-amd64:1.2 resources: @@ -516,14 +588,6 @@ storage: scheme: HTTP initialDelaySeconds: 180 timeoutSeconds: 5 - resources: - # keep request = limit to keep this container in guaranteed class - limits: - cpu: 80m - memory: 200Mi - requests: - cpu: 80m - memory: 200Mi command: - /heapster - --source=kubernetes.summary_api:'' @@ -574,37 +638,35 @@ storage: targetPort: 8082 selector: k8s-app: heapster - - path: /srv/kubernetes/manifests/kube-dashboard-rc.yaml + - path: /srv/kubernetes/manifests/kube-dashboard-deployment.yaml filesystem: root contents: inline: | - apiVersion: v1 - kind: ReplicationController + apiVersion: extensions/v1beta1 + kind: Deployment metadata: - name: kubernetes-dashboard-v1.4.1 + name: kubernetes-dashboard namespace: kube-system labels: k8s-app: kubernetes-dashboard - version: v1.4.1 kubernetes.io/cluster-service: "true" spec: - replicas: 1 selector: - k8s-app: kubernetes-dashboard + matchLabels: + k8s-app: kubernetes-dashboard template: metadata: labels: k8s-app: kubernetes-dashboard - version: v1.4.1 - kubernetes.io/cluster-service: "true" annotations: scheduler.alpha.kubernetes.io/critical-pod: '' scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]' spec: containers: - name: kubernetes-dashboard - image: gcr.io/google_containers/kubernetes-dashboard-amd64:v1.4.1 + image: gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.0 resources: + # keep request = limit to keep this container in guaranteed class limits: cpu: 100m memory: 50Mi @@ -695,14 +757,15 @@ storage: sleep 5 done echo "K8S: DNS addon" - curl --silent -H "Content-Type: application/yaml" -XPOST -d"$(cat /srv/kubernetes/manifests/kube-dns-rc.yaml)" "http://127.0.0.1:8080/api/v1/namespaces/kube-system/replicationcontrollers" > /dev/null - curl --silent -H "Content-Type: application/yaml" -XPOST -d"$(cat /srv/kubernetes/manifests/kube-dns-svc.yaml)" "http://127.0.0.1:8080/api/v1/namespaces/kube-system/services" > /dev/null + curl --silent -H "Content-Type: application/yaml" -XPOST -d"$(cat /srv/kubernetes/manifests/kube-dns-deployment.yaml)" "http://127.0.0.1:8080/apis/extensions/v1beta1/namespaces/kube-system/deployments" + curl --silent -H "Content-Type: application/yaml" -XPOST -d"$(cat /srv/kubernetes/manifests/kube-dns-svc.yaml)" "http://127.0.0.1:8080/api/v1/namespaces/kube-system/services" + curl --silent -H "Content-Type: application/yaml" -XPOST -d"$(cat /srv/kubernetes/manifests/kube-dns-autoscaler-deployment.yaml)" "http://127.0.0.1:8080/apis/extensions/v1beta1/namespaces/kube-system/deployments" echo "K8S: Heapster addon" curl --silent -H "Content-Type: application/yaml" -XPOST -d"$(cat /srv/kubernetes/manifests/heapster-deployment.yaml)" "http://127.0.0.1:8080/apis/extensions/v1beta1/namespaces/kube-system/deployments" curl --silent -H "Content-Type: application/yaml" -XPOST -d"$(cat /srv/kubernetes/manifests/heapster-svc.yaml)" "http://127.0.0.1:8080/api/v1/namespaces/kube-system/services" echo "K8S: Dashboard addon" - curl --silent -H "Content-Type: application/yaml" -XPOST -d"$(cat /srv/kubernetes/manifests/kube-dashboard-rc.yaml)" "http://127.0.0.1:8080/api/v1/namespaces/kube-system/replicationcontrollers" > /dev/null - curl --silent -H "Content-Type: application/yaml" -XPOST -d"$(cat /srv/kubernetes/manifests/kube-dashboard-svc.yaml)" "http://127.0.0.1:8080/api/v1/namespaces/kube-system/services" > /dev/null + curl --silent -H "Content-Type: application/yaml" -XPOST -d"$(cat /srv/kubernetes/manifests/kube-dashboard-deployment.yaml)" "http://127.0.0.1:8080/apis/extensions/v1beta1/namespaces/kube-system/deployments" + curl --silent -H "Content-Type: application/yaml" -XPOST -d"$(cat /srv/kubernetes/manifests/kube-dashboard-svc.yaml)" "http://127.0.0.1:8080/api/v1/namespaces/kube-system/services" {{ if index . "ssh_authorized_keys" }} passwd: