From fa29fedd3b0ab1d9c9266b4185b6f7692a980d14 Mon Sep 17 00:00:00 2001 From: jzhoucliqr Date: Sat, 20 Aug 2016 23:09:06 -0700 Subject: [PATCH 01/15] ubuntu provider environment variable 'roles' instead of 'role' --- docs/getting-started-guides/ubuntu.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting-started-guides/ubuntu.md b/docs/getting-started-guides/ubuntu.md index cfa7554d07..4322b8a5d5 100644 --- a/docs/getting-started-guides/ubuntu.md +++ b/docs/getting-started-guides/ubuntu.md @@ -83,7 +83,7 @@ First configure the cluster information in cluster/ubuntu/config-default.sh, fol ```shell export nodes="vcap@10.10.103.250 vcap@10.10.103.162 vcap@10.10.103.223" -export role="ai i i" +export roles="ai i i" export NUM_NODES=${NUM_NODES:-3} @@ -95,7 +95,7 @@ export FLANNEL_NET=172.16.0.0/16 The first variable `nodes` defines all your cluster nodes, master node comes first and separated with blank space like ` ` -Then the `role` variable defines the role of above machine in the same order, "ai" stands for machine +Then the `roles` variable defines the roles of above machine in the same order, "ai" stands for machine acts as both master and node, "a" stands for master, "i" stands for node. The `NUM_NODES` variable defines the total number of nodes. From 99dfe0ee2d91fe4a8e04fa97d2f574387c7e8305 Mon Sep 17 00:00:00 2001 From: Eric Khun Date: Fri, 26 Aug 2016 16:16:07 +0200 Subject: [PATCH 02/15] Update command to show labels on nodes --- docs/user-guide/node-selection/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user-guide/node-selection/index.md b/docs/user-guide/node-selection/index.md index 1ae9d9fdef..74831ace0c 100644 --- a/docs/user-guide/node-selection/index.md +++ b/docs/user-guide/node-selection/index.md @@ -25,7 +25,7 @@ If this fails with an "invalid command" error, you're likely using an older vers Also, note that label keys must be in the form of DNS labels (as described in the [identifiers doc](https://github.com/kubernetes/kubernetes/blob/{{page.githubbranch}}/docs/design/identifiers.md)), meaning that they are not allowed to contain any upper-case letters. -You can verify that it worked by re-running `kubectl get nodes` and checking that the node now has a label. +You can verify that it worked by re-running `kubectl get nodes --show-labels` and checking that the node now has a label. ### Step Two: Add a nodeSelector field to your pod configuration From 7f785f2ecf054d9e5228cb76b1a41364f3d332e6 Mon Sep 17 00:00:00 2001 From: Casey Davenport Date: Tue, 30 Aug 2016 17:32:37 -0700 Subject: [PATCH 03/15] Remove outdated Calico / Fedora guide. --- _data/guides.yml | 2 - .../fedora/fedora-calico.md | 313 ------------------ 2 files changed, 315 deletions(-) delete mode 100644 docs/getting-started-guides/fedora/fedora-calico.md diff --git a/_data/guides.yml b/_data/guides.yml index 3f076b7af9..ca61f07dc0 100644 --- a/_data/guides.yml +++ b/_data/guides.yml @@ -195,8 +195,6 @@ toc: path: /docs/getting-started-guides/openstack-heat/ - title: CoreOS on Multinode Cluster path: /docs/getting-started-guides/coreos/coreos_multinode_cluster/ - - title: Fedora With Calico Networking - path: /docs/getting-started-guides/fedora/fedora-calico/ - title: rkt section: - title: Running Kubernetes with rkt diff --git a/docs/getting-started-guides/fedora/fedora-calico.md b/docs/getting-started-guides/fedora/fedora-calico.md deleted file mode 100644 index c9c029e229..0000000000 --- a/docs/getting-started-guides/fedora/fedora-calico.md +++ /dev/null @@ -1,313 +0,0 @@ ---- -assignees: -- caesarxuchao - ---- - -This guide will walk you through the process of getting a Kubernetes Fedora cluster running on Digital Ocean with networking powered by Calico networking. -It will cover the installation and configuration of the following systemd processes on the following hosts: - -Kubernetes Master: - -- `kube-apiserver` -- `kube-controller-manager` -- `kube-scheduler` -- `etcd` -- `docker` -- `calico-node` - -Kubernetes Node: - -- `kubelet` -- `kube-proxy` -- `docker` -- `calico-node` - -For this demo, we will be setting up one Master and one Node with the following information: - -| Hostname | IP | -|-------------|-------------| -| kube-master |10.134.251.56| -| kube-node-1 |10.134.251.55| - -This guide is scalable to multiple nodes provided you [configure interface-cbr0 with its own subnet on each Node](#configure-the-virtual-interface---cbr0) -and [add an entry to /etc/hosts for each host](#setup-communication-between-hosts). - -Ensure you substitute the IP Addresses and Hostnames used in this guide with ones in your own setup. - -* TOC -{:toc} - -## Prerequisites - -You need two or more Fedora 22 droplets on Digital Ocean with [Private Networking](https://www.digitalocean.com/community/tutorials/how-to-set-up-and-use-digitalocean-private-networking) enabled. - -## Setup Communication Between Hosts - -Digital Ocean private networking configures a private network on eth1 for each host. To simplify communication between the hosts, we will add an entry to /etc/hosts -so that all hosts in the cluster can hostname-resolve one another to this interface. **It is important that the hostname resolves to this interface instead of eth0, as -all Kubernetes and Calico services will be running on it.** - -```shell -echo "10.134.251.56 kube-master" >> /etc/hosts -echo "10.134.251.55 kube-node-1" >> /etc/hosts -``` - -> Make sure that communication works between kube-master and each kube-node by using a utility such as ping. - -## Setup Master - -### Install etcd - -* Both Calico and Kubernetes use etcd as their datastore. We will run etcd on Master and point all Kubernetes and Calico services at it. - -```shell -yum -y install etcd -``` - -* Edit `/etc/etcd/etcd.conf` - -```conf -ETCD_LISTEN_CLIENT_URLS="http://kube-master:4001" - -ETCD_ADVERTISE_CLIENT_URLS="http://kube-master:4001" -``` - -### Install Kubernetes - -* Run the following command on Master to install the latest Kubernetes (as well as docker): - -```shell -yum -y install kubernetes -``` - -* Edit `/etc/kubernetes/config ` - -```conf -# How the controller-manager, scheduler, and proxy find the apiserver -KUBE_MASTER="--master=http://kube-master:8080" -``` - -* Edit `/etc/kubernetes/apiserver` - -```conf -# The address on the local server to listen to. -KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" - -KUBE_ETCD_SERVERS="--etcd-servers=http://kube-master:4001" - -# Remove ServiceAccount from this line to run without API Tokens -KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ResourceQuota" -``` - -* Create /var/run/kubernetes on master: - -```shell -mkdir /var/run/kubernetes -chown kube:kube /var/run/kubernetes -chmod 750 /var/run/kubernetes -``` - -* Start the appropriate services on master: - -```shell -for SERVICE in etcd kube-apiserver kube-controller-manager kube-scheduler; do - systemctl restart $SERVICE - systemctl enable $SERVICE - systemctl status $SERVICE -done -``` - -### Install Calico - -Next, we'll launch Calico on Master to allow communication between Pods and any services running on the Master. -* Install calicoctl, the calico configuration tool. - -```shell -wget https://github.com/Metaswitch/calico-docker/releases/download/v0.5.5/calicoctl -chmod +x ./calicoctl -sudo mv ./calicoctl /usr/bin -``` - -* Create `/etc/systemd/system/calico-node.service` - -```conf -[Unit] -Description=calicoctl node -Requires=docker.service -After=docker.service - -[Service] -User=root -Environment="ETCD_AUTHORITY=kube-master:4001" -PermissionsStartOnly=true -ExecStartPre=/usr/bin/calicoctl checksystem --fix -ExecStart=/usr/bin/calicoctl node --ip=10.134.251.56 --detach=false - -[Install] -WantedBy=multi-user.target -``` - ->Be sure to substitute `--ip=10.134.251.56` with your Master's eth1 IP Address. - -* Start Calico - -```shell -systemctl enable calico-node.service -systemctl start calico-node.service -``` - ->Starting calico for the first time may take a few minutes as the calico-node docker image is downloaded. - -## Setup Node - -### Configure the Virtual Interface - cbr0 - -By default, docker will create and run on a virtual interface called `docker0`. This interface is automatically assigned the address range 172.17.42.1/16. -In order to set our own address range, we will create a new virtual interface called `cbr0` and then start docker on it. - -* Add a virtual interface by creating `/etc/sysconfig/network-scripts/ifcfg-cbr0`: - -```conf -DEVICE=cbr0 -TYPE=Bridge -IPADDR=192.168.1.1 -NETMASK=255.255.255.0 -ONBOOT=yes -BOOTPROTO=static -``` - ->**Note for Multi-Node Clusters:** Each node should be assigned an IP address on a unique subnet. In this example, node-1 is using 192.168.1.1/24, -so node-2 should be assigned another pool on the 192.168.x.0/24 subnet, e.g. 192.168.2.1/24. - -* Ensure that your system has bridge-utils installed. Then, restart the networking daemon to activate the new interface - -```shell -systemctl restart network.service -``` - -### Install Docker - -* Install Docker - -```shell -yum -y install docker -``` - -* Configure docker to run on `cbr0` by editing `/etc/sysconfig/docker-network`: - -```conf -DOCKER_NETWORK_OPTIONS="--bridge=cbr0 --iptables=false --ip-masq=false" -``` - -* Start docker - -```shell -systemctl start docker -``` - -### Install Calico - -* Install calicoctl, the calico configuration tool. - -```shell -wget https://github.com/Metaswitch/calico-docker/releases/download/v0.5.5/calicoctl -chmod +x ./calicoctl -sudo mv ./calicoctl /usr/bin -``` - -* Create `/etc/systemd/system/calico-node.service` - -```conf -[Unit] -Description=calicoctl node -Requires=docker.service -After=docker.service - -[Service] -User=root -Environment="ETCD_AUTHORITY=kube-master:4001" -PermissionsStartOnly=true -ExecStartPre=/usr/bin/calicoctl checksystem --fix -ExecStart=/usr/bin/calicoctl node --ip=10.134.251.55 --detach=false --kubernetes - -[Install] -WantedBy=multi-user.target -``` - -> Note: You must replace the IP address with your node's eth1 IP Address! - -* Start Calico - -```shell -systemctl enable calico-node.service -systemctl start calico-node.service -``` - -* Configure the IP Address Pool - - Most Kubernetes application deployments will require communication between Pods and the kube-apiserver on Master. On a standard Digital -Ocean Private Network, requests sent from Pods to the kube-apiserver will not be returned as the networking fabric will drop response packets -destined for any 192.168.0.0/16 address. To resolve this, you can have calicoctl add a masquerade rule to all outgoing traffic on the node: - -```shell -ETCD_AUTHORITY=kube-master:4001 calicoctl pool add 192.168.0.0/16 --nat-outgoing -``` - -### Install Kubernetes - -* First, install Kubernetes. - -```shell -yum -y install kubernetes -``` - -* Edit `/etc/kubernetes/config` - -```conf -# How the controller-manager, scheduler, and proxy find the apiserver -KUBE_MASTER="--master=http://kube-master:8080" -``` - -* Edit `/etc/kubernetes/kubelet` - - We'll pass in an extra parameter - `--network-plugin=calico` to tell the Kubelet to use the Calico networking plugin. Additionally, we'll add two -environment variables that will be used by the Calico networking plugin. - -```shell -# The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces) -KUBELET_ADDRESS="--address=0.0.0.0" - -# You may leave this blank to use the actual hostname -# KUBELET_HOSTNAME="--hostname-override=127.0.0.1" - -# location of the api-server -KUBELET_API_SERVER="--api-servers=http://kube-master:8080" - -# Add your own! -KUBELET_ARGS="--network-plugin=calico" - -# The following are variables which the kubelet will pass to the calico-networking plugin -ETCD_AUTHORITY="kube-master:4001" -KUBE_API_ROOT="http://kube-master:8080/api/v1" -``` - -* Start Kubernetes on the node. - -```shell -for SERVICE in kube-proxy kubelet; do - systemctl restart $SERVICE - systemctl enable $SERVICE - systemctl status $SERVICE -done -``` - -## Check Running Cluster - -The cluster should be running! Check that your nodes are reporting as such: - -```shell -kubectl get nodes -NAME LABELS STATUS -kube-node-1 kubernetes.io/hostname=kube-node-1 Ready -``` \ No newline at end of file From 30539b11f932cae7c649479aff5e2092486afe86 Mon Sep 17 00:00:00 2001 From: Evgeny L Date: Fri, 2 Sep 2016 17:58:51 +0300 Subject: [PATCH 04/15] Remove broken links to master.sh and worker.sh in docker-multinode --- docs/getting-started-guides/docker-multinode.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting-started-guides/docker-multinode.md b/docs/getting-started-guides/docker-multinode.md index 5826a1bb20..14e475ee10 100644 --- a/docs/getting-started-guides/docker-multinode.md +++ b/docs/getting-started-guides/docker-multinode.md @@ -65,7 +65,7 @@ Each of these options are overridable by `export`ing the values before running t The first step in the process is to initialize the master node. -Clone the `kube-deploy` repo, and run [master.sh](master.sh) on the master machine _with root_: +Clone the `kube-deploy` repo, and run `master.sh` on the master machine _with root_: ```shell $ git clone https://github.com/kubernetes/kube-deploy @@ -82,7 +82,7 @@ Lastly, it launches `kubelet` in the main docker daemon, and the `kubelet` in tu Once your master is up and running you can add one or more workers on different machines. -Clone the `kube-deploy` repo, and run [worker.sh](worker.sh) on the worker machine _with root_: +Clone the `kube-deploy` repo, and run `worker.sh` on the worker machine _with root_: ```shell $ git clone https://github.com/kubernetes/kube-deploy From c734060e6f0d188a89aab16c5a320179bbdb53cf Mon Sep 17 00:00:00 2001 From: Hyunchel Kim Date: Wed, 31 Aug 2016 14:45:10 -0500 Subject: [PATCH 05/15] Add missing commas, fix typos --- docs/user-guide/horizontal-pod-autoscaling/index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/user-guide/horizontal-pod-autoscaling/index.md b/docs/user-guide/horizontal-pod-autoscaling/index.md index 181c1ba5f7..abd6d8314d 100644 --- a/docs/user-guide/horizontal-pod-autoscaling/index.md +++ b/docs/user-guide/horizontal-pod-autoscaling/index.md @@ -120,13 +120,13 @@ all running pods. Example: alpha/target.custom-metrics.podautoscaler.kubernetes.io: '{"items":[{"name":"qps", "value": "10"}]}' ``` -In this case if there are 4 pods running and each of them reports qps metric to be equal to 15 HPA will start 2 additional pods so there will be 6 pods in total. If there are multiple metrics passed in the annotation or CPU is configured as well then HPA will use the biggest +In this case, if there are 4 pods running and each of them reports qps metric to be equal to 15, HPA will start 2 additional pods so there will be 6 pods in total. If there are multiple metrics passed in the annotation or CPU is configured as well then HPA will use the biggest number of replicas that comes from the calculations. -At this moment even if target CPU utilization is not specified a default of 80% will be used. -To calculate number of desired replicas based only on custom metrics CPU utilization -target should be set to a very large value (e.g. 100000%). Then CPU-related logic -will want only 1 replica, leaving the decision about higher replica count to cusom metrics (and min/max limits). +At this moment, even if CPU utilization target is not specified, a default of 80% will be used. +To calculate number of desired replicas based only on custom metrics, CPU utilization +target should be set to a very large value (e.g. 100000%). +Then CPU utilization target will unlikely be reached, leaving the decision on desired number of replicas to the custom metrics (and min/max limits). ## Further reading From ceb5189d488d09cb4f14665db100eb4c6654bf4e Mon Sep 17 00:00:00 2001 From: Hyunchel Kim Date: Thu, 1 Sep 2016 08:51:08 -0500 Subject: [PATCH 06/15] Update sentences based on reviewed comments --- docs/user-guide/horizontal-pod-autoscaling/index.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/user-guide/horizontal-pod-autoscaling/index.md b/docs/user-guide/horizontal-pod-autoscaling/index.md index abd6d8314d..a789a9c5fc 100644 --- a/docs/user-guide/horizontal-pod-autoscaling/index.md +++ b/docs/user-guide/horizontal-pod-autoscaling/index.md @@ -120,13 +120,14 @@ all running pods. Example: alpha/target.custom-metrics.podautoscaler.kubernetes.io: '{"items":[{"name":"qps", "value": "10"}]}' ``` -In this case, if there are 4 pods running and each of them reports qps metric to be equal to 15, HPA will start 2 additional pods so there will be 6 pods in total. If there are multiple metrics passed in the annotation or CPU is configured as well then HPA will use the biggest -number of replicas that comes from the calculations. +In this case, if there are four pods running and each pods reports a QPS metric of 15 or higher, horizontal pod autoscaling will start two additional pods (for a total of six pods running). + +If you specify multiple metrics in your annotation or if you set a target CPU utilization, horizontal pod autoscaling will scale to according to the metric that requires the highest number of replicas. + +If you do not specify a target for CPU utilization, Kubernetes defaults to an 80% utilization threshold for horizontal pod autoscaling. + +If you want to ensure that horizontal pod autoscaling calculates the number of required replicas based only on custom metrics, you should set the CPU utilization target to a very large value (such as 100000%). As this level of CPU utilization isn't possible, horizontal pod autoscaling will calculate based only on the custom metrics (and min/max limits). -At this moment, even if CPU utilization target is not specified, a default of 80% will be used. -To calculate number of desired replicas based only on custom metrics, CPU utilization -target should be set to a very large value (e.g. 100000%). -Then CPU utilization target will unlikely be reached, leaving the decision on desired number of replicas to the custom metrics (and min/max limits). ## Further reading From 820fa73edff8648c0671d1a1185ce9ff71b7c8b1 Mon Sep 17 00:00:00 2001 From: Hyunchel Kim Date: Tue, 6 Sep 2016 08:44:42 -0500 Subject: [PATCH 07/15] Fix typo --- docs/user-guide/horizontal-pod-autoscaling/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user-guide/horizontal-pod-autoscaling/index.md b/docs/user-guide/horizontal-pod-autoscaling/index.md index a789a9c5fc..fbdd11360a 100644 --- a/docs/user-guide/horizontal-pod-autoscaling/index.md +++ b/docs/user-guide/horizontal-pod-autoscaling/index.md @@ -120,7 +120,7 @@ all running pods. Example: alpha/target.custom-metrics.podautoscaler.kubernetes.io: '{"items":[{"name":"qps", "value": "10"}]}' ``` -In this case, if there are four pods running and each pods reports a QPS metric of 15 or higher, horizontal pod autoscaling will start two additional pods (for a total of six pods running). +In this case, if there are four pods running and each pod reports a QPS metric of 15 or higher, horizontal pod autoscaling will start two additional pods (for a total of six pods running). If you specify multiple metrics in your annotation or if you set a target CPU utilization, horizontal pod autoscaling will scale to according to the metric that requires the highest number of replicas. From ac2a52af2044a3f04a5f500e7df9015efa184646 Mon Sep 17 00:00:00 2001 From: David Calavera Date: Wed, 7 Sep 2016 16:37:43 -0700 Subject: [PATCH 08/15] Add Netlify configuration. - The netlify.toml file explains how to build this site for production and deploy previews. - The Makefile has some commands to make building the site slightly more user friendly, try typing `make help`. - The Gemfile includes all the dependencies exported from GitHub Pages. This site might not need all of the but I don't have the knowledge to exclude the unused ones. Signed-off-by: David Calavera --- Gemfile | 20 +++++++++ Gemfile.lock | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++ Makefile | 15 +++++++ netlify.toml | 6 +++ package.json | 14 ------ 5 files changed, 160 insertions(+), 14 deletions(-) create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 Makefile create mode 100644 netlify.toml delete mode 100644 package.json diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000000..e29e26cdc8 --- /dev/null +++ b/Gemfile @@ -0,0 +1,20 @@ +source "https://rubygems.org" + +gem "jekyll", "3.2.1" +gem "jekyll-sass-converter", "1.3.0" +gem "minima", "1.1.0" +gem "kramdown", "1.11.1" +gem "liquid", "3.0.6" +gem "rouge", "1.11.1" +gem "jemoji", "0.7.0" +gem "jekyll-mentions", "1.2.0" +gem "jekyll-redirect-from", "0.11.0" +gem "jekyll-sitemap", "0.10.0" +gem "jekyll-feed", "0.5.1" +gem "jekyll-gist", "1.4.0" +gem "jekyll-paginate", "1.1.0" +gem "jekyll-coffeescript", "1.0.1" +gem "jekyll-seo-tag", "2.0.0" +gem "jekyll-github-metadata", "2.0.2" +gem "listen", "3.0.6" +gem "activesupport", "4.2.7" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000000..ee385b958b --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,119 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (4.2.7) + i18n (~> 0.7) + json (~> 1.7, >= 1.7.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + addressable (2.4.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.10.0) + colorator (1.1.0) + execjs (2.7.0) + faraday (0.9.2) + multipart-post (>= 1.2, < 3) + ffi (1.9.14) + forwardable-extended (2.6.0) + gemoji (2.1.0) + html-pipeline (2.4.2) + activesupport (>= 2) + nokogiri (>= 1.4) + i18n (0.7.0) + jekyll (3.2.1) + colorator (~> 1.0) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 1.1) + kramdown (~> 1.3) + liquid (~> 3.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (~> 1.7) + safe_yaml (~> 1.0) + jekyll-coffeescript (1.0.1) + coffee-script (~> 2.2) + jekyll-feed (0.5.1) + jekyll-gist (1.4.0) + octokit (~> 4.2) + jekyll-github-metadata (2.0.2) + jekyll (~> 3.1) + octokit (~> 4.0) + jekyll-mentions (1.2.0) + activesupport (~> 4.0) + html-pipeline (~> 2.3) + jekyll (~> 3.0) + jekyll-paginate (1.1.0) + jekyll-redirect-from (0.11.0) + jekyll (>= 2.0) + jekyll-sass-converter (1.3.0) + sass (~> 3.2) + jekyll-seo-tag (2.0.0) + jekyll (~> 3.1) + jekyll-sitemap (0.10.0) + jekyll-watch (1.5.0) + listen (~> 3.0, < 3.1) + jemoji (0.7.0) + activesupport (~> 4.0) + gemoji (~> 2.0) + html-pipeline (~> 2.2) + jekyll (>= 3.0) + json (1.8.3) + kramdown (1.11.1) + liquid (3.0.6) + listen (3.0.6) + rb-fsevent (>= 0.9.3) + rb-inotify (>= 0.9.7) + mercenary (0.3.6) + mini_portile2 (2.1.0) + minima (1.1.0) + minitest (5.9.0) + multipart-post (2.0.0) + nokogiri (1.6.8) + mini_portile2 (~> 2.1.0) + pkg-config (~> 1.1.7) + octokit (4.3.0) + sawyer (~> 0.7.0, >= 0.5.3) + pathutil (0.14.0) + forwardable-extended (~> 2.6) + pkg-config (1.1.7) + rb-fsevent (0.9.7) + rb-inotify (0.9.7) + ffi (>= 0.5.0) + rouge (1.11.1) + safe_yaml (1.0.4) + sass (3.4.22) + sawyer (0.7.0) + addressable (>= 2.3.5, < 2.5) + faraday (~> 0.8, < 0.10) + thread_safe (0.3.5) + tzinfo (1.2.2) + thread_safe (~> 0.1) + +PLATFORMS + ruby + +DEPENDENCIES + activesupport (= 4.2.7) + jekyll (= 3.2.1) + jekyll-coffeescript (= 1.0.1) + jekyll-feed (= 0.5.1) + jekyll-gist (= 1.4.0) + jekyll-github-metadata (= 2.0.2) + jekyll-mentions (= 1.2.0) + jekyll-paginate (= 1.1.0) + jekyll-redirect-from (= 0.11.0) + jekyll-sass-converter (= 1.3.0) + jekyll-seo-tag (= 2.0.0) + jekyll-sitemap (= 0.10.0) + jemoji (= 0.7.0) + kramdown (= 1.11.1) + liquid (= 3.0.6) + listen (= 3.0.6) + minima (= 1.1.0) + rouge (= 1.11.1) + +BUNDLED WITH + 1.11.2 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..64ceef89a0 --- /dev/null +++ b/Makefile @@ -0,0 +1,15 @@ +.PONY: all build build-preview help serve + +help: ## Show this help. + @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) + +all: build ## Build site with production settings and put deliverables in _site. + +build: ## Build site with production settings and put deliverables in _site. + jekyll build + +build-preview: ## Build site with drafts and future posts enabled. + jekyll build --drafts --future + +serve: ## Boot the development server. + jekyll serve diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 0000000000..bac7e0b5ab --- /dev/null +++ b/netlify.toml @@ -0,0 +1,6 @@ +[build] + command = "make build" + publish = "_site" + +[context.deploy-preview] + command = "make build-preview" diff --git a/package.json b/package.json deleted file mode 100644 index 8f4abeee22..0000000000 --- a/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "githubpagessites", - "description": "Version 1.1 of the docs for Kubernetes", - "version": "1.1", - "private": true, - "license": "Apache Version 2.0", - "author": "The Kubernetes Authors", - "engines": { - "node": "~4.2" -}, - "dependencies": { - "express": "^4.13.4" - } -} From 64503f43a8e0d42df0b8907f498461072d43eed1 Mon Sep 17 00:00:00 2001 From: Aaron Rice Date: Thu, 8 Sep 2016 18:02:19 +0100 Subject: [PATCH 09/15] Remove typo'd '=' from AWS ELB SSL documentation It looks like there was a typo in this annotation key. --- docs/user-guide/services/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user-guide/services/index.md b/docs/user-guide/services/index.md index a79e77fff8..62b7ff7f50 100644 --- a/docs/user-guide/services/index.md +++ b/docs/user-guide/services/index.md @@ -460,7 +460,7 @@ within AWS Certificate Manager. "metadata": { "name": "my-service", "annotations": { - "service.beta.kubernetes.io/aws-load-balancer-backend-protocol=": "(https|http|ssl|tcp)" + "service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "(https|http|ssl|tcp)" } }, ``` From 1b0fafbbe061fe317ea966b91a225771790166bc Mon Sep 17 00:00:00 2001 From: hellwen Date: Fri, 9 Sep 2016 18:17:17 +0800 Subject: [PATCH 10/15] Update volumes.md --- docs/user-guide/volumes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user-guide/volumes.md b/docs/user-guide/volumes.md index 4d753ca308..d4d20e3e47 100644 --- a/docs/user-guide/volumes.md +++ b/docs/user-guide/volumes.md @@ -10,7 +10,7 @@ assignees: On-disk files in a container are ephemeral, which presents some problems for non-trivial applications when running in containers. First, when a container crashes kubelet will restart it, but the files will be lost - the -container starts with a clean slate. Second, when running containers together +container starts with a clean state. Second, when running containers together in a `Pod` it is often necessary to share files between those containers. The Kubernetes `Volume` abstraction solves both of these problems. From ef735dac3ead6dda585056bb3e37ff4fd44a7faa Mon Sep 17 00:00:00 2001 From: Eduardo Patrocinio Date: Sat, 10 Sep 2016 10:50:25 -0400 Subject: [PATCH 11/15] Add link to IBM SoftLayer instructions --- _data/guides.yml | 2 ++ docs/getting-started-guides/index.md | 1 + 2 files changed, 3 insertions(+) diff --git a/_data/guides.yml b/_data/guides.yml index ca61f07dc0..269eecebf6 100644 --- a/_data/guides.yml +++ b/_data/guides.yml @@ -161,6 +161,8 @@ toc: path: /docs/getting-started-guides/azure/ - title: Running Kubernetes on CenturyLink Cloud path: /docs/getting-started-guides/clc/ + - title: Running Kubernetes on IBM SoftLayer + path: https://github.com/patrocinio/kubernetes-softlayer - title: Running Kubernetes on Custom Solutions section: - title: Creating a Custom Cluster from Scratch diff --git a/docs/getting-started-guides/index.md b/docs/getting-started-guides/index.md index 250cca87ca..e49c5f9bd5 100644 --- a/docs/getting-started-guides/index.md +++ b/docs/getting-started-guides/index.md @@ -49,6 +49,7 @@ few commands, and have active community support. - [Azure](/docs/getting-started-guides/coreos/azure/) (Weave-based, contributed by WeaveWorks employees) - [Azure](/docs/getting-started-guides/azure/) (Flannel-based, contributed by Microsoft employee) - [CenturyLink Cloud](/docs/getting-started-guides/clc) +- [IBM SoftLayer](https://github.com/patrocinio/kubernetes-softlayer) ### Custom Solutions From 26cbacc3d6d3eaa5e4c869d40753d3bf9c455fc2 Mon Sep 17 00:00:00 2001 From: chrislovecnm Date: Sat, 10 Sep 2016 14:31:35 -0600 Subject: [PATCH 12/15] fixing a couple of commands, and adding an echo --- docs/user-guide/kubectl-cheatsheet.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/user-guide/kubectl-cheatsheet.md b/docs/user-guide/kubectl-cheatsheet.md index c14e7c5c03..b2e1c51fa9 100644 --- a/docs/user-guide/kubectl-cheatsheet.md +++ b/docs/user-guide/kubectl-cheatsheet.md @@ -85,7 +85,7 @@ $ kubectl describe pods # Lists pods created by --output=json | jq -j '.spec.selector | to_entries | .[] | "\(.key)=\(.value),"') $ sel=${sel%?} # Remove trailing comma -$ pods=$(kubectl get pods --selector=$sel --output=jsonpath={.items..metadata.name})` +$ pods=$(kubectl get pods --selector=$sel --output=jsonpath={.items..metadata.name}) +$ echo $pods # Check which nodes are ready -$ kubectl get nodes -o jsonpath='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'| tr ';' "\n" | grep "Ready=True" +$ kubectl get nodes -o jsonpath='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'| tr ';' "\n" | grep "Ready=True" ``` ## Modifying and Deleting Resources @@ -122,6 +123,6 @@ $ kubectl run -i --tty busybox --image=busybox -- sh # Run pod as interacti $ kubectl attach -i # Attach to Running Container $ kubectl port-forward # Forward port of Pod to your local machine $ kubectl port-forward # Forward port to service -$ kubectl exec -- ls / # Run command in existing pod (1 container case) -$ kubectl exec -c -- ls / # Run command in existing pod (multi-container case) +$ kubectl exec -- ls / # Run command in existing pod (1 container case) +$ kubectl exec -c -- ls / # Run command in existing pod (multi-container case) ``` From ef63728e6298f4837f264996d82d76994959cb7b Mon Sep 17 00:00:00 2001 From: CJ Cullen Date: Mon, 12 Sep 2016 11:01:03 -0700 Subject: [PATCH 13/15] Remove `=true` from gcloud commands --- docs/admin/cluster-management.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/admin/cluster-management.md b/docs/admin/cluster-management.md index 1be4fc8a02..c681a45996 100644 --- a/docs/admin/cluster-management.md +++ b/docs/admin/cluster-management.md @@ -111,11 +111,11 @@ to the corresponding `gcloud` commands. Examples: ```shell -gcloud container clusters create mytestcluster --zone=us-central1-b --enable-autoscaling=true --min-nodes=3 --max-nodes=10 --num-nodes=5 +gcloud container clusters create mytestcluster --zone=us-central1-b --enable-autoscaling --min-nodes=3 --max-nodes=10 --num-nodes=5 ``` ```shell -gcloud container clusters update mytestcluster --enable-autoscaling=true --min-nodes=1 --max-nodes=15 +gcloud container clusters update mytestcluster --enable-autoscaling --min-nodes=1 --max-nodes=15 ``` **Cluster autoscaler expects that nodes have not been manually modified (e.g. by adding labels via kubectl) as those properties would not be propagated to the new nodes within the same instance group.** From a0cecd07cb5fa2ab1ddbc458bb0d1fc1e41bbf4a Mon Sep 17 00:00:00 2001 From: Matthew Fisher Date: Mon, 12 Sep 2016 11:11:38 -0700 Subject: [PATCH 14/15] GCE runs the l7 cluster addon on the master --- docs/user-guide/ingress.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/docs/user-guide/ingress.md b/docs/user-guide/ingress.md index d80efa9bb9..1c82fb3676 100644 --- a/docs/user-guide/ingress.md +++ b/docs/user-guide/ingress.md @@ -44,13 +44,7 @@ It can be configured to give services externally-reachable urls, load balance tr Before you start using the Ingress resource, there are a few things you should understand. The Ingress is a beta resource, not available in any Kubernetes release prior to 1.1. You need an Ingress controller to satisfy an Ingress, simply creating the resource will have no effect. -On GCE/GKE there should be a [L7 cluster addon](https://github.com/kubernetes/contrib/blob/master/ingress/controllers/gce/README.md), deployed into the `kube-system` namespace: - -```shell -$ kubectl get pods --namespace=kube-system -l k8s-app=glbc -NAME READY STATUS RESTARTS AGE -l7-lb-controller-v0.6.0-chnan 2/2 Running 0 1d -``` +GCE/GKE deploys an ingress controller on the master. You can deploy any number of custom ingress controllers in a pod. You must annotate each ingress with the appropriate class, as indicated [here](https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx#running-multiple-ingress-controllers) and [here](https://github.com/kubernetes/contrib/blob/master/ingress/controllers/gce/BETA_LIMITATIONS.md#disabling-glbc). Make sure you review the [beta limitations](https://github.com/kubernetes/contrib/tree/master/ingress/controllers/gce/BETA_LIMITATIONS.md) of this controller. In environments other than GCE/GKE, you need to [deploy a controller](https://github.com/kubernetes/contrib/tree/master/ingress/controllers) as a pod. From ec9f1aedc9b4526b05b425e871cca9a49281e91a Mon Sep 17 00:00:00 2001 From: Eric Chiang Date: Mon, 12 Sep 2016 10:20:28 -0700 Subject: [PATCH 15/15] docs/admin/authentication: explicitly state the OIDC id_token is used instead of the access_token Most OAuth2 libraries use the access_token as a bearer token. This is different for Kubernetes, since the OIDC plugin uses an id_token instead (also returned in the token response). Be explicit and call out this difference. --- docs/admin/authentication.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/docs/admin/authentication.md b/docs/admin/authentication.md index bbceb4f818..08fde3265f 100644 --- a/docs/admin/authentication.md +++ b/docs/admin/authentication.md @@ -188,8 +188,15 @@ some OAuth2 providers, notably Azure Active Directory, Salesforce, and Google. The protocol's main extension of OAuth2 is an additional field returned with the access token called an [ID Token](https://openid.net/specs/openid-connect-core-1_0.html#IDToken). This token is a JSON Web Token (JWT) with well known fields, such as a user's -email, signed by the server. When used as a bearer token, the API server can -verify ID token's signature and determine the end users identity. +email, signed by the server. + +To identify the user, the authenticator uses the `id_token` (not the `access_token`) +from the OAuth2 [token response](https://openid.net/specs/openid-connect-core-1_0.html#TokenResponse) +as a bearer token. + +``` +Authentication: Bearer (id_token) +``` To enable the plugin, pass the following required flags: @@ -223,12 +230,12 @@ Kubernetes does not provide an OpenID Connect Identity Provider. You can use an existing public OpenID Connect Identity Provider (such as Google, or [others](http://connect2id.com/products/nimbus-oauth-openid-connect-sdk/openid-connect-providers)). Or, you can run your own Identity Provider, such as CoreOS [dex](https://github.com/coreos/dex), [Keycloak](https://github.com/keycloak/keycloak) or CloudFoundary [UAA](https://github.com/cloudfoundry/uaa). -The provider needs to support [OpenID connect discovery]https://openid.net/specs/openid-connect-discovery-1_0.html); not all do. +The provider needs to support [OpenID connect discovery](https://openid.net/specs/openid-connect-discovery-1_0.html); not all do. Setup instructions for specific systems: -- [UAA]: http://apigee.com/about/blog/engineering/kubernetes-authentication-enterprise -- [Dex]: https://speakerdeck.com/ericchiang/kubernetes-access-control-with-dex +- [UAA](http://apigee.com/about/blog/engineering/kubernetes-authentication-enterprise) +- [Dex](https://speakerdeck.com/ericchiang/kubernetes-access-control-with-dex) ### Webhook Token Authentication