diff --git a/README.md b/README.md index fae7a56..15751cc 100644 --- a/README.md +++ b/README.md @@ -14,11 +14,13 @@ The target audience for this tutorial is someone planning to support a productio Kubernetes The Hard Way guides you through bootstrapping a highly available Kubernetes cluster with end-to-end encryption between components and RBAC authentication. -* [Kubernetes](https://github.com/kubernetes/kubernetes) 1.12.0 -* [containerd Container Runtime](https://github.com/containerd/containerd) 1.2.0-rc.0 +* [Kubernetes](https://github.com/kubernetes/kubernetes) 1.14.2 +* [containerd Container Runtime](https://github.com/containerd/containerd) 1.2.6 +* [CRI-Tools](https://github.com/kubernetes-sigs/cri-tools) 1.14.0 +* [runc](https://github.com/opencontainers/runc) 1.0.0-rc8 * [gVisor](https://github.com/google/gvisor) 50c283b9f56bb7200938d9e207355f05f79f0d17 -* [CNI Container Networking](https://github.com/containernetworking/cni) 0.6.0 -* [etcd](https://github.com/coreos/etcd) v3.3.9 +* [CNI Container Networking](https://github.com/containernetworking/cni) 0.8.0 +* [etcd](https://github.com/coreos/etcd) 3.3.13 * [CoreDNS](https://github.com/coredns/coredns) v1.2.2 ## Labs diff --git a/docs/02-client-tools.md b/docs/02-client-tools.md index f4ef130..20ebfd9 100644 --- a/docs/02-client-tools.md +++ b/docs/02-client-tools.md @@ -75,7 +75,7 @@ The `kubectl` command line utility is used to interact with the Kubernetes API S ### OS X ``` -curl -o kubectl https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/darwin/amd64/kubectl +curl -o kubectl https://storage.googleapis.com/kubernetes-release/release/v1.14.2/bin/darwin/amd64/kubectl ``` ``` @@ -89,7 +89,7 @@ sudo mv kubectl /usr/local/bin/ ### Linux ``` -wget https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/linux/amd64/kubectl +wget https://storage.googleapis.com/kubernetes-release/release/v1.14.2/bin/linux/amd64/kubectl ``` ``` @@ -111,7 +111,7 @@ kubectl version --client > output ``` -Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.0", GitCommit:"0ed33881dc4355495f623c6f22e7dd0b7632b7c0", GitTreeState:"clean", BuildDate:"2018-09-27T17:05:32Z", GoVersion:"go1.10.4", Compiler:"gc", Platform:"linux/amd64"} +Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.2", GitCommit:"66049e3b21efe110454d67df4fa62b08ea79a19b", GitTreeState:"clean", BuildDate:"2019-05-16T16:23:09Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"} ``` Next: [Provisioning Compute Resources](03-compute-resources.md) diff --git a/docs/03-compute-resources.md b/docs/03-compute-resources.md index bd92c3c..80bdf6f 100644 --- a/docs/03-compute-resources.md +++ b/docs/03-compute-resources.md @@ -104,7 +104,7 @@ for i in 0 1 2; do --async \ --boot-disk-size 200GB \ --can-ip-forward \ - --image-family ubuntu-1804-lts \ + --image-family ubuntu-1904 \ --image-project ubuntu-os-cloud \ --machine-type n1-standard-1 \ --private-network-ip 10.240.0.1${i} \ @@ -128,7 +128,7 @@ for i in 0 1 2; do --async \ --boot-disk-size 200GB \ --can-ip-forward \ - --image-family ubuntu-1804-lts \ + --image-family ubuntu-1904 \ --image-project ubuntu-os-cloud \ --machine-type n1-standard-1 \ --metadata pod-cidr=10.200.${i}.0/24 \ diff --git a/docs/07-bootstrapping-etcd.md b/docs/07-bootstrapping-etcd.md index dc70edc..1cf3a6c 100644 --- a/docs/07-bootstrapping-etcd.md +++ b/docs/07-bootstrapping-etcd.md @@ -22,15 +22,15 @@ Download the official etcd release binaries from the [coreos/etcd](https://githu ``` wget -q --show-progress --https-only --timestamping \ - "https://github.com/coreos/etcd/releases/download/v3.3.9/etcd-v3.3.9-linux-amd64.tar.gz" + "https://github.com/coreos/etcd/releases/download/v3.3.13/etcd-v3.3.13-linux-amd64.tar.gz" ``` Extract and install the `etcd` server and the `etcdctl` command line utility: ``` { - tar -xvf etcd-v3.3.9-linux-amd64.tar.gz - sudo mv etcd-v3.3.9-linux-amd64/etcd* /usr/local/bin/ + tar -xvf etcd-v3.3.13-linux-amd64.tar.gz + sudo mv etcd-v3.3.13-linux-amd64/etcd* /usr/local/bin/ } ``` diff --git a/docs/08-bootstrapping-kubernetes-controllers.md b/docs/08-bootstrapping-kubernetes-controllers.md index 1c2883b..286526e 100644 --- a/docs/08-bootstrapping-kubernetes-controllers.md +++ b/docs/08-bootstrapping-kubernetes-controllers.md @@ -28,10 +28,10 @@ Download the official Kubernetes release binaries: ``` wget -q --show-progress --https-only --timestamping \ - "https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/linux/amd64/kube-apiserver" \ - "https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/linux/amd64/kube-controller-manager" \ - "https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/linux/amd64/kube-scheduler" \ - "https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/linux/amd64/kubectl" + "https://storage.googleapis.com/kubernetes-release/release/v1.14.2/bin/linux/amd64/kube-apiserver" \ + "https://storage.googleapis.com/kubernetes-release/release/v1.14.2/bin/linux/amd64/kube-controller-manager" \ + "https://storage.googleapis.com/kubernetes-release/release/v1.14.2/bin/linux/amd64/kube-scheduler" \ + "https://storage.googleapis.com/kubernetes-release/release/v1.14.2/bin/linux/amd64/kubectl" ``` Install the Kubernetes binaries: @@ -82,14 +82,13 @@ ExecStart=/usr/local/bin/kube-apiserver \\ --authorization-mode=Node,RBAC \\ --bind-address=0.0.0.0 \\ --client-ca-file=/var/lib/kubernetes/ca.pem \\ - --enable-admission-plugins=Initializers,NamespaceLifecycle,NodeRestriction,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota \\ - --enable-swagger-ui=true \\ + --enable-admission-plugins=NamespaceLifecycle,NodeRestriction,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota \\ --etcd-cafile=/var/lib/kubernetes/ca.pem \\ --etcd-certfile=/var/lib/kubernetes/kubernetes.pem \\ --etcd-keyfile=/var/lib/kubernetes/kubernetes-key.pem \\ --etcd-servers=https://10.240.0.10:2379,https://10.240.0.11:2379,https://10.240.0.12:2379 \\ --event-ttl=1h \\ - --experimental-encryption-provider-config=/var/lib/kubernetes/encryption-config.yaml \\ + --encryption-provider-config=/var/lib/kubernetes/encryption-config.yaml \\ --kubelet-certificate-authority=/var/lib/kubernetes/ca.pem \\ --kubelet-client-certificate=/var/lib/kubernetes/kubernetes.pem \\ --kubelet-client-key=/var/lib/kubernetes/kubernetes-key.pem \\ @@ -127,7 +126,7 @@ Documentation=https://github.com/kubernetes/kubernetes [Service] ExecStart=/usr/local/bin/kube-controller-manager \\ - --address=0.0.0.0 \\ + --bind-address=0.0.0.0 \\ --cluster-cidr=10.200.0.0/16 \\ --cluster-name=kubernetes \\ --cluster-signing-cert-file=/var/lib/kubernetes/ca.pem \\ @@ -159,7 +158,7 @@ Create the `kube-scheduler.yaml` configuration file: ``` cat < output ``` -NAME STATUS ROLES AGE VERSION -worker-0 Ready 35s v1.12.0 -worker-1 Ready 36s v1.12.0 -worker-2 Ready 36s v1.12.0 +NAME STATUS ROLES AGE VERSION +worker-0 Ready 11s v1.14.2 +worker-1 Ready 15s v1.14.2 +worker-2 Ready 13s v1.14.2 ``` Next: [Configuring kubectl for Remote Access](10-configuring-kubectl.md) diff --git a/docs/10-configuring-kubectl.md b/docs/10-configuring-kubectl.md index 8ac0026..632fb97 100644 --- a/docs/10-configuring-kubectl.md +++ b/docs/10-configuring-kubectl.md @@ -55,16 +55,16 @@ etcd-0 Healthy {"health":"true"} List the nodes in the remote Kubernetes cluster: ``` -kubectl get nodes +kubectl get nodes -o wide ``` > output ``` -NAME STATUS ROLES AGE VERSION -worker-0 Ready 117s v1.12.0 -worker-1 Ready 118s v1.12.0 -worker-2 Ready 118s v1.12.0 +NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME +worker-0 Ready 3m42s v1.14.2 10.240.0.20 Ubuntu 19.04 5.0.0-1006-gcp containerd://1.2.6 +worker-1 Ready 3m46s v1.14.2 10.240.0.21 Ubuntu 19.04 5.0.0-1006-gcp containerd://1.2.6 +worker-2 Ready 3m44s v1.14.2 10.240.0.22 Ubuntu 19.04 5.0.0-1006-gcp containerd://1.2.6 ``` Next: [Provisioning Pod Network Routes](11-pod-network-routes.md)