Skip to content
This repository has been archived by the owner on Oct 16, 2018. It is now read-only.

Commit

Permalink
Bring dev/1.12 to release/1.12 (#28)
Browse files Browse the repository at this point in the history
* Update training overview (#9378)

Added Pluralsight getting started course

* update homepage banner so it's less cropped (#9391)

* Format code style (#9055)

* Add code format

* Format code display

* Render style error

* apply content_template (#9136)

* apply task template

* change content_template to task from concept

* very minor change to url syntax (#9543)

The URL for k/k included the text after ("repo"). This PR formats it to not include the text after.

* Reworked API reference doc (#9536)

This PR contains API reference docs generated from the reworked
generator (see:
kubernetes-sigs/reference-docs#53).
The main purpose is to rework the way how examples are shown.
When we are happy with the revised version, we can move the CSS and
fonts file to the static directory. We only need to change the HTML
and the `navData.js` file in the future.

Related Issues: #9271, #4015

* Fix typo in persistent-volumes.md (#9550)

* Fix id string for kube-proxy glossary term (#9551)

-Added hyphen to id string so that glossary term displays
extension text.

* Update horizontal-pod-autoscale.md (#9546)

Small typo. Missing "from" for sentence to make sense.

* Update feature-gates.md (#9320)

* Replacing the example IP address by something that could exists. (#9120)

The example `123.45.678.9` was an invalid IP address.

* Fix doc (#9564)

Added line break to: "KUBECONFIG=/etc/kubernetes/admin.conf [NEWLINE HERE] kubectl ..."; Also added export to variables declaration.

* Update service.md (#9562)

I think the writer means "reuse" here instead of "replace". Since the idea behind choosing your own IP is to avoid having to make any changes to the DNS.

* Add when storage key name changed (#9532)

It seems the name changed in k8s 1.8 which was reflected in kubernetes/website#5490 but the last section still mentions the old name without saying it has changed.

* Fix issues in configure-volume-storage (#9521)

* ps command not found

Signed-off-by: Jamie Zhuang <lanchongyizu@gmail.com>

* change to "host namespaces" and remove command prompts (#9553)

* changing button spacing (#8963)

* Fix link to website in Airflow Blogpost (#9338)

* Blog: 11 Ways (Not) to Get Hacked (#8914)

* feat: add 11 Ways (Not) to Get Hacked

* Update and rename 2018-06-05-11-ways-not-to-get-hacked.md to 2018-07-18-11-ways-not-to-get-hacked.md

* updates to Pearson case study content (#9483)

* updates to Pearson case study content

* updates to Pearson

* apply templates/concept and fix code snippets (#9540)

* updates to order of case studies (#9545)

* updates to order of case studies

* update

* fix some dumplication_problem (#9235)

* Update extensible admission controller links (#9459)

* update extensible-admission-controller links

* correct what-are-initializers link

* Add kublr to list of solutions (#9544)

* statefulset.md - Beta remnants removed (#9522)

* Fix some error about fluentd config file (#9528)

1.Fix error about source path is not equal to autdit-log-path
2.Fix error about filter type set

Signed-off-by: pengdake <19921207pq@gmail.com>

* Fix type in docs (#8939)

* Fix type in docs

* Address code review comments.

* Update authentication.md (#9565)

minor grammar correction

* Fix doc references to Kubernetes services provided by AWS, Azure and GCE (#9508)

* update authorization-node links (#9462)

* include supported version skew (#9501)

* Update create-pull-request.md (#9488)

Remove link to stage-documentation-change. 
(@misty says: The old page doesn't exist anymore and is now redirected to the current page.)

* Update authorization links (#9465)

* update authorization links

* remove cn content and fix link targets

* update bootstrap-token links (#9456)

* Make macOS standard usage (#9422)

* Add note for fluentd plugin installation (#9451)

* Add note for fluentd plugin installation

Fluentd plugin installation is different from fluentd installation,
so we need to tell user how to solve it.

Signed-off-by: pengdake <19921207pq@gmail.com>

* add space in note

* add period

* Add guide for getting token and discovery-token-ca-cert-hash (#9017)

* Add guide for getting token and discovery-token-ca-cert-hash

* Fix code snippet style

* apply content template (#9232)

* Environment variable for etcd quorum is singular (#9302)

See
https://github.com/kubernetes/kubernetes/blob/f8c4907bec4fcb7d86d955c06b9c362b61e58933/cluster/gce/config-default.sh#L109

* Drop {% raw %} block in manage-compute-resources-container (#9428)

This was breaking rendering the end of the page.

* Fixes to example for connecting with curl (#9337)

* Fixes to example for connecting with curl

Example for getting cluster token
- does not work with multiple entries in kubeconfig
- does not work with Istio installed

Fix both

* also need to change the tr from tabs to spaces

* Fix the semantically very broken search box (#9408)

This was very annoyingly very broken. *Very* broken.

Two primary issues:

1. Autofocus. Autofocus should only be used on a field when it is the
   expected action on the page, because it steals keyboard events such
   as the arrow keys and Space for navigation, and causes users of
   screen readers confusion as they’re thrown into a strange place.

   It’d be just barely OK to use it on search pages, but used on
   *every* page in the documentation, it’s just *super* annoying.

2. Not being a form. I have *no* idea why anyone would ever have
   written it the way it was—it’s just awful from end to end, a bad
   reimplementation of a subset of native browser functionality.
   It’s a form, let it *be* a form.

   Possibly the most baffling part of it was the use of location.replace
   which breaks the back button. I just… why!?

   While I was at it, I gave the search box an aria-label for good
   measure, but I didn’t change its type to "search" because that has
   UI implications on some platforms that I’m too lazy to deal with.

This is still pretty bad, because that magnifying glass is done in CSS
rather than being a fair dinkum submit button, but I just wanted a
quick fix because the autofocus issue is annoying me *so much*.

* apply templates/concept (#9539)

* update service-accounts-admin links (#9461)

* Trivial: Make the authentication doc consistent (#9472)

On the content, user categories are defined as service account and
normal user. However regular user is written at one place instead
of normal user. This replaces the regular user with normal user
for the consistency.

The option --authentication-token-webhook-config-file is for specifying
the configuration file which uses the kubeconfig file format, so this
replaces kubeconfig with configuration for avoiding confusions.

The last change is updating the order of 'clusters' and 'users' for
fitting the following example to read easily.

* Update authorization-rbac links (#9463)

* update authorization-rbac links

* fix broken links

* undo modification of cn content

* reorganize kubeadm files, part 1 (#9439)

* reorganize kubeadm files, part 1

* edit troubleshooting kubeadm for layout and content

* Update admission controller links (#9386)

* update admission-controller links

(cherry picked from commit 37043991a61e5e6f4ac1c463b14c65430b192553)

* updated links found using greedier regex

(cherry picked from commit 45c6d4cf7430245a3b4e81eae245000beea88841)

* correct link in cn/docs/admin/authorization/_index.md

* fix incorrect changes introduced in eac3619

* undo update of cn content

* fix link

* fix admission webhook link

* The command to copy the decoded certificate to the server.crt (#9448)

* The command to copy the decoded certificate to the server.crt

* -D to --decode

* apply templates/concept and fix code snippets (#9542)

* Change formatting of Stackpoint turnkey doc (#9493)

* Change formatting of Stackpoint turnkey doc

* s/Running/Run

* fix formatting glitch

* use template

* Add env var example (#9486)

* Adding anchor links to partner page (#9411)

* adding anchor links

* updating link names

* Add CNCF logo to homepage  (#9375)

* add CNCF logo on homepage

* edits

* Fix dead links and apply template (#9476)

* fix dead links and apply template

* fix conflicts

* re-fix dead links

* Revert "re-fix dead links"

This reverts commit 3eb8292f45c6453c577f6fc4a49600da291d8622.

* Adding redirects for turnkey docs. (#9426)

These documents were moved in kubernetes/website#8937.

* Update fedora_manual_config.md (#9416)

removal of 
  # Add your own!
  KUBELET_ARGS=""
this line causes line with args in it to be over writen

removal of flag "--require-kubeconfig" as it prevents the service from starting with error "F0708 18:41:17.411350   11725 server.go:145] unknown flag: --require-kubeconfig"

this is with v1.10.1

* update the go client usage to prevent common error. (#9414)

* fix-manage-compute-resources-container-view (#9402)

* Fix typo in example script (#9381)

Variable reference should be $ETCDHOSTS, not $ETCDHOST

* fix html

* add a space

* tweak crictl.md (#9349)

* Enhance documentation of .spec.startingDeadlineSeconds (#9296)

* Update cron-jobs.md

* Update automated-tasks-with-cron-jobs.md

* Update cron-jobs.md

* Reword added documentation and add info about error message.

* Fix grammatical typo.

* adjust grammar and punctuation

* adjust grammar and punctuation

* adjust tense

* Supplement documentation of ExternalName service types (#9435)

* Re-organize doc

* Remove section on multiple namespaces

* add NOTE to callout

* inline code block is not displayed (#8940)

* inline code block is not displayed

Using `kubectl get storageclass` instead of 

```
       kubectl get storageclass
```

correctly shows the code markup.

* Update change-default-storage-class.md

* reformat markdown for nested list

* Recommend --watch flag for obtaining external IP information (issue 8483) (#9129)

* Use --watch flag instead of checking multiple times

* Wording changes

* Update references to Federation-v2 progress (#9116)

* Update references to Federation-v2 progress

Added resources to the whats next section as there has been significant progress over the past few months with the alpha release of Federation-v2 expected in the next few weeks.

* remove <federation> in link

* Add new field selectors doc (#9174)

* Add new field selectors doc

* Address wording issues and remove warning

* add note on = and ==

Signed-off-by: lucperkins <lucperkins@gmail.com>

* fix double bullets in TOC (#9175)

* docs/concepts: add search paths for docker config (#9085)

previous document suggests to put config to /root/.docker/config.json
which is not always the case, and only works when the HOME=/root is
set for kubelet. Besides, that's not always the most recommended way
considering the potential risk when someone overrides this config
with another `docker login` on the same node. this change explicitly
lists all the possible locations where the configuration can be put.

* Add L10n repo branch structure info (#9206)

* Trivial Doc Fix (#9580)

This fixes the spelling of "default".

* fix: blog post clarity (#9578)

- rephrase Istio release info
- update RBAC for GKE vs hosted

* Trivial typo fix (#9575)

This PR takes over changes in #8980.

* Remove rkt-api-endpoint and rkt-path arguments in the doc (#9538) (#9576)

Kubelet help return not exist rkt-api-endpoint and rkt-path arguments,
So delete not exist arguments.

Signed-off-by: Yuanbin.Chen <cybing4@gmail.com>

* Fix reference to install-kubeadm docs (#9573)

The install-kubeadm doc has recently been moved from tasks to setup. Fix the references and remove an incorrect redict.

* updates to ING quotes (#9582)

* updates to ING quotes

* update

* Fix deployment.md with wrong READY numbers (#9584)

The status of READY number should be 2 instead of 0, described
in the first line of table

* oscon post (#9586)

* Add mention of NGINX Ingress Controller for Kubernetes (#9228)

* Update cron-jobs.md (#9234)

* Update cron-jobs.md

Removed bullet point indicating that a `CronJob` can run "Once at a specified point in time", since this use case is either not possible, or not documented at all.

* change wording

* Add Kontena Pharos as K8s solutions (#9166)

* adding cni.md (#8760)

* adding cni.md

* apply Zach's feedback

* update from GCE to GKE (#8881)

* Fix pipe to base64 -d to -D (#8943)

* Fix pipe to base64 -d to -D

Mac: `-d` does not work -D does

Eg. echo "c3R...zE2" | base64 -D

* use --decode instead of -D or -d

* Fix command highlight in port-forward-access-application-cluster (#8705)

* fix command highlight in port-forward-access-application-cluster

* Fix structure and add some sentences

* modify the wording

* update wording

* fix: typo, reword (#9587)

Apologies @kbarnard10, made this morning's correction with a typo >.<

* Add ICP license to the site footer (#9589)

* adding oscon post (#9595)

* Update pod-lifecycle.md (#9593)

Merging these two paragraphs, which both describe the fields included in the PodConditions. The first one mentions 6 fields, but only defines 3 of them. The second one defines two of the remaining three. The missing 6th element ("reason") has been added. Now we have the full list in one single section. Easier to understand.

* Update /docs/concepts/containers/images/ (#9596)

* wrap notes by shortcodes and remove command prompts

* tweak shell command

* remove command prompts and tweak shell commands (#9597)

* apply content_template (#9598)

* apply content_template (#9599)

* Updated dns-pod-service.md (#9552)

* Updated dns-pod-service.md

Added a note on A records creation

* Updated dns-pod-service.md

Added Hugo  {{ note }} shortcode

* Update dns-pod-service.md

Changed wording

* tighten up the wording

* kubeadm-install: modify the note about kubelet cgroup drivers (#9541)

* Make the command work with multiple pods too (#9454)

* Make the command work with multiple pods too

if the user has 2 or more pods the original command line give the following error:
```error: only one of -c or an inline [CONTAINER] arg is allowed
See 'kubectl logs -h' for help and examples.```

* Remove dollar sign to respect style guidelines

* Note on missing/incorrect labels and scheduler behaviour with pod anti-affinity (#8973)

* fix replicaset example (#9603)

* Fix display of lists in scheduling-gpus.md (#9609)

The lists are misparsed and displayed as normal paragraphs, add empty
lines so that they are parsed as proper lists.

* Fix contribution guide about adding code samples (#9574)

We have consolidated all YAML examples into `content/en/examples`
directory. This PR updates the contribution guide so that people know
where to put their sample YAML files when adding/changing topics.

* Blog Post: CPU Manager (#9632)

* adding oscon post

* CPU Manager Blog Post

* s/bash/shell (revert to previous)

* More language fixes

* Update information on master node size on GKE/AWS (#9226)

* Update information on master node size on GKE/AWS

* clean up passive language

* `this` instead of `the` to make it sound better. (#9629)

* Use Hugo for Sass processing (#9404)

* Move all Sass into a common /assets directory

* Remove node-sass make command

* Change head partial to accommodate full Sass rules

* Bump Hugo version in Netlify config

* Use separate partial for CSS imports

* Bump Hugo version

* Remove PostCSS from the pipeline

* Un-bump version

* Update Hugo version to 0.44

* Update Hugo version in Makefile

* Update production Hugo version

* Fix misspelled variable name

* Add ./resources folder to Git

* Update Hugo version in Netlify config to 0.45.1

* Use un-cached css.html partial

* Re-work extra CSS logic for .Params.css

* Update CSS generation logic in css.html partial

* Fix homepage image loading issue

* Fix quota documentation (#9648)

* Fix configure-service-account doc set permissions link error (#9653)

Issuse record: #9650

Signed-off-by: Yuanbin.Chen <cybing4@gmail.com>

* Change stage target to docker-serve in Makefile (#9216)

* Change stage target to docker-serve in Makefile

docker-serve is documented in the readme (from #9128).

* Update underlying command for make docker-serve

The underlying command listed in the README wasn't exactly the
same as the command in the Makefile.

* Remove old Dockerfile for Jekyll site

PR #9128 added a new Dockerfile for the Hugo site. The old
staging container is no longer needed.

* Add debugging information to pod priority and preemption (#9568)

* Add debugging information to Pod priority and preemption

* mdformat the page

* keep feature-state shortcodes together

* Add one more potential bug in preemption

* Addressed reviewer comments

* Keep packages back from package manager upgrades (#9509)

* Keep packages back from package manager upgrades

closes kubernetes/kubeadm#954

* copy edit revision

* Blog post, outlines KubeVirt's usage k8s extension features (#9324)

* Blog post about how KubeVirt extends Kubernetes using CRDs and other k8s extension features

* Update blog post to reflect k8s v1.11 crd versioning support

* Update and rename 2018-07-24-kubevirt-crds-for-virtualization.md to 2018-07-27-kubevirt-crds-for-virtualization.md

* Tidy up blog post to reflect reviewer feedback

* add pinterest case study (#9633)

* add pinterest case study

* fix

* fixes

* Update configure-service-account.md (#9657)

Fixed the broken link listed in : kubernetes/website#9650

* Update scale-intro.html (#9659)

reduce --> increase

* Auto _headers file generation logic (#9225)

* Standardize code formatting

* change image assets to https (#9660)

* change image assets to https

* fix in docs

* fix remaining image links

* Localization instructions (#9192)

* Begin re-working localization instructions

* Fix dangling sentence

* Re-arrange sections plus new content

* Fix TOC issue with misplaced capture directive

* Create new shortcodes for versions and language repos

* Add more translation instructions

* Remove translation docs added as an example

* Finish draft of localization doc

* Remove extraneous note

* fix description about kubeadm (#9646)

* add note shortcodes (#9673)

* Change "dotation" to "dot notation" in two places (#9678)

* Document update (#9675)

Adding a link to redis replicated so users of this example have a better understanding of what redis replicated is

* Update downward-api-volume-expose-pod-information.md (#9567)

dapi-volume-resources.yaml
Added divisor field in resourceFieldRef for DownwardAPIVolumeFiles
to clarify the format in which values are returned.

Issue: kubernetes/kubernetes#64579

* update default value of kubelet flag pod-infra-container-image (#9611)

* kubeadm-upgrade-1.11: fix wrong flag for feature gates (#9619)

* kubeadm: fix broken link for ha-etcd doc (#9624)

* fix the command output (#9636)

I have verified on version v1.10.0
[root@huan30:~]$ kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0-1", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"archive", BuildDate:"2018-06-13T04:29:49Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0-1", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"archive", BuildDate:"2018-06-13T04:22:05Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

* Add Alibaba Cloud in pick-right-solution.md (#9644)

Add Alibaba Cloud in pick-right-solution.md to give users more options.

* Add a note CPU change handling in CPU manager. (#9671)

This relates to PR kubernetes/kubernetes#66718
which validates that CPU manager state and current set CPUs are in sync.

* fix description about custom resource (#9676)

* JSONPaths with spaces must be double-quoted on Windows (#9679)

* Fix links to example YAMLs (#9680)

There are a few cases which were missed during previous effort on
consolidating all example YAML files. This PR fixes them all in the
English version.

Closes: #9674

* Remove redundant parenthesis (#9681)

Closes: #9665

* Correct minor error (#9690)

Technically speaking SRV targets are address record names, not CNAMEs.  In fact, the SRV RFC states that SRV targets must point to an address record name, and cannot be an alias (e.g. CNAME).

* fix the command output (#9695)

I have verified on version v1.11
[root@huan40:~]$ kubectl version
Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.1", GitCommit:"b1b29978270dc22fecc592ac55d903350454310a", GitTreeState:"clean", BuildDate:"2018-07-17T18:53:20Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.1", GitCommit:"b1b29978270dc22fecc592ac55d903350454310a", GitTreeState:"clean", BuildDate:"2018-07-17T18:43:26Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}

* fix the command output (#9697)

fix the command output

* Disable excludes when installing kube packages (#9670)

We should not exclude kubernetes packages when installing them.

* add link to nvidia gpu scheduling guide at end of device plugin document (#9685)

* Fix persistentVolumeClaim link (#9700)

* DamonSet typo (#9705)

* config: Get mediaTypes config in line with the Hugo version (#9704)

This gets rid of the big WARNING when building.

Note that this is only Netlify related, so it is backwards compatible.

* fix the command output (#9668)

I have verified on version v1.11.

* Add CSI and Flexvolume to glossary (#9666)

* Update resource-usage-monitoring.md (#9631)

Fixing a small typo for sentence to make sense.

* Adding patch command to forceful delete stateful pod (#9627)

* Kubeadm kubelet integration doc (#9652)

* kubeadm: Add a kubelet-kubeadm integration reference doc

* kubeadm: edits for the kubelet-kubeadm integration doc

* kubeadm: move the kubelet-kubeadm integration doc

* Apply edits to kubelet-integration.md

* Make kubelet-integration.md use a template

Also apply MD formatting fixes.

* Copyedit

* Address feedback on copyedit

* added a couple of typo fixes

* Trivial: Update HPA description (#9711)

* Trivial: Remove unnecessary new line

Current HPA page[1] contains unnecessary new line between
"metrics.k8s.io" and "custom.metrics.k8s.io", but that does
not have any meaning. This removes it for the readability.

[1]: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale

* Trivial: Replace RC with RS for HPA doc

As RC doc[1], RS is now the recommended way to set up replication.
So this replaces RC with RS for HPA doc.

[1]: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/

* kubeadm-init: update notes related to the configuration (#9638)

- mention `kubeadm config migrate`.
- don't inline control plane flag info, but rather link
to the new dedicated page.
- mention that kuberenetesVersion controls the version of the
images.

* Update authorization.md (#9726)

* change newline character to LF from CRLF (#9724)

* Update service.md (#9702)

* Add instructions for Macports (#9701)

* Add APPUiO to the list (#9647)

add APPUiO to the list of hosted, cloud and on-premises solutions.

* update owners of minikube doc (#9691)

* Add ExpandInUsePersistentVolumes feature gate (#9662)

* Add ExpandInUsePersistentVolumes feature gate

`ExpandInUsePersistentVolumes` is alpha in v1.11.

* Use relative link for ExpandInUsePersistentVolumes

* Update to Hugo 0.46 (#9703)

* Update to Hugo 0.46

This will only do the SASS building once for every languages (English and Chinese). For the Kubernetes site, this is mostly about speed.

* netlify: Simplify setup

Remove duplicate version defintions etc.

* typo (#9720)

* Update kubeadm-init.md

miss a "-" at the [website](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init#init-workflow) before the feature-gates

* a typo

* fix broken link for blog post (#9735)

* Blog Post: Dynamically Expand Volume with CSI and Kubernetes (#9714)

* adding blog post

* Update 2018-08-02-dynamically-expand-volume-csi.md

* Blog Post: Out of the Clouds onto the Ground: How to Make Kubernetes Production Grade Anywhere (#9716)

* adding blog post

* adding blog post

* Revert "adding blog post"

This reverts commit eeb113259d74e7c725f1f30dbc2bfd0cb335e4ff.

* Update 2018-08-03-make-kubernetes-production-grade-anywhere.md

* Fixes #9078 by adding note and link to table that disambiguates 'command' and 'entrypoint' (#9750)

* Update autocomplete instructions for Oh-My-Zsh (#9746)

The explanation to setup auto completion of zsh with Oh-My-Zsh is correct, however the example code is incorrectly mentioned as `source <(kubectl completion zsh)`. This pull request updates it to `plugins=(kubectl)`

* fix the command output (#9745)

fix the command output

* Fixed PID missmatch in zookeeper.md (#9749)

* fill ## Clean up (#9744)

* Add missing newline to fix list display on website (#9741)

* Add Knitter to the list of network addons. (#9742)

* apply template (#9734)

* apply template (#9732)

* apply template (#9733)

* Compute resource format (#9736)

* Update overview.md

* Fix list formatting, update capitalization

* Add necessity of metrics-server for HPA (#9729)

* Add necessity of metrics-server for HPA

Current HPA doc1 mentions metrics-server like

  For resource metrics, this is the metrics.k8s.io API,
  generally provided by metrics-server. It can be launched
  as a cluster addon.

The metrics.k8s.io API is mandatory for HPA, so the above means
metrics-server needs to be launched for HPA. However it is difficult
to understand that requirement because the above seems metrics-server
as just a addon, and that is described on small section.
In addition, many people are facing HPA issue that fetching metrics
doesn't work on the internet like

  $ kubectl get hpa
  NAME      REFERENCE          TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
  nginx     Deployment/nginx   <unknown>/50%   1         3         0          7s

The above sample "<unknown>" shows HPA feature cannot get current
metrics due to metrics-server doesn't work fine.

This adds necessity of metrics-server for HPA directly to solve
the problem.

fixes: #9728

* Copyedit

* Add a section on interactions of Pod priority and QoS (#9715)

* Add a section on interactions of Pod priority and QoS

* Copyedit

* Update service definition to bind to 127.0.0.1 (#9752)

Current service definition will result in an insecure kubelet per the example here:
https://medium.com/handy-tech/analysis-of-a-kubernetes-hack-backdooring-through-kubelet-823be5c3d67c

This change updates the kubelet configuration to bind to 127.0.0.1 so that the kubelet api does not allow unauthenticated access to the kubelet api.

* Update Documentaion (#9684)

Add `--tls-cipher-suites stringSlice` option to documentation as in `kube-apiserver`

* Document the wire format for X-Remote-Extra- and Impersonate-Extra- keys (#9698)

* Document the wire format for Extra introduced in #65799

Bytes which aren't [legal in HTTP headers](https://tools.ietf.org/html/rfc7230#section-3.2.6) need to be percent-encoded over the wire.

* Update authentication.md

code review feedback

* Update authentication.md

more review feedback

* Update authentication.md

feedback

* Update authentication.md

feedback

* Revert 9225, fix indexing for k8s.io (#9767)

* Reorganize docs contrib guide (#9510)

* Reorganize docs contrib guide

* Address first round of feedback from Brad, Jared

* Standardize on 'SIG Docs'

* Address more feedback

* Rewrites to participating.md

* Tweak navigation titles

* Document PR Wrangler

* Document SIG Docs chairperson

* Fix codeblock that shows how to use <codenew>

It was being interpreted as a Hugo shortcode.

* fix the command output (#9753)

I have verified on version v1.11

* Adding Learn More Links to Partner Page (#9707)

* learn more links

* updated links

* add SlingTV and Workiva case studies (#9769)

* add SlingTV and Workiva case studies

* update

* updates

* update

* Add details of  how to use https (#9770)

Currently the documentation does not specify how to access https service. 
This change will make sure that the user knows how to use the same

* tasks/administer-cluster: fix typo in PNG image (#9763)

Fix typo `cluser` -> `cluster`.

* add some step (#9743)

* modify shell

* Please remove the -y for apt-get install

* Escape capture template commands (#9788)

* updated cncf logo and KubeCon china dates (#9782)

* Update README and Dockerfile (#9781)

* Updates readme's site building instructions

* Alters dockerfile to use extended hugo build

This is necessary for the pipes used w/ TOCSS since node-sass was dropped

* fix the command output (#9777)

I have verified on version v1.11

* Remove linefeed so that the page does not break (#9776)

* Update expose-external-ip-address.md (#9775)

* fix the command output (#9774)

I have verified on version v1.11

* Fix netlify "mixed content detected" warning (#9683)

Fixes #9682.

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>

* Added Instruqt hands-on tutorials (#9723)

* Added Instruqt hands-on tutorials

Instruqt offers hands-on tutorials that are free to play for anyone.

* Update overview.md

* Minor corrections (#9771)

* Fix kubectl top for memory-demo pod (#9667)

Fixed command for accessing metrics(top) for memory-demo pod.

* Generically refer to container runtimes. (#9601)

* Generically refer to container runtimes.

Update nodes.md to refer to "container runtimes" instead of identifying Docker specifically.

* Update nodes.md link for Container Runtime to be relative to the domain.

* Update nodes.md

* Add comments to noindex mechanism (#9768)

* Check Netlify test

* Update netlify.toml

with the gh handle for sig docs maintainers

* Add info about requesting access (#9792)

* Add info about requesting access

This includes how to get a sponsor, how to be a sponsor,
how to become a reviewer, approver, and website admin.

* Address feedback

* Update kubeadm HA etcd docs (#9802)

Fixes kubernetes/kubeadm#1045

Signed-off-by: Chuck Ha <ha.chuck@gmail.com>

* fix the command output (#9799)

I have verified on version v1.11

* Blogpost: Kubebuilder introduction (#9773)

* Kubebuilder intro blogpost

Author details:
  Name: Sunil Arora
  Title: Software Engineer
  Company: Google Inc.
  Contact: sunilarora@google.com

* addressed review comments on kubebuilder blogpost

* fix the command output (#9821)

I have verified on version v1.11

* fix the command output (#9820)

I have verified on version v1.11

* fix the command output (#9818)

I have verified on version v1.11

* fix the command output (#9817)

I have verified on version v1.11

* fix the command output (#9813)

I have verified on version v1.11

* fix the command output (#9815)

I have verified on version v1.11

* fix the command output (#9812)

I have verified on version v1.11

* fix the command output (#9814)

I have verified on version v1.11

* fix the command output (#9816)

I have verified on version v1.11

* fix feature state snippet code block (#9804)

* changed the link path to current path. (#9803)

* Remove self-referential link (#9840)

Removed link redirects to the current page.

* Fix malformed Markdown in release notes causing missing bullets. (#9830)

Updates #9287

* Update SIG Azure reviewers (#9796)

Signed-off-by: Stephen Augustus <foo@agst.us>

* Remove incorrect and not needed mention of datadir (#9800)

As the sentence before the changes in this PR says, member/snap/db is a file
inside the datadir. It's not where datadir is located. Also, we are already
providing link to the data directory definition.

* Improve the preview card when sharing to social media (#9495)

* Improve social media share sheet metadata

* Improve social media share sheet metadata

* Improve social media share sheet metadata

* Improve social media share sheet metadata

* remove workiva from case study page (#9826)

* apply template (#9850)

* update SlingTV case study (#9852)

* fix the command output (#9859)

I have verified on version v1.11

* fix the command output (#9858)

I have verified on version v1.11

* Add Katacoda Online Training (#9873)

* Added AgileStacks distribution for turnkey and on-prem (#9875)

* Bing search for China users (#9845)

* Updates readme's site building instructions

* Alters dockerfile to use extended hugo build

This is necessary for the pipes used w/ TOCSS since node-sass was dropped

* WIP for bing search implementation

* Implements Bing search instead of google

* Makes bing the default result provider and uses google and it's available

* Adds pagination to bing and replaces the $.get call with a $.ajax call

* front adjust

* bing limit pagination

* Adds break if there are less than 10 pages worth of results on bing search

* Adds proper google script ref and proper config id

* Removes console.log call

* use code snippets (#9856)

* fix the command output (#9862)

I have verified on version v1.11

* fix the command output (#9861)

I have verified on version v1.11

* rebase certificates PR on Hugo master (#9842)

* rebase certificates PR on Hugo master

Co-authored-by: liztio <liz@heptio.com>

* fix per comments, add note about front-proxy

* fix up key usage table and references

* fix the command output (#9860)

I have verified on version v1.11

* Fix Custom Hugo Shortcodes link (#9881)

Signed-off-by: GuessWhoSamFoo <sfoohei@gmail.com>

* update kops version to latest (1.10.0) (#9882)

* update kops version to latest (1.10.0) 

added a more recent version of kops. 
now also supports kubernetes 1.10.x

* more updates on the kops.md

- added links to markup files in the kops repo
- slack channel updated

* Insert commas between clauses for readability (#9890)

* Fix broken links. (#9755)

- /docs/concepts/services-networking/service/#type-nodeport => /docs/concepts/services-networking/service/#nodeport
- /docs/concepts/services-networking/service/#type-loadbalancer => /docs/concepts/services-networking/service/#loadbalancer
- https://github.com/kubernetes/ingress-nginx/blob/master/docs/ingress-controller-catalog.md => https://github.com/kubernetes/ingress-nginx/

* Fix 404 in Configure DNS Cluster (#9853)

Original Page: 

https://kubernetes.io/docs/tasks/access-application-cluster/configure-dns-cluster/

Updates to use kubernetes/examples as source

* Clean up feature state includes (#9895)

* Fix indentation and Code of Conduct link in contribute section (#9896)

Signed-off-by: GuessWhoSamFoo <sfoohei@gmail.com>

* Update namespaces.md (#9865)

This update is to match similar content here:
https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/

* Add kontena/k8s-client ruby library (#9811)

* Add ruby k8s-client library

* add https://

* Add JS to linkify in-page H1-H6 (#9751)

* Update docs for fields allowed at root of CRD schema (#9973)

* add plugin docs and examples (#10053)
  • Loading branch information
zparnold authored and gochist committed Sep 2, 2018
1 parent 7ae907a commit 7bc70ae
Show file tree
Hide file tree
Showing 160 changed files with 4,026 additions and 1,447 deletions.
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<!-- Thanks for filing an issue! Before submitting, please fill in the following information. -->
<!-- See https://kubernetes.io/docs/contribute/start/ for guidance on writing an actionable issue description. -->

<!--Required Information-->

Expand Down
5 changes: 4 additions & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> Please delete this note before submitting the pull request.
> For 1.12 Features: set Milestone to 1.12 and Base Branch to release-1.12
> Help editing and submitting pull requests: https://deploy-preview-9510--kubernetes-io-master-staging.netlify.com/docs/contribute/start/#submit-a-pull-request.
> Help choosing which branch to use, see
> https://kubernetes.io/docs/contribute/start#choose-which-git-branch-to-use.
>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> Please delete this note before submitting the pull request.
4 changes: 3 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ ARG HUGO_VERSION

RUN mkdir -p /usr/local/src && \
cd /usr/local/src && \
curl -L https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_linux-64bit.tar.gz | tar -xz && \
curl -L https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-64bit.tar.gz | tar -xz && \
apk add build-base && \
apk add libc6-compat && \
mv hugo /usr/local/bin/hugo && \
curl -L https://bin.equinox.io/c/dhgbqpS8Bvy/minify-stable-linux-amd64.tgz | tar -xz && \
mv minify /usr/local/bin && \
Expand Down
8 changes: 5 additions & 3 deletions OWNERS_ALIASES
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,11 @@ aliases:
- chrislovecnm
- mfburnett
sig-azure: #Microsoft Azure
- slack
- colemickens
- jdumars
- andyzhangx
- feiskyer
- justaugustus
- karataliu
- khenidak
sig-big-data: #GH: sig-big-data-pr-reviews
- foxish
sig-cli: #Team: CLI; GH: sig-cli-pr-reviews; e.g. kubectl
Expand Down
13 changes: 5 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,10 @@ Once your pull request is created, a Kubernetes reviewer will take responsibilit

For more information about contributing to the Kubernetes documentation, see:

* [Contributing to the Kubernetes Documentation](http://kubernetes.io/editdocs/)
* [Creating a Documentation Pull Request](http://kubernetes.io/docs/home/contribute/create-pull-request/)
* [Writing a New Topic](http://kubernetes.io/docs/home/contribute/write-new-topic/)
* [Review Issues](http://kubernetes.io/docs/home/contribute/review-issues/)
* [Staging Your Documentation Changes](http://kubernetes.io/docs/home/contribute/stage-documentation-changes/)
* [Using Page Templates](http://kubernetes.io/docs/home/contribute/page-templates/)
* [Documentation Style Guide](http://kubernetes.io/docs/home/contribute/style-guide/)
* [Start contributing](https://kubernetes.io/docs/contribute/start/)
* [Staging Your Documentation Changes](http://kubernetes.io/docs/contribute/intermediate#view-your-changes-locally)
* [Using Page Templates](http://kubernetes.io/docs/contribute/style/page-templates/)
* [Documentation Style Guide](http://kubernetes.io/docs/contribute/style/style-guide/)

## Building the site using Docker

Expand All @@ -33,7 +30,7 @@ You can create an image for a different version of Hugo by changing the value of
Once the `kubernetes-hugo` image has been built locally, you can build the site:

```bash
make stage
make docker-serve

# The underlying command:
docker run \
Expand Down
45 changes: 43 additions & 2 deletions assets/sass/_base.sass
Original file line number Diff line number Diff line change
Expand Up @@ -1238,8 +1238,15 @@ $feature-box-div-margin-bottom: 40px
&:hover
border-color: white



// CNCF
#cncf
padding-top: 60px
padding-bottom: 140px
background-color: $light-grey
background-image: url(/images/cncf-color.png)
background-position: center 100px
background-repeat: no-repeat
background-size: 300px

// Features
#features
Expand Down Expand Up @@ -1768,3 +1775,37 @@ $feature-box-div-margin-bottom: 40px

.gsc-above-wrapper-area
border-bottom: 0;



/* Bing Search */
#bing-results-container
margin-top: 30px
margin-left: 20px

.bing-result
margin-bottom: 20px

.bing-result-name a
font-size: 16px
color: #0000CC


.bing-result-url
color: #008000
font-size: 13px

.bing-result-snippet
color: #000
font-size: 11px

#bing-pagination-container
margin: 10px
margin-left: 20px

.bing-page-anchor
text-decoration: none!important
cursor: pointer
color: #0000CC
margin-right: 8px

2 changes: 2 additions & 0 deletions config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -139,3 +139,5 @@ description = "Production-Grade Container Orchestration"
languageName = "Korean"
weight = 3
contentDir = "content/ko"


Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ content_template: templates/tutorial

* 本任务使用 [外部负载均衡服务](/docs/tasks/access-application-cluster/create-external-load-balancer/)
所以需要对应的可支持此功能的环境。如果你的环境不能支持,你可以使用
[NodePort](/docs/user-guide/services/#type-nodeport) 类型的服务代替。
[NodePort](/docs/user-guide/services/#nodeport) 类型的服务代替。

{{% /capture %}}

Expand Down
4 changes: 2 additions & 2 deletions content/cn/docs/tutorials/services/source-ip.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ command=GET
## Type=NodePort 类型 Services 的 Source IP


对于 Kubernetes 1.5,发送给类型为 [Type=NodePort](/docs/user-guide/services/#type-nodeport) Services 的数据包默认进行源地址 NAT。你可以创建一个 `NodePort` Service 来进行测试:
对于 Kubernetes 1.5,发送给类型为 [Type=NodePort](/docs/user-guide/services/#nodeport) Services 的数据包默认进行源地址 NAT。你可以创建一个 `NodePort` Service 来进行测试:

```console
$ kubectl expose deployment source-ip-app --name=nodeport --port=80 --target-port=8080 --type=NodePort
Expand Down Expand Up @@ -210,7 +210,7 @@ client_address=104.132.1.79
## Type=LoadBalancer 类型 Services 的 Source IP


对于 Kubernetes 1.5,发送给类型为 [Type=LoadBalancer](/docs/user-guide/services/#type-nodeport) Services 的数据包默认进行源地址 NAT,这是由于所有处于 `Ready` 状态的 Kubernetes 节点对于负载均衡的流量都是符合条件的。所以如果数据包到达一个没有 endpoint 的节点,系统将把这个包代理到** endpoint 的节点,并替换数据包的源 IP 为节点的 IP(如前面章节所述)。
对于 Kubernetes 1.5,发送给类型为 [Type=LoadBalancer](/docs/user-guide/services/#nodeport) Services 的数据包默认进行源地址 NAT,这是由于所有处于 `Ready` 状态的 Kubernetes 节点对于负载均衡的流量都是符合条件的。所以如果数据包到达一个没有 endpoint 的节点,系统将把这个包代理到** endpoint 的节点,并替换数据包的源 IP 为节点的 IP(如前面章节所述)。


你可以通过在一个 loadbalancer 上暴露这个 source-ip-app 来进行测试。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ approvers:

* [Persistent Volumes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) 定义持久化磁盘(磁盘生命周期不和 Pods 绑定)。
* [Services](https://kubernetes.io/docs/concepts/services-networking/service/) 使得 Pods 能够找到其它 Pods。
* [External Load Balancers](https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer) 对外暴露 Services。
* [External Load Balancers](https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer) 对外暴露 Services。
* [Deployments](http://kubernetes.io/docs/user-guide/deployments/) 确保 Pods 持续运行。
* [Secrets](http://kubernetes.io/docs/user-guide/secrets/) 保存敏感密码信息。

Expand Down Expand Up @@ -66,7 +66,7 @@ kubectl create -f https://raw.githubusercontent.com/kubernetes/examples/master/m
Kubernetes本质是模块化的,可以在各种环境中运行。但并不是所有集群都相同。此处是本示例的一些要求:
* 需要 1.2 版本以上的 Kubernetes,以使用更新的特性,例如 PV Claims 和 Deployments。运行 `kubectl version` 来查看你的集群版本。
* [Cluster DNS](https://github.com/kubernetes/dns) 将被用于服务发现。
* 一个 [external load balancer](https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer) 将被用于接入 WordPress。
* 一个 [external load balancer](https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer) 将被用于接入 WordPress。
* 使用了 [Persistent Volume Claims](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims)。你必须创建集群中需要的 Persistent Volumes。本示例将展示两种类型的 volume 的创建方法,但是任何类型的 volume 都是足够使用的。


Expand Down
24 changes: 12 additions & 12 deletions content/en/_index.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ <h2>The Challenges of Migrating 150+ Microservices to Kubernetes</h2>
<br>
<br>
<br>
<a href="https://www.lfasiallc.com/events/kubecon-cloudnativecon-china-2018/" button id= "desktopKCButton">Attend KubeCon in Shanghai on Nov. 14-15, 2018</a>
<a href="https://www.lfasiallc.com/events/kubecon-cloudnativecon-china-2018/" button id= "desktopKCButton">Attend KubeCon in Shanghai on Nov. 13-15, 2018</a>
<br>
<br>
<br>
Expand Down Expand Up @@ -122,23 +122,23 @@ <h4><a href="/docs/concepts/workloads/controllers/jobs-run-to-completion/">Batch
<h3>Case Studies</h3>
<div id="caseStudiesWrapper">
<div>
<p>Pinning Its Past, Present, and Future on Cloud Native</p>
<a href="/case-studies/pinterest">Read more</a>
<p>Sling TV: Marrying Kubernetes and AI to Enable Proper Web Scale</p>
<a href="/case-studies/slingtv">Read more</a>
</div>
<div>
<p>Reinventing the World’s Largest Education Company With Kubernetes</p>
<a href="/case-studies/pearson">Read more</a>
<p>Using OpenTracing to Help Pinpoint the Bottlenecks</p>
<a href="/case-studies/workiva">Read more</a>
</div>

<div>
<p>Supporting Fast Decisioning Applications with Kubernetes</p>
<a href="/case-studies/capital-one">Read more</a>
<p>Pinning Its Past, Present, and Future on Cloud Native</p>
<a href="/case-studies/pinterest">Read more</a>
</div>
<div>
<p>Driving Banking Innovation with Cloud Native</p>
<a href="/case-studies/ing">Read more</a>
<p>Reinventing the World’s Largest Education Company With Kubernetes</p>
<a href="/case-studies/pearson">Read more</a>
</div>

</div>

<!--<div id="bigSocial">-->
Expand Down Expand Up @@ -169,7 +169,7 @@ <h5 style="text-align: center"><a href="/case-studies/" style="color: #3371E3; f
<section id="cncf">
<main>
<center>
<p>We are a <a href="https://cncf.io/">CNCF</a> graduated project</p>
<p style="font-size: 20px">We are a <a href="https://cncf.io/">CNCF</a> graduated project</p>
</center>
</main>
</section>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ If you’re interested in exploring these features more in depth, check back in
* Day 1: [IPVS-Based In-Cluster Service Load Balancing Graduates to General Availability](/blog/2018/07/09/ipvs-based-in-cluster-load-balancing-deep-dive/)
* Day 2: [CoreDNS Promoted to General Availability](/blog/2018/07/10/coredns-ga-for-kubernetes-cluster-dns/)
* Day 3: [Dynamic Kubelet Configuration Moves to Beta](/blog/2018/07/11/dynamic-kubelet-configuration/)
* Day 4: [Resizing Persistent Volumes using Kubernetes](/blog/2018/07/11/resizing-persistent-volumes-using-kubernetes/)
* Day 4: [Resizing Persistent Volumes using Kubernetes](/blog/2018/07/12/resizing-persistent-volumes-using-kubernetes/)

## Release team

Expand Down
161 changes: 161 additions & 0 deletions content/en/blog/_posts/2018-08-02-dynamically-expand-volume-csi.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
---
layout: blog
title: 'Dynamically Expand Volume with CSI and Kubernetes'
date: 2018-08-02
---

**Author**: Orain Xiong (Co-Founder, WoquTech)

_There is a very powerful storage subsystem within Kubernetes itself, covering a fairly broad spectrum of use cases. Whereas, when planning to build a product-grade relational database platform with Kubernetes, we face a big challenge: coming up with storage. This article describes how to extend latest Container Storage Interface 0.2.0 and integrate with Kubernetes, and demonstrates the essential facet of dynamically expanding volume capacity._

## Introduction

As we focalize our customers, especially in financial space, there is a huge upswell in the adoption of container orchestration technology.

They are looking forward to open source solutions to redesign already existing monolithic applications, which have been running for several years on virtualization infrastructure or bare metal.

Considering extensibility and the extent of technical maturity, Kubernetes and Docker are at the very top of the list. But migrating monolithic applications to a distributed orchestration like Kubernetes is challenging, the relational database is critical for the migration.

With respect to the relational database, we should pay attention to storage. There is a very powerful storage subsystem within Kubernetes itself. It is very useful and covers a fairly broad spectrum of use cases. When planning to run a relational database with Kubernetes in production, we face a big challenge: coming up with storage. There are still some fundamental functionalities which are left unimplemented. Specifically, dynamically expanding volume. It sounds boring but is highly required, except for actions like create and delete and mount and unmount.

Currently, expanding volume is only available with those storage provisioners:

* gcePersistentDisk
* awsElasticBlockStore
* OpenStack Cinder
* glusterfs
* rbd

In order to enable this feature, we should set feature gate `ExpandPersistentVolumes` true and turn on the `PersistentVolumeClaimResize` admission plugin. Once `PersistentVolumeClaimResize` has been enabled, resizing will be allowed by a Storage Class whose `allowVolumeExpansion` field is set to true.

Unfortunately, dynamically expanding volume through the Container Storage Interface (CSI) and Kubernetes is unavailable, even though the underlying storage providers have this feature.

This article will give a simplified view of CSI, followed by a walkthrough of how to introduce a new expanding volume feature on the existing CSI and Kubernetes. Finally, the article will demonstrate how to dynamically expand volume capacity.

## Container Storage Interface (CSI)

To have a better understanding of what we're going to do, the first thing we need to know is what the Container Storage Interface is. Currently, there are still some problems for already existing storage subsystem within Kubernetes. Storage driver code is maintained in the Kubernetes core repository which is difficult to test. But beyond that, Kubernetes needs to give permissions to storage vendors to check code into the Kubernetes core repository. Ideally, that should be implemented externally.

CSI is designed to define an industry standard that will enable storage providers who enable CSI to be available across container orchestration systems that support CSI.

This diagram depicts a kind of high-level Kubernetes archetypes integrated with CSI:

![csi diagram](/images/blog/2018-08-02-dynamically-expand-volume-csi/csi-diagram.png)

* Three new external components are introduced to decouple Kubernetes and Storage Provider logic
* Blue arrows present the conventional way to call against API Server
* Red arrows present gRPC to call against Volume Driver

For more details, please visit: https://github.com/container-storage-interface/spec/blob/master/spec.md

## Extend CSI and Kubernetes

In order to enable the feature of expanding volume atop Kubernetes, we should extend several components including CSI specification, “in-tree” volume plugin, external-provisioner and external-attacher.

## Extend CSI spec

The feature of expanding volume is still undefined in latest CSI 0.2.0. The new 3 RPCs, including `RequiresFSResize` and `ControllerResizeVolume` and `NodeResizeVolume`, should be introduced.

```
service Controller {
rpc CreateVolume (CreateVolumeRequest)
returns (CreateVolumeResponse) {}
……
rpc RequiresFSResize (RequiresFSResizeRequest)
returns (RequiresFSResizeResponse) {}
rpc ControllerResizeVolume (ControllerResizeVolumeRequest)
returns (ControllerResizeVolumeResponse) {}
}
service Node {
rpc NodeStageVolume (NodeStageVolumeRequest)
returns (NodeStageVolumeResponse) {}
……
rpc NodeResizeVolume (NodeResizeVolumeRequest)
returns (NodeResizeVolumeResponse) {}
}
```

## Extend “In-Tree” Volume Plugin

In addition to the extend CSI specification, the `csiPlugin` interface within Kubernetes should also implement `expandablePlugin`. The `csiPlugin` interface will expand `PersistentVolumeClaim` representing for `ExpanderController`.


```go
type ExpandableVolumePlugin interface {
VolumePlugin
ExpandVolumeDevice(spec Spec, newSize resource.Quantity, oldSize resource.Quantity) (resource.Quantity, error)
RequiresFSResize() bool
}
```

### Implement Volume Driver

Finally, to abstract complexity of the implementation, we should hard code the separate storage provider management logic into the following functions which is well-defined in the CSI specification:

* CreateVolume
* DeleteVolume
* ControllerPublishVolume
* ControllerUnpublishVolume
* ValidateVolumeCapabilities
* ListVolumes
* GetCapacity
* ControllerGetCapabilities
* RequiresFSResize
* ControllerResizeVolume

## Demonstration

Let’s demonstrate this feature with a concrete user case.

* Create storage class for CSI storage provisioner

```yaml
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: csi-qcfs
parameters:
csiProvisionerSecretName: orain-test
csiProvisionerSecretNamespace: default
provisioner: csi-qcfsplugin
reclaimPolicy: Delete
volumeBindingMode: Immediate
```
* Deploy CSI Volume Driver including storage provisioner `csi-qcfsplugin` across Kubernetes cluster

* Create PVC `qcfs-pvc` which will be dynamically provisioned by storage class `csi-qcfs`

```yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: qcfs-pvc
namespace: default
....
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 300Gi
storageClassName: csi-qcfs
```

* Create MySQL 5.7 instance to use PVC `qcfs-pvc`
* In order to mirror the exact same production-level scenario, there are actually two different types of workloads including:
* Batch insert to make MySQL consuming more file system capacity
* Surge query request
* Dynamically expand volume capacity through edit pvc `qcfs-pvc` configuration

The Prometheus and Grafana integration allows us to visualize corresponding critical metrics.

![prometheus grafana](/images/blog/2018-08-02-dynamically-expand-volume-csi/prometheus-grafana.png)

We notice that the middle reading shows MySQL datafile size increasing slowly during bulk inserting. At the same time, the bottom reading shows file system expanding twice in about 20 minutes, from 300 GiB to 400 GiB and then 500 GiB. Meanwhile, the upper reading shows the whole process of expanding volume immediately completes and hardly impacts MySQL QPS.

## Conclusion

Regardless of whatever infrastructure applications have been running on, the database is always a critical resource. It is essential to have a more advanced storage subsystem out there to fully support database requirements. This will help drive the more broad adoption of cloud native technology.
Loading

0 comments on commit 7bc70ae

Please sign in to comment.