* Official documentation on Poseidon/Firmament, a new multi-scheduler support for K8S. (#11752)
* Added documentation about Poseidon-Firmament scheduler
* Fixed some style issues.
* Udpated the document as per the review comments.
* Fixed some typos and updated the document
* Updated the document as per the review comments.
* Document timeout attribute for kms-plugin. (#12158)
See 72540.
* Official documentation on Poseidon/Firmament, a new multi-scheduler (#12343)
* Removed the old version of the Poseidon documentation. Incorrect location.
* Official documentation on Poseidon/Firmament, a new multi-scheduler support for K8S (#12069)
* Official documentation on Poseidon/Firmament, a new multi-scheduler support for K8S. (#11752)
* Added documentation about Poseidon-Firmament scheduler
* Fixed some style issues.
* Udpated the document as per the review comments.
* Fixed some typos and updated the document
* Updated the document as per the review comments.
* Updated the document as per review comments. Added config details.
* Updated the document as per the latest review comments. Fixed nits
* Made changes as per latest suggestions.
* Some more changes added.
* Updated as per suggestions.
* Changed the release process section.
* SIG Docs edits
Small edits to match style guidelines.
* add plus to feature state
* capitalization
* revert feature state shortcode
since this is a Kubernetes extension, not a direct feature, it shouldn't use the regular feature state tagging.
(cherry picked from commit 7730c1540b)
* Remove initializers from doc. It will be removed in 1.14 (#12331)
* kubeadm: Document CRI auto detection functionality (#12462)
Signed-off-by: Rostislav M. Georgiev <rostislavg@vmware.com>
* Minor doc change for GAing Pod DNS Config (#12514)
* Graduate ExpandInUsePersistentVolumes feature to beta (#10574)
* Rename 2018-11-07-grpc-load-balancing-with-linkerd.md.md file (#12594)
* Add dynamic percentage of node scoring to user docs (#12235)
* Add dynamic percentage of node scoring to user docs
* addressed review comments
* delete special symbol (#12445)
* Update documentation for VolumeSubpathEnvExpansion (#11843)
* Update documentation for VolumeSubpathEnvExpansion
* Address comments - improve descriptions
* Graduate Pod Priority and Preemption to GA (#12428)
* Added Instana links to the documentation (#12977)
* Added link to the Instana Kubernetes integration
* Added Instana link for services section
Added Instana and a link to the Kubernetes integration to the analytics services section and broadened the scope to APM, monitoring and analytics.
* Oxford comma /flex
* More Oxford commas, because they matter
* Update kubectl plugins to stable (#12847)
* documentation for CSI topology beta (#12889)
* Document changes to default RBAC discovery ClusterRole(Binding)s (#12888)
* Document changes to default RBAC discovery ClusterRole(Binding)s
Documentation for https://github.com/kubernetes/enhancements/issues/789 and https://github.com/kubernetes/kubernetes/pull/73807
* documentation review feedback
* CSI raw block to beta (#12931)
* Change incorrect string raw to block (#12926)
Fixes#12925
* Update documentation on node OS/arch labels (#12976)
These labels have been promoted to GA:
https://github.com/kubernetes/enhancements/issues/793
* local pv GA doc updates (#12915)
* Publish CRD OpenAPI Documentation (#12910)
* add documentation for CustomResourcePublishOpenAPI
* address comments
fix links, ordered lists, style and typo
* kubeadm: add document for upgrading from 1.13 to 1.14 (single CP and HA) (#13189)
* kubeadm: add document for upgrading from 1.13 to 1.14
- remove doc for upgrading 1.10 -> 1.11
* kubeadm: apply amends to upgrade-1.14 doc
* kubeadm: apply amends to upgrade-1.14 doc (part2)
* kubeadm: apply amends to upgrade-1.14 doc (part3)
* kubeadm: add note about "upgrade node experimental-control-plane"
+ add comment about `upgrade plan`
* kubeadm: add missing "You should see output similar to this"
* fix bullet indentation (#13214)
* mark PodReadinessGate GA (#12800)
* Update RuntimeClass documentation for beta (#13043)
* Update RuntimeClass documentation for beta
* Update feature gate & add upgrade section
* formatting fixes
* Highlight upgrade action required
* Address feedback
* CSI ephemeral volume alpha documentation (#10934)
* update kubectl documentation (#12867)
* update kubectl documentation
* add document for Secret/ConfigMap generators
* replace `kubectl create -f` by `kubectl apply -f`
* Add page for kustomization support in kubectl
* fix spelling errors and address comments
* Documentation for Windows GMSA feature (#12936)
* Documentation for Windows GMSA feature
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Enhancements to GMSA docs
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Fix links
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Fix GMSA link
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Add GMSA feature flag in feature flag list
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Relocate GMSA to container configuration
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Add example for container spec
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Remove changes in Windows index
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Update configure-gmsa.md
* Update configure-gmsa.md
* Update configure-gmsa.md
* Update configure-gmsa.md
* Rearrange the steps into two sections and other edits
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Fix links
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Add reference to script to generate GMSA YAMLs
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Some more clarifications for GMSA
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* HugePages graduated to GA (#13004)
* HugePages graduated to GA
* fixing nit for build
* Docs for node PID limiting (https://github.com/kubernetes/kubernetes/pull/73651) (#12932)
* kubeadm: update the reference documentation for 1.14 (#12911)
* kubeadm: update list of generated files for 1.14
NOTE: PLACEHOLDERS! these files are generated by SIG Docs each
release, but we need them to pass the k/website PR CI.
- add join_phase* (new sub phases of join)
- add init_phase_upload-certs.md (new upload certs phase for init)
- remove alpha-preflight (now both init and join have this)
* kubeadm: update reference docs includes for 1.14
- remove includes from alpha.md
- add upload-certs to init-phase.md
- add join-phase.md and it's phases
* kubeadm: update the editorial content of join and init
- cleanup master->control-plane node
- add some notes about phases and join
- remove table about pre-pulling images
- remove outdated info about self-hosting
* kubeadm: update target release for v1alpha3 removal
1.14 -> 1.15
* kubeadm: copy edits for 1.14 reference docs (part1)
* kubeadm: use "shell" for code blocks
* kubeadm: update the 1.14 HA guide (#13191)
* kubeadm: update the 1.14 HA guide
* kubeadm: try to fix note/caution indent in HA page
* kubeadm: fix missing sudo and minor amends in HA doc
* kubeadm: apply latest amends to the HA doc for 1.14
* fixed a few missed merge conflicts
* Admission Webhook new features doc (#12938)
- kubernetes/kubernetes#74998
- kubernetes/kubernetes#74477
- kubernetes/kubernetes#74562
* Clarifications and fixes in GMSA doc (#13226)
* Clarifications and fixes in GMSA doc
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Update configure-gmsa.md
* Reformat to align headings and pre-reqs better
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Reformat to align headings and pre-reqs better
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Reformat to fix bullets
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Reword application of sample gmsa
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Update configure-gmsa.md
* Address feedback to use active voice
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Address feedback to use active voice
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* RunAsGroup documentation for Progressing this to Beta (#12297)
* start serverside-apply documentation (#13077)
* start serverside-apply documentation
* add more concept info on server side apply
* Update api concepts
* Update api-concepts.md
* fix style issues
* Document CSI update (#12928)
* Document CSI update
* Finish CSI documentation
Also fix mistake with ExpandInUsePersistentVolumes documented as beta
* Overall docs for CSI Migration feature (#12935)
* Placeholder docs for CSI Migration feature
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Address CR comments and update feature gates
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Add mappings for CSI plugins
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Add sections for AWS and GCE PD migration
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Add docs for Cinder and CSI Migration info
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Clarify scope to volumes with file system
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Change the format of EBS and Cinder CSI Migration sections to follow the GCE template
Signed-off-by: Deep Debroy <ddebroy@docker.com>
* Windows documentation updates for 1.14 (#12929)
* Updated the note to indicate doc work for 1.14
* first attempt at md export from gdoc
* simplifyig
* big attempt
* moving DRAFT windows content to PR for review
* moving content to PR in markdown for review
* updated note tags
* Delete windows-contributing.md
deleting this file as it is already ported to the github contributor guide
* fixed formatting in intro and cluster setup guide
* updating formatting for running containers guide
* rejiggered end of troubleshooting
* fixed minor typos
* Clarified the windows binary download step
* Update _index.md
making updates based on feedback
* Update _index.md
updating ovn-kubernetes docs
* Update _index.md
* Update _index.md
* updating relative docs links
updating all the links to be relative links to /docs
* Update _index.md
* Update _index.md
updates for windows services and ovn-kubernetes
* formatted for correct step numbering
* fix typos
* Update _index.md
updates for flannel PR in troubleshooting
* Update _index.md
* Update _index.md
updating a few sections like roadmap, services, troubleshooting/filing tickets
* Update _index.md
* Update _index.md
* Update _index.md
* Fixed a few whitespace issues
* Update _index.md
* Update _index.md
* Update _index.md
* add section on upgrading CoreDNS (#12909)
* documentation for kubelet resource metrics endpoint (#12934)
* windows docs updates for 1.14 (#13279)
* Delete sample-l2bridge-wincni-config.json
this file is not used anywhere
* Update _index.md
* Update _index.md
* Update _index.md
* Update _index.md
* Update _index.md
* Rename content/en/docs/getting-started-guides/windows/_index.md to content/en/docs/setup/windows/_index.md
moving to new location
* Delete flannel-master-kubectl-get-ds.png
* Delete flannel-master-kubeclt-get-pods.png
* Delete windows-docker-error.png
* Add files via upload
* Rename _index.md to add-windows-nodes.md
* Create _index.md
* Update _index.md
* Update add-windows-nodes.md
* Update add-windows-nodes.md
* Create user-guide-windows-nodes.md
* Create user-guide-windows-containers.md
* Update and rename add-windows-nodes.md to intro-windows-nodes.md
* Update user-guide-windows-containers.md
* Rename intro-windows-nodes.md to intro-windows-in-kubernetes.md
* Update user-guide-windows-nodes.md
* Update user-guide-windows-containers.md
* Update user-guide-windows-containers.md
* Update user-guide-windows-nodes.md
* Update user-guide-windows-containers.md
* Update _index.md
* Update intro-windows-in-kubernetes.md
* Update intro-windows-in-kubernetes.md
fixing the pause image
* Update intro-windows-in-kubernetes.md
changing tables from html to MD
* Update user-guide-windows-nodes.md
converting tables from HTML to MD
* Update intro-windows-in-kubernetes.md
* Update user-guide-windows-nodes.md
* Update user-guide-windows-nodes.md
* Update user-guide-windows-nodes.md
updating the numbering , even though it messes up the notes a little bit. Jim will file a ticket to follow up
* Update user-guide-windows-nodes.md
* update to windows docs for 1.14 (#13322)
* Update intro-windows-in-kubernetes.md
* Update intro-windows-in-kubernetes.md
* Update intro-windows-in-kubernetes.md
* Update intro-windows-in-kubernetes.md
* Update intro-windows-in-kubernetes.md
* Update user-guide-windows-containers.md
* Update user-guide-windows-nodes.md
* Update intro-windows-in-kubernetes.md (#13344)
* server side apply followup (#13321)
* change some parts of serverside apply docs in response to comments
* fix typos and wording
* Update config.toml (#13365)
Existing details related to services are ambiguous as it does not give an idea when to use an environment variable for service discovery. Also, it does not talk about the DNS method of service discovery which is highly recommended. so corrected document to provide these missing details.
per the godocs:
// RootCAs defines the set of root certificate authorities
// that clients use when verifying server certificates.
// If RootCAs is nil, TLS uses the host's root CA set.
* E2E testing blog post
* E2E testing blog post: add information about optional command line flags
* Update and rename 2019-03-30-e2e-testing-for-everyone.md to 2019-03-22-e2e-testing-for-everyone.md
Adds a link to a new nodejs client library. New library builds on top of the godaddy lib, providing useful kubectl-like abstractions like `get` and `updateOrCreate`, and adds API-mapping and version-handling so the client code does not need to worry about compatibility across cluster versions.
Three optimizations:
- move example testing logic into a bash script to save travis specific
commands;
- use kubernetes release package (about 20MB) instead of git repo (about
800 MB at the moment);
- detect whether a PR contains changes to examples and skip examples
testing if not.
Closes: #13140
The tutorial has somebody expose this service externally, so they should be getting NodePort or LoadBalancer not ClusterIP. I followed this tutorial and that's what I got (as expected)
* Create 2019-03-12-kubeedge-k8s-based-edge-intro.md
Initial created.
* Create kubeedge-highlevel-arch.png
* Adding KubeEdge High Level Arch img
Adding KubeEdge High Level Arch img for the blog
* Adding KubeEdge Logo img
Adding KubeEdge Logo img for blog
* Updated KubeEdge intro blog
Updated all the sections for KubeEdge, a k8s based edge computing platform.
(2019-03-12-kubeedge-k8s-based-edge-intro)
* Update 2019-03-12-kubeedge-k8s-based-edge-intro.md
Minor format updates
* Update 2019-03-12-kubeedge-k8s-based-edge-intro.md
* [ReviewFix] 2019-03-12-kubeedge-k8s-based-edge-intro.md
Review of @stewart-yu fixed for KubeEdge/kubeedge link
* [ReviewFix] Format 2019-03-12-kubeedge-k8s-based-edge-intro.md
Linefeed update.
* Update 2019-03-12-kubeedge-k8s-based-edge-intro.md
* Update 2019-03-12-kubeedge-k8s-based-edge-intro.md
* [ReviewFix] 2019-03-12-kubeedge-k8s-based-edge-intro.md
KubeEdge control plane in cloud and extension part made it mode clear.
* Update 2019-03-12-kubeedge-k8s-based-edge-intro.md
* Rename 2019-03-12-kubeedge-k8s-based-edge-intro.md to 2019-03-19-kubeedge-k8s-based-edge-intro.md
* Update 2019-03-19-kubeedge-k8s-based-edge-intro.md
* Create Kubernetes-setup-using-Ansible-and-Vagrant.md
This blog describes the steps for to setting up a multi node Kubernetes cluster using Ansible and Vagrant.
* Apply suggestions from code review
Co-Authored-By: ljnaresh <naresh_lj@infosys.com>
* Markdown changes for syntax highting and reviews.
* Vagrant image & join command logic changes
* Update Kubernetes-setup-using-Ansible-and-Vagrant.md
* Adding author name and organization
* Markdown correction for colon
* Update Kubernetes-setup-using-Ansible-and-Vagrant.md
At its current form minikube fails to start with following error:
unknown flag: --AllowedUnsafeSysctls
Renaming it to allowed-unsafe-sysctls works as expected.
* Update command outputs to k8s 1.13 based
* Update command outputs to k8s 1.13 based (2)
* Add the way to download the example manifest and change datetime in a pod log
* create a job from remote url
* Update content/en/docs/tasks/job/automated-tasks-with-cron-jobs.md
Co-Authored-By: makocchi-git <makocchi@gmail.com>
* Fix not available config field in kubeadm-init.md
Update the line describing `unifiedControlPlaneImage`, since "unifiedControlPlaneImage" in ClusterConfiguration was changed to a boolean field called "useHyperKubeImage" in v1beta1.
( https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1 )
* Update image names and versions in kubeadm-init.md
$ kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.13.4
k8s.gcr.io/kube-controller-manager:v1.13.4
k8s.gcr.io/kube-scheduler:v1.13.4
k8s.gcr.io/kube-proxy:v1.13.4
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.6
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
k8s.gcr.io/kube-proxy v1.13.4 fadcc5d2b066 10 days ago 80.3MB
k8s.gcr.io/kube-controller-manager v1.13.4 40a817357014 10 days ago 146MB
k8s.gcr.io/kube-scheduler v1.13.4 dd862b749309 10 days ago 79.6MB
k8s.gcr.io/kube-apiserver v1.13.4 fc3801f0fc54 10 days ago 181MB
k8s.gcr.io/coredns 1.2.6 f59dcacceff4 4 months ago 40MB
k8s.gcr.io/etcd 3.2.24 3cab8e1b9802 5 months ago 220MB
k8s.gcr.io/pause 3.1 da86e6ba6ca1 14 months ago 742kB
* Update the way to use custom etcd image in kubeadm-init.md
According to rosti's [comment](https://github.com/kubernetes/kubeadm/issues/1255#issuecomment-439874004),
the `image` field under `etcd` (from `v1alpha3`) was replaced by a couple of fields - `imageRepository` and `imageTag`.
* Apply suggestions from @neolit123 in kubeadm-init.md
Suggestions from @neolit123: https://github.com/kubernetes/website/pull/13068#pullrequestreview-212806230
* Apply a suggestion from @rosti in kubeadm-init.md
A suggestion from @rosti : https://github.com/kubernetes/website/pull/13068#discussion_r264228348
We've redone OpenUnison's k8s integration to provide multiple "spins". We created a new page to point users to the GitHub repo that matches the "spin" they're looking for.
In the calculation of this `Allocatable` will be `14.5 CPUs`, `28.5Gi` of memory and
`88Gi` of local storage. - It was 98Gi for storage instead of 88Gi which is derived after negating System-Reserved+Kube-reserved+eviction+hard
* Clarified step of getting Kubernetes cluster name; fixed quoting in command that sets `APISERVER`.
Need to set `CLUSTER_NAME` before using it.
The single quote in the `APISERVER` command prevented the expansion of the `CLUSTER_NAME` variable.
* Remove whitespace
* ko-trans: Update outdated contents in ko7 branch (#12762)
* ko: Update outdated files in dev-1.13-ko.7 (#12805)
* ko: Translate docs/home/_index.md in Korean (#12829)
* Translate scheduler-perf-tuning.md in Korean (#12782)
* Translate concepts/overview/object-management-kubectl/overview in Korean (#12834)
* Fix new line in Korean translation scheduler-perf-tuning.md (#12835)
* ko: Translate tutorials/online-training/overview.md in Korean (#12854)
* ko: Translate contribute/_index.md in Korean (#12850)
* ko: Update localization guide about instruction-type content (#12877)
Co-authored-by: June Yi <june.yi@samsung.com>
Co-authored-by: Claudia J.Kang <claudiajkang@gmail.com>
Co-authored-by: Seokho <shsongist@gmail.com>
Co-authored-by: Kim Young Dae <38598117+zer0big@users.noreply.github.com>
* Translate architecture concepts in French
* Update content/fr/docs/concepts/architecture/nodes.md
Co-Authored-By: sieben <remy.leone@gmail.com>
* Update content/fr/docs/concepts/architecture/nodes.md
Co-Authored-By: sieben <remy.leone@gmail.com>
* Update content/fr/docs/concepts/architecture/nodes.md
Co-Authored-By: sieben <remy.leone@gmail.com>
* Update content/fr/docs/concepts/architecture/nodes.md
Co-Authored-By: sieben <remy.leone@gmail.com>
* Translate website homepage to french
* Translate case-studies index page into french
* Translate kubeweekly block into french
* Fix translation of Kubernetes features title into french
* Fix SSH tunnel links
* Removed reference to GKE, which seemed to prompt the initial removal.
* Fixed the link to refer back to the correct paragraph now that it exists again.
* Noted deprecation of SSH tunnels but work to create a replacement.
Fix#8262
This reverts commit 1da65603af.
This reverts commit b8b71b6845.
* Update master-node-communication.md
Tidy up protocol support to show that TCP and UDP have support in
stable, whereas SCTP support is in alpha. For HTTP, direct users to
read up on Ingress instead.
* bluemix.net links are deprecated and no longer updated
* updated to new cloud.ibm.com link style
* also the product name is IBM Cloud Kubernetes Service, not Armada
* follow on to PR #12792
* Use feature-state note for CRI
* Note applicability to Linux hosts
* Explain cgroup ("control group")
* De-emphasize cgroup details
The individual runtime install steps already take account of this
advice.
* Fix bug about kubeadm upgrading
It will lead to the following error if using `yum upgrade -y kubeadm --disableexcludes=kubernetes` command:
<https://serverfault.com/questions/943696/fatal-unexpected-error-when-reading-kubeadm-config-configmap-clusterconfigurat>
Running `yum upgrade -y kubeadm --disableexcludes=kubernetes` command will upgrade the kubeadm to v1.13 but kubeadm v1.13 could not upgrade the v1.12 kubeadm cluster.
* Update kubeadm-upgrade-1-12.md
* Update kubeadm-upgrade-1-12.md
* Update kubeadm-upgrade-1-12.md
* add --csr-only option
The flag `--use-csr` is no longer available as of 1.13 on. Got replaced by `--csr-only`.
* replace deprecated kubeadm cert renewal flag
* Revising bluemix.net links to cloud.ibm.com
* bluemix.net links are deprecated and no longer updated
* updated to new cloud.ibm.com link style
* Removing blog content
* ko: Update outdated files in dev-1.13-ko.6 (#12456)
* Translate concepts/containers/runtime-class.md in Korean (#12459)
* Fix ko translation consistency for commandlinetool word (#12626)
* Added Korean localization guide (#12597)
* Translate containers/images.md in Korean (#12549)
* Translate container-lifecycle-hooks.md in Korean (#12534)
* Translate tasks/run-application/horizontal-pod-autoscale in Korean (#12565)
* Translate concepts/architecture/cloud-controller in Korean #11964 (#12483)
* ko-trans: add setup/certificate.md #12453 (#12520)
Co-authored-by: Claudia J.Kang <claudiajkang@gmail.com>
Co-authored-by: June Yi <june.yi@samsung.com>
Co-authored-by: Seokho <shsongist@gmail.com>
Co-authored-by: Jesang Myung <jesang.myung@gmail.com>
Co-authored-by: Kim Young Dae <38598117+zer0big@users.noreply.github.com>
Co-authored-by: Yoon <learder@gmail.com>
* Create ingress-minikube.md
* Update ingress.md
* Move Ingress controllers content to own page
* Link to Set up Ingress on Minikube with the NGINX Controller task
* Minor edits
* Create ingress-controllers.md
* Update ingress-controllers.md
* Add Pod Disruption Budget to Glossary
* Update content/en/docs/reference/glossary/pod-disruption-budget.md
Cross referenced Pod term
Co-Authored-By: McCoyAle <mccoyale@gmail.com>
* Update pod-disruption-budget.md
* Add cross-namespace service account example, clarify binding wording
* Add create role and create clusterrole help
* Add reconcile documentation
* Document roleRef restrictions
- Use “Job” to mean the Kubernetes object
- Use “job” where capitalization hinders readability
- Use “task”, or other synonymous concepts, to avoid confusion
- Use “Pod” to mean the Kubernetes object
- Use “pod” where capitalization hinders readability
- Use “container” in lowercase everywhere
Also:
- Clarify work queue example for Job controller
- Fix advice on running Job example
- Tweak emphasis
* Use glossary terms when explaining Secret concept
* Tidy up advice on keeping Secrets secret
* Reformat note on how Secrets are displayed
* Use mebibytes
* Update network doc for ip-per-pod reqs
As per SIG-Network discussion, we can relax the requirement for all
nodes to be able to reach all pods on those platforms that do not
support hostNetwork.
The current thinking on Windows support is that hostNetwork is not a
requirement for Window users. As such, satisfying the old requirement
is very difficult and has no practical benefit.
This DOES NOT change the requirements for platforms that support
hostNetwork (e.g. Linux) nor does it make hostNetwork optional for Linux
nodes.
This PR also removes most comparisons to Docker, as they are stale and
no longer germane, and cleans up some of the text.
* Feedback on contents
* setup/cri: add a section about cgroup drivers
A cgroup driver is an important setting for the CRI and the kubelet.
Add a section that explains why "systemd" is the suggested value
for a driver when installing a CRI.
In the case of Docker the kubelet will receive this value automatically.
For the other CRIs, the users should tackle this manually.
* Update cri.md
* Update building-from-source.md
Update the page to be consistent with the concepts template.
* Update building-from-source.md
Update the page to be consistent with the concepts template.
It looks like `nginx -s quit` returns immediately rather than blocking until nginx has finished gracefully shutting down. As a result, just running `nginx -s quit` in the preStop hook won't work very well for high load and/or long running requests; nginx will get a TERM signal (and do a hard shutdown) immediately after `nginx -s quit` returns.
(I was getting connection errors while terminating pods, and adding a sleep-until-done to the preStop hook seemed to make them go away.)
* Add service path to CRD webhook conversion example
* Update wording in CRD conversion example to indicate it is serving traffic
Co-Authored-By: nrfox <nickfox25@gmail.com>
The changes are in line with one of the request for documentation update as per PR #55807 wherein it was observed that the preStop hook is not commissioned when the container is already in the terminated or completed state.
Braces removed as per the review comment. Multiple commits squashed
Braces removed as per the review comment
Update as per review, removed etc... and the statement is now cleaner
* Disruptions: make clearer not all voluntary disruptions are constrained by PDBs
Currently, there's confusion on whether all voluntary disruptions are constrained by PDBs.
For example, see the three comments [here](https://github.com/kubernetes/kubernetes/issues/39824#issuecomment-436322189).
* Update content/en/docs/concepts/workloads/pods/disruptions.md
Co-Authored-By: davidxia <davidxia@users.noreply.github.com>
* Update content/en/docs/concepts/workloads/pods/disruptions.md
Co-Authored-By: davidxia <davidxia@users.noreply.github.com>
* Update disruptions.md
* Alias for kubectl with completion.
Use a shorthand alias for `kubectl` that also works with completion. Using completion is great but typing `kubectl` each time is annoying.
* Update content/en/docs/reference/kubectl/cheatsheet.md
Co-Authored-By: jogy <johann@gyger.name>
* Update AKS mitigation link
Updated to include link to AKS documentation on mitigation.
* Updated Microsoft Recommendation
Updated with suggested changes
Rev Substitute en.toml for pedefined english shortcodes
Remove prefix Substitute en.toml for pedefined english shortcodes
Rev minor Substitute en.toml for pedefined english shortcodes
Address the issue raised in
https://github.com/kubernetes/kubernetes/issues/73808, where it became
clear it would be helpful for there to be a reminder for the user that
they are responsible for managing the StatefulSet which provides DNS
names for the pods in a StatefulSet.
Cleaned up the section __Revision History Limit__ to reflect the default value of `.spec.revisionHistoryLimit` being 10, instead of saying "All old ReplicaSets will be kept by default"
* Adding proposed blog post for building-a-kubernetes-edge-control-plane-for-envoy-v2
* Update article with improvements and author list
* Update and rename building-a-kubernetes-edge-control-plane-for-envoy-v2.md to 2019-02-11-building-a-kubernetes-edge-control-plane-for-envoy-v2.md
* Add extra coverage about use of Golang in Ambassador 0.50
* Minor typo fixes
* Minor typo fix, and merge fix with date
* Update 2019-02-11-building-a-kubernetes-edge-control-plane-for-envoy-v2.md
* Delete building-a-kubernetes-edge-control-plane-for-envoy-v2.md
* Update 2019-02-11-building-a-kubernetes-edge-control-plane-for-envoy-v2.md
* First pass on a blog post about CVE-2019-5736.
* Clarify that k8s is not the problem.
* Fix example of pinning to an image hash.
My mistake deftly caught by @zparnold.
Co-Authored-By: coderanger <noah@coderanger.net>
* Add links to the rest of the notices or releases.
* Add ways to get more info.
* RHEL link for those that don't selinux.
* Link to Rancher's back ports.
* Adding container state details in documentation
* Adding container state details to documentation
* Incorporating changes suggested in review by /ryanmcginnis
* First draft of the updates to the ReplicaSet Docs
To start with, I tried to cleanup the docs to adhere to the style guide https://kubernetes.io/docs/contribute/style/style-guide/. I then added some description of the ReplicaSet-Pod link via the owner reference field and behavior by it. I also made a clarification on the ReplicaSet demo where it was being redundant for the sake of demonstrating the different forms of usage. I consider this draft incomplete as I still lack knowledge of how the pod labels affect the behavior.
* Clearing up RC refs & explaining acquisition behavior
I'm beginning to address the cr by cleaning up references to the ReplicationController and making it clear that RCs are discouraged/old. I then expanded on the behavior of ReplicaSet in the presence of pods it can acquire but are not created directly by it.
* Mismatched link seems to have disappeared from preview
"As with all other Kubernetes API objects," etc... is present in the sibling concepts/workloads/controllers/ files, so I am hesitant to change that w/o changing the others, but I did abbreviate it.
"The `.spec.template` is the only required field of the `.spec`." is false, we also need the selector
Trying to address passive voice
Cleaned up Writing a ReplicaSet Manifest section
removed How to use a ReplicaSet section as it has redundant info from the examples and Alternatives section
Expanded examples a bit
Cleared up passive voice
* refactoring link to example yaml
* adding pod-rs test case
* Addressing Steve Perry's comments
Capitalize Pod throughout.
Link is not rendering correctly. Use () instead of [] for the path.
Ending with "for the creation" seems vague to me. Maybe this:
"...reach the desired number. When a ReplicaSet needs to create new Pods, it uses its Pod template."
Suggestion: "is via the Pod's metadata.ownerReferences field." That way the reader won't jump to the incorrect conclusion that we're talking about the ReplicaSet's metadata.ownerReferences field.
with fields, including a selector that
and plans accordingly
Our style for headings is sentence case. So this heading would be "How a ReplicaSet works".
Several headings in this topic need to be converted to sentence case.
cleaned up frontend.yaml example
added example checking the Pod's owner reference being set to it's parent ReplicaSet
* Previous commit broke Pod example links due to casing
* Forgot 1 comment
Suggestion: In the ReplicaSet, .spec.template.metadata.labels must match spec.selector, or ...
* Addressing grammar/syntax errors
* Blog post for Poseidon-Firmament Scheduler
* Fixed some typos. Fixed some formatting. Added links.
* Update and rename 2019-02-04-poseidon-firmament-scheduler-announcement.md to 2019-02-06-poseidon-firmament-scheduler-announcement.md
* Made some changes to the Key Advantages section.
Since minikube v0.33.0 the default CNI config is not being provisioned
by default (https://github.com/kubernetes/minikube/pull/3441). Therefore,
we need to pass `--enable-default-cni` when starting minikube.
There is output of `kubeadm init` in create-cluster-kubeadm page.
But it is little old.
Some processes aren't included in it.
This update `kubeadm init` output to latest.
Since Kubernetes 1.10, the only supported CRI version is v1alpha2. However,
rktlet does not support that version and development seems stopped.
As there is no way to use rktlet with k8s >= 1.10, it's best to just remove
the rkt link from the "Install runtime" section of "Install kubeadm".
Signed-off-by: Rostislav M. Georgiev <rostislavg@vmware.com>
* kubeadm: add a caution about certs in HA document
* Update content/en/docs/setup/independent/high-availability.md
Co-Authored-By: neolit123 <neolit123@gmail.com>
If there is a combination of `systemctl` commands where in one you are
enabling it and in another you are starting it, that can be done in one
single command with an additional flag called `--now`. This commit
changes those two command steps in docs to one command.
The help of systemctl shows the following explanation of `--now`:
```
Start or stop unit in addition to enabling or disabling it
```
Signed-off-by: Suraj Deshmukh <surajd.service@gmail.com>
* Add `jsonpath` approach for apiserver query
* Refine the wording with the approach description
* Refine the command log
* Move the itemized number back
Added VMware Cloud PKS and Cloud Foundry Container Runtime to places within the document that are correctly represented for Cloud and on-primises offerings and tooling. I also properly alphabetized the list.
Signed-off-by: Kendrick Coleman <kendrickc@vmware.com>
The "Assigning Pods to Nodes" page did not mention nodeName, which, if
specified, takes priority over the methods discussed in the page. Add
description of nodeName and an example using it.
Address reviewer comments from @bsalamat and @liggitt, thanks!
* Fix docs home subnav link name
* change linkTitle to Home
* accept fix from master
* refactor docs home template
* bump
* test
* switch layout to basic
* swap in cards
* test card css
* add launch-cards and launch-card classes
* swap in content
* use different layout name to not affect user journeys
* revert file naming
* revert docsportal.html
* remove main, add kubeadm link
* documentation -> docs
* change kubeadm link
* Updated pick-right-solution.md with Docker Enterprise
Added Docker commercial and community products to the list of solutions for running Kubernetes including Docker Desktop and Docker Enterprise.
* Fix Docker Desktop entry in pick-right-solution.md
The words "Docker Desktop" was duplicated in the description under locally-hosted solutions.
* Updated pick-right-solution.md with Docker solutions
Added line wraps at 80 characters and changed containerizing to "deploying in containers" to make it more new-user friendly.
* Updated pick-right-solution.md
modified wrapping of first line to not break hyphenated word.
* Official documentation on Poseidon/Firmament, a new multi-scheduler support for K8S. (#11752)
* Added documentation about Poseidon-Firmament scheduler
* Fixed some style issues.
* Udpated the document as per the review comments.
* Fixed some typos and updated the document
* Updated the document as per the review comments.
* Updated the document as per review comments. Added config details.
* Updated the document as per the latest review comments. Fixed nits
* Made changes as per latest suggestions.
* Some more changes added.
* Updated as per suggestions.
* Changed the release process section.
* SIG Docs edits
Small edits to match style guidelines.
* add plus to feature state
* capitalization
* revert feature state shortcode
since this is a Kubernetes extension, not a direct feature, it shouldn't use the regular feature state tagging.
"Planet Scale" means a global scale which "全球规模" will be better for this description in chinese. "Designed on the same principles that allows Google to run billions of containers a week" to "基于允许 Google 每周运行数十亿个容器的原则进行设计", it's more natural in chinese.
* ko-trans: Fix broken page index for concepts/overview (#11533)
* ko-trans: Update outdated files in dev-1.13-ko.4 (#11544)
* 1. Translate naturally (#11759)
2. Fix markdown error
* ko-trans: Translate building-from-source.md (#11893)
* ko-trans: Translate building-from-source.md
* Address comments
* Update etcd.md (#11976)
* ko-trans: Translate ko/_index.html into Korean (#11937)
* ko-trans: Translate ko/_index.html into Korean.
* Reflect a translation comment. Translate ko/_index.html into Korean
* ko-trans: Translate online-training/overview.md (#11932)
* ko-trans: Translate node-conformance.md (#11907)
* ko-trans: Translate node-conformance.md
* Replace 명세 with 매니페스트.
* Address comments
* ko-trans: Translate tutorials/configuration (#11933)
* ko-trans: Translate `tutorials/configuration` directory
* Address comments
* ko-trans: content/ko/docs/reference/glossary/controller.md (#11994)
* ko-trans: Controller
ko-trans: Controller
* the feedback applied.
the feedback applied.
* minor edit
minor edit
* minor edit #2
minor edit #2
* ko-trans: reference/glossary/kube-apiserver.md (#12024)
ko-trans: reference/glossary/kube-apiserver.md
* Translate tutorials/stateless-application/ in Korean (#12008)
* Translate tutorials/stateless-application/ in Korean
* Apply comments
* Fix deployment related typos
* Translate content/ko/docs/concepts/architecture/nodes in Korean #11748 (#11850)
* Translate content/ko/docs/concepts/architecture/nodes in Korean #11748
* Translate content/ko/docs/concepts/architecture/nodes in Korean #11748
* Translate content/ko/docs/concepts/architecture/nodes in Korean #11748
* Translate concepts/workloads/pods/pod-lifecycle in Korean (#12054)
* Translate concepts/workloads/pods/pod-lifecycle in Korean
* apply review ko-translate concepts/.../pod-lifecycle
* ko-trans: kube-controller-manager.md (#12077)
ko-trans: docs/reference/glossary/kube-controller-manager.md
* fix Italic syntax markdown error (#12128)
* Translate tasks/_index.md in Korean (#12126)
* Translate tasks/_index.md in Korean
* Apply review for Translate tasks/_index.md in Korean
Apply comments for Translate tasks/_index.md in Korean
* Translate setup/_index.md in Korean (#12067)
* Translate setup/_index.md in Korean
* Update setup/_index.md for Korean term consistency
* ko-trans: docs/setup/custom-cloud/kops.md (#11904)
* ko-trans: concepts/overview/working-with-objects/names (#11758)
* ko-trans: /docs/concepts/overview/working-with-objects/namespaces.md (#11773)
* Translate setup/cri.md in Korean (#12174)
* Translate setup/cri.md in Korean
* Apply review, Translate setup/cri.md in Korean
* Translate tasks/tools/install-minikube in Korean (#12176)
* Translate tasks/tools/install-minikube in Korean
* Apply review,Trans tasks/tools/install-minikube in KO
* Update Hugo version and apply HTML minification to production builds
* Use full flag names for clarity
* Remove Hugo installation logic out of Travis config and into Makefile
* Add Hugo version checking script
* Fix Netlify config version
According to `content/en/docs/reference/access-authn-authz/bootstrap-tokens.md` bootstrap tokens are in state `beta` but here it's still listed as `alpha`
* Update assign-pod-node.md
Use `kubectl get nodes --show-labels` to show the labels will not show the compelte labels like this:
```
root@master:/home# kubectl get nodes --show-labels
NAME STATUS ROLES AGE VERSION LABELS
master Ready master 41h v1.13.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=master,node-role.kubernetes.io/master=
server01 Ready <none> 41h v1.13.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,func=database,kubernetes.io/hostname=moon-server01
```
and the command `kubectl describe node "nodename" ` will show all labels the node have.
* Update assign-pod-node.md
* Update assign-pod-node.md
add a space before the new sentence
* adding feature state snip
Adding in the feature state to indicate when this feature was introduced.
* adding in "stable"
Didn't know it defaulted to alpha.
* Updated a link
The section was directing to Kubernetes Objects for more information about the Kubernetes APIs. I updated the link so it directs to the Kubernetes API page.
* Added a missing / to the link.
* Updated as per the comment.
The LimitedResource type has the field "MatchScopes" as a sibling to
the field "Resource," but the YAML document in the example showed the
"MatchScopes" field as a child of the top-level Configuration
type. Correct the example to match the actual schema.
While we're here, swap the order of the "scopeName" and "operator"
fields used in the YAML, to make it clearer in infix style that the
operator binds the scope name to a (possibly empty) set of values.
* Update storage-classes.md
Fixed the formatting issues that were incorrectly showing the variables as hyperlink texts that resulted in 404 errors
* Update storage-classes.md
Incorporated the changes
* Update storage-classes.md
removed the </strong tag that was not required.
* Update storage-classes.md
replaced <em> with `.
Alongwith the kubelet flag you can also use the `KubeletConfiguration`'s
`staticPodPath` to specify the path to pick up the static pod configs.
Signed-off-by: Suraj Deshmukh <surajd.service@gmail.com>
* [WIP] Add template for tool reference docs
- provide a template for generating tool reference docs.
- use in reference-docs/gen-compdocs/generators to create
consist looking markdown files for the tools.
* Fix lines
* remove test page
* Removed redundant sentence.
The intro line was repeated twice. Therefore, removed the one under the Synopsis section.
Updated the command from " " to ` ` based on the style guide.
* Updated master to control plane.
* patch-reset
We should reset IPVS tables do so manually when reset kubernetes cluster by kubeadm.
* Modify reset ipvs description
* Update create-cluster-kubeadm.md
- use "control plane" instead of "master".
- upgrade a kubelet on the CP node only after the CP was upgraded.
- also instruct the user to update to the latest patch version of 1.13.
* Add Minikube latest version shortcode and update installation doc
* Rework Minikube install instructions and remove unnecessary shortcode
* Re-add the --ignoreCache flag to make serve
I removed the instruction regarding the installation of docker (1.13.1) as listed in #11779 and updated the instructions for Docker CE (1.18.1) because the official Docker documents only have instructions for Docker CE and Docker EE as listed in https://github.com/docker/docker.github.io/blob/master/install/linux/docker-ce/ubuntu.md. It may not be a good idea to have instructions for Docker 1.13 in our documents considering that the Official Docker Install guide recommends uninstalling older versions.
* Add note about need for lxd init
As a first time user, I got a little lost, doing google searches for how to get lxd basically functional on my box.
There were a lot of hand edits and tweaks suggested on various pages, until I discovered that all I had to do is run "lxd init" and follow the prompts.
* Update local.md
I was at Kubecon last week, and a few times I encountered people who did not know that k8s == Kubernetes. Therefore, we should mention this abbreviation on the front page.
* Remove old kube-dns note
* ExternalName IP clarification
* Add minor edits for clarity
* corrections
Co-Authored-By: nikopen <42466421+nikopen@users.noreply.github.com>
* cAdvisor web UI port has been deprecated since v1.10. This patch update the description about it.
* Update resource-usage-monitoring.md
* Update resource-usage-monitoring.md
* Remove odd closing link bracket
In cases were you don't have hash in the links, it's breaking the link
See Also: #10775
* Move brckets from the wrong location
See Also: #10775
* OpenContrail -> Tungsten Fabric
OpenContrail has joined the Linux Foundation Networking Fund and rebranded as Tungsten Fabric to better reflect its open community engagement separate from its Juniper Network roots.
This edit updates the doc to reflect the name change and that Tungsten Fabric is a separate entity from Juniper's Contrail product.
* Include TF in the header
To further reinforce that Contrail and TF are different things.
"run" is deprecated and "create deployment" is preferred
so the english doc was updated in #11392
this pr reflects that change in the korean translation
* Blog post about Shanghai NCW. Submitting for website.
* Update 2018-12-05-new-contributor-shanghai.md
* Update 2018-12-05-new-contributor-shanghai.md
* Added required image credit to NCW Shanghai blog post, since image info doesn't display in the actual blog.
* Blog post about Shanghai NCW. Submitting for website.
* Update 2018-12-05-new-contributor-shanghai.md
* Update 2018-12-05-new-contributor-shanghai.md
* kubeadm GA blog post
* Change file name and add post metadata
* Update CSS for blog post tables
* More formatting and wording changes
* Change build process to allow for displaying future blog posts
* Add links to command documentation
* Change blog post date and address PR feedback
* More wording updates
* 1.13 blog post
* Update and rename 2018-12-03-kubernetes-1-13-release.md to 2018-12-03-kubernetes-1-13-release-announcement.md
* Update 2018-12-03-kubernetes-1-13-release-announcement.md
* Delete 2018-11-07-grpc-load-balancing-with-linkerd.md
* Update metadata.generation behaviour for custom resources (#10705)
* update docs promoting plugins to beta (#10796)
* docs update to promote TaintBasedEvictions to beta (#10765)
* First Korean l10n work for dev-1.13 (#10719)
* Update outdated l10n(ko) contents (#10689)
fixes#10686
* Translate concepts/overview/what-is-kubernetes in Korean (#10690)
* Translate concepts/overview/what-is-kubernetes in Korean
* Feedback from ClaudiaJKang
* Translate concepts/overview/components in Korean (#10882)
* Translate concepts/overview/components in Korean #10717
* Translate concepts/overview/components in Korean
* Translate concepts/overview/components in Korean
* Apply Korean glossary: 서비스 어카운트
* Translate concepts/overview/kubernetes-api in Korean (#10773)
* Translate concepts/overview/kubernetes-api in Korean
* Applied feedback from ianychoi
* kubeadm: update the configuration docs to v1beta1 (#10959)
* kubeadm: add small v1beta1 related updates (#10988)
* ADD content/zh/docs/reference/setup-tools/kubeadm/kubeadm.md (#11031)
* ADD content/zh/docs/reference/setup-tools/kubeadm/kubeadm.md
* ADD content/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_init.md
* Update content/zh/docs/reference/setup-tools/kubeadm/kubeadm.md
Accepted
Co-Authored-By: YouthLab <tsui@highyouth.com>
* do not change 'master' or 'worker' nodes to '主从'
* Doc updates for volume scheduling GA (#10743)
* Doc updates for volume scheduling GA
* Make trivial change to kick build
* Document nodelease feature (#10699)
* advanced audit doc for ModeBlockingStrict (#10203)
* Rename EncryptionConfig to EncryptionConfiguration (#11080)
EncryptionConfig was renamed to EncryptedConfiguration and added to
the `apiserver.config.k8s.io` API group in Kubernetes 1.13.
The feature was previously in alpha and was not handling versions
properly, which lead to an originally unnoticed `v1` in the docs.
* content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init.md
* trsanlate create-cluster-kubeadm.md to chinese (#11041)
* trsanlate create-cluster-kubeadm.md to chinese
* Update create-cluster-kubeadm.md
* update the feature stage in v1.13 (#11307)
* update new feature gates to document (#11295)
* refresh controller role list on rbac description page (#11290)
* node labeling restriction docs (#10944)
* Update 1.13 docs for CSI GA (#10893)
* dynamic audit documentation (#9947)
* adds dynamic audit documentation
* Copyedit for clarity
See also inline question/s
* Fix feature state shortcode
* Update feature state
* changes wording for dynamic audit flag behavior
* Minor copyedit
* fix dynamic audit yaml
* adds api enablement command to dynamic audit docs
* change ordering dynamic audit appears in
* add references to dynamic audit in webhook backend
* reword dynamic audit reference
* updates stages field for audit sink object
* changes audit sink api definition; rewords policy
* kubeadm: remove kube-proxy workaround (#11162)
* zh-trans content/en/docs/setup/independent/install-kubeadm.md (#11338)
* zh-trans content/en/docs/setup/independent/install-kubeadm.md
* Update install-kubeadm.md
* Update dry run feature to beta (#11140)
* vSphere volume raw block support doc update (#10932)
* Add docs for Windows DNS configurations (#10036)
* Update docs for fields allowed at root of CRD schema (#9973)
* Add docs for Windows DNS configurations
* add device monitoring documentation (#9945)
* kubeadm: adds upgrade instructions for 1.13 (#11138)
* kubeadm: adds upgrade instructions for 1.13
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* add minor copyedits
Addressed a couple of copyedit comments a bit more cleanly.
* kubeadm: add improvements to HA docs (#11094)
* kubeadm: add information and diagrams for HA topologies
* kubeadm: update HA doc with simplified steps
* kubeadm: update HA doc with simplified steps
* edit ha, add new topology topic, reorder by weight
* troubleshoot markdown
* fix more markdown, fix links
* more markdown
* more markdown
* more markdown
* changes after reviewer comments
* add steps about Weave
* update note about stacked topology
* kubeadm external etcd HA upgrade 1.13 (#11364)
* kubeadm external etcd HA upgrade 1.13
Signed-off-by: Ruben Orduz <rubenoz@gmail.com>
* Update stacked controlplane steps
* kubeadm cert documentation (#11093)
* kubeadm certificate API and CSR documentation
* copyedits
* fix typo
* PR for diff docs (#10789)
* Empty commit against dev-1.13 for diff documentation
* Complete Declarative maangement with diff commands
* Second Korean l10n work for dev-1.13. (#11030)
* Update outdated l10n(ko) contents (#10915)
* Translate main menu for l10n(ko) docs (#10916)
* Translate tasks/run-application/horizontal-pod-autoscale-walkthrough (#10980)
* Translate content/ko/docs/concepts/overview/working-with-objects/kubernetes-object in Korean #11104 (#11332)
* Pick-right-solution page translates into Korean. (#11340)
* ko-trans: add jd/..., sap/..., ebay/..., homeoffice/... (#11336)
* Translate concept/workloads/pods/pod-overview.md (#11092)
Co-authored-by: June Yi <june.yi@samsung.com>
Co-authored-by: Jesang Myung <jesang.myung@gmail.com>
Co-authored-by: zerobig <38598117+zer0big@users.noreply.github.com>
Co-authored-by: Claudia J.Kang <claudiajkang@gmail.com>
Co-authored-by: lIuDuI <1693291525@qq.com>
Co-authored-by: Woojin Na(Eddie) <cheapluv@gmail.com>
* Rename encryption-at-rest related objects (#11059)
EncryptionConfig was renamed to EncryptedConfiguration and added to
the `apiserver.config.k8s.io` API group in Kubernetes 1.13.
The feature was previously in alpha and was not handling versions
properly, which lead to an originally unnoticed `v1` in the docs.
Also, the `--experimental-encryption-provider-config` flag is now called
just `--encryption-provider-config`.
* Documenting FlexVolume Resize alpha feature. (#10097)
* CR webhook conversion documentation (#10986)
* CR Conversion
* Addressing comments
* Addressing more comments
* Addressing even more comments
* Addressing even^2 more comments
* Remove references to etcd2 in v1.13 since support has been removed (#11414)
* Remove etcd2 references as etcd2 is deprecated
Link back to the v1.12 version of the etcd3 doc for
the etcd2->etcd3 migration instructions.
I updated the kube-apiserver reference manually,
unsure if that is auto-generated somehow.
The federation-apiserver can still potentially
support etcd2 so I didn't touch that.
* Remove outdated {master,node}.yaml files
There are master/node yaml files that reference
etcd2.service that are likely highly out of date.
I couldn't find any docs that actually reference
these templates so I removed them
* Address review comments
* Final Korean l10n work for dev-1.13 (#11440)
* Update outdated l10n(ko) contents (#11425)
fixes#11424
* Remove references to etcd2 in content/ko (#11416)
* Resolve conflicts against master for /ko contents (#11438)
* Fix unopened caution shortcode
* kubeadm: update the reference docs for 1.13 (#10960)
* docs update to promote TaintBasedEvictions to beta (#10765)
* First Korean l10n work for dev-1.13 (#10719)
* Update outdated l10n(ko) contents (#10689)
fixes#10686
* Translate concepts/overview/what-is-kubernetes in Korean (#10690)
* Translate concepts/overview/what-is-kubernetes in Korean
* Feedback from ClaudiaJKang
* Translate concepts/overview/components in Korean (#10882)
* Translate concepts/overview/components in Korean #10717
* Translate concepts/overview/components in Korean
* Translate concepts/overview/components in Korean
* Apply Korean glossary: 서비스 어카운트
* Translate concepts/overview/kubernetes-api in Korean (#10773)
* Translate concepts/overview/kubernetes-api in Korean
* Applied feedback from ianychoi
* kubeadm: update the configuration docs to v1beta1 (#10959)
* kubeadm: add small v1beta1 related updates (#10988)
* update new feature gates to document (#11295)
* Update dry run feature to beta (#11140)
* kubeadm: add improvements to HA docs (#11094)
* kubeadm: add information and diagrams for HA topologies
* kubeadm: update HA doc with simplified steps
* kubeadm: update HA doc with simplified steps
* edit ha, add new topology topic, reorder by weight
* troubleshoot markdown
* fix more markdown, fix links
* more markdown
* more markdown
* more markdown
* changes after reviewer comments
* add steps about Weave
* update note about stacked topology
* kubeadm: update reference docs
- add section about working with phases under kubeadm-init.md
- update GA / beta status of features
- kubeadm alpha phase was moved to kubeadm init phase
- new commands were added under kubeadm alpha
- included new CoreDNS usage examples
* Generate components and tools reference
* Add generated federation API Reference (#11491)
* Add generated federation API Reference
* Add front matter to federation reference
* Remove whitespace from federation front matter
* Remove more whitespace from federation front matter
* Remove superfluous kubefed reference
* Add frontmatter to generated kubefed reference
* Fix kubefed reference page frontmatter
* Generate kubectl reference docs 1.13 (#11487)
* Generate kubectl reference docs 1.13
* Fix links in kubectl reference
* Add 1.13 API reference (#11489)
* Update config.toml (#11486)
* Update config.toml
Preparing for 1.13 release, updating the config.toml and dropping the 1.8 docs reference.
* update dot releases and docsbranch typo
* adding .Site. to Params.currentUrl (#11503)
see https://github.com/kubernetes/website/pull/11502 for context
* Add 1.13 Release notes (#11499)
Minor updates to the comment of:
// List all pods in plain-text output format and include additional information (such as node name).
$ kubectl get pods -o wide
* Blog Issue triage
SIG-Docs decided that we only maintain blog entires <1 year in age. Updating our triage guidelines to reflect this.
* Fix typo, link markup, two misplaced modifiers
In this Document Encrypting Secret data at REST, the example to verify
decrypt secret is bit confusing, on running
$ kubectl describe secret secret1 -n default
"should match mykey: mydata" never match because data is enoded,
This commit redirects it to decoding the secret
The current YAML doesn't work since hugepages requires you to include memory and/or CPU limits as well, or you get the error: "HugePages require cpu or memory".
* add examples using "rollout"
since "rolling-update" is deprecated, add example using "rollout"
* better deprecation reference
Referenced version where `rolling-update` was deprecated
Separated `rollout` example into it's own block
* update ol ul li bullet to disc
- update ol ul li bullet to disc
- move note out of list so that list numbers are correct
- fix typo
* futher clean-up
As reported by issue #8953, we currently cannot properly handle dots in
the file name for blogs. These dots are causing problems in links for
many pages. This PR renames the blog entries to remove dots in file
names.
Closes: #8953
* rewrite of ingress
- reset and rewritten to provide more clarity and directness on what
ingress is and does.
* cleanup from review
- also normalized Ingress -> ingress through-out
* update documentation on CoreDNS
* Update dns-custom-nameservers.md
Fixed nit noted in comments and cleaned up a few more things while I was in there. This whole topic needs a complete redo, but this PR is an iterative improvment. Thanks!
* Added documentation about stringData
I've added some documentation about the stringData field, including a simple example showing how it can be used.
* fixup! Added documentation about stringData
* fixup! Added documentation about stringData
- Added a missing full stop.
- Separated the details on the --type flag under the respective section.
- Linked to the page on setting up Minikube locally.
- Introduced the VM abbreviation when used for the first time on the page.
In AWS cloud platform, omitting the name while initializing etcd cluster
causes "Couldn't find local name "$HOSTNAME in the initial cluster configuration"
It seems that the etcd tries to find short hostname, not the FQDN hostname.
To avoid this, passing the name explicitly to etcd configuration solved the problem.
[related issue1](https://github.com/coreos/bugs/issues/2054)
[related issue2](https://github.com/kubernetes/kubeadm/issues/653)
- The intro section had repeated text on visiting the community page. Refactored this content.
- Minor changes to content.
- Added links to Slack and the SIG docs mailing list.
* Copy-edit based on the style guide
Made the following changes:
- Used present tense.
- Removed latin phrases
- {{< tab name=“Content File #1” include=“example1” />}} was not shown as code. Updated it.
- Copy-edited the description for include under Tabs.
* Updated the text based on the comments
When starting minikube with
`--extra-config=apiserver.Authorization.Mode=RBAC`, the apiserver
container exits with the following error:
```
error: unknown flag: --Authorization.Mode
```
Starting it with `--extra-config=apiserver.authorization-mode=RBAC`
instead fixes the issue.
The first step of [1], kubeadm is necessary to be upgraded because we
need to run kubeadm upgrade plan. Then, the line shows `upgrade kubeadm:`.
However, the commandline contains kubelet also. That seens copy&paste
mistake and unnecessary. This removes it.
In addition, the format of another tab is broken. This fixes it also by
naming another tab.
[1]: https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-12/#upgrade-the-control-plane
The current document had a minor issue: " Ask for sponsorship in the #sig-docs channel on the Kubernetes Slack instance](https://kubernetes.slack.com) "
I am assuming you wanted to link #sig-docs channel on the Kubernetes Slack instance to https://kubernetes.slack.com. Therefore, corrected it.
* Add Chinese language alternatives setting
* Add timestamp format (`YYYY-MM-DD`) for the blog
Add comment for lang alternative config
* Remove comments
We receive a lot of customer queries around HPA not communicating with metrics-server where the core issue is that metrics-server is not installed. Feedback has been that this wasn't explicitly clear, suggesting this change in wording to assist.
* Add blog post for l10n update
Minor tweaks
More minor tweakS
Still more tweaks
Yet more tweaks
typo fix
Add link to Shanghai KC+CNC
Change date to 8 Nov
* Update 2018-11-08-kubernetes-docs-update-i18n.md
* Update 2018-11-08-kubernetes-docs-update-i18n.md
* Added feature-gates deprecation guidelines and policy as per discussion: SIG-architecture meeting
* Update deprecation-policy.md
Fixes and initial feedback incorporated.
* Removed unneeded sentence
Removed complicated sentence that is better phrased one sentence later.
* Incorporated feedback - Sept 22nd.
Re-structured following key ideas from the feedback.
* Fixed nits 7th October
Fixed nits 7th October
* Incorporated feedback Oct 25th
Incorporated 'invocation triggers warning' and what to do when disabling a no-op.
* fixed "tide"
Announced for completed
* Incorporated feedback from sig docs
* add grpc load balancing with linkerd blog post
* remove date from filenames
I can follow instructions.
* update links with new date-less paths
* Update grpc-load-balancing-with-linkerd.md
* Update HAProxy ingress line
HAProxy Technologies offers support for the free available haproxy ingress controller
* Updated the haproxy wording from feedback
Updated the haproxy wording from feedback of @tengqm
* Remove doc artefacts
* Revert "Update tutorial to work with Katacoda, No Install (#10797)"
This reverts commit a0b97a3e5d.
* Revert "clean-up minikube toc (#10873)"
This reverts commit 18343eb44b.
* Revert "Tutorial cleanup: Delete K8s 101 and 201 (#10786)"
This reverts commit e0168fd8dc.
* Revert "fix word err in Disruption (#10884)"
This reverts commit d01b76d080.
* Revert "Fix typo (#10877)"
This reverts commit 15518689c7.
* Revert "add note informing users of env var updates (#10819)"
This reverts commit 795de19c07.
* Revert "Fix typo in word repositories (#10883)"
This reverts commit 6d7f27ea45.
* Revert "Add i18n strings for Korean translation (#10611)"
This reverts commit a9d8c54e6d.
* Revert "Modified into appropriate words (#10768)"
This reverts commit 7ebdd661d7.
* Revert "Update tools.md (#10753)"
This reverts commit 2d8bc158a2.
* Revert "Enable reviews/approvers for localized site strings (#10811)"
This reverts commit 81b2562f77.
* clean-up minikube toc
- clean-up minikube toc
- clean-up localkube link
* update sub-headers
* added link to kubeadm
- added link to kubeadm
- clean-up link to kubectl config set-context
* Code style not working on kubernetes.io
Code style based on tab works on github markdown, but it is not working on kubernetes.io. In addition to that, `<your-pv-name>` argument on line 50 is hidden on kubernetes.io, because it is being processed as a HTML tag.
* Update change-pv-reclaim-policy.md
Indentation fix
Language of the code specified
* Blog Post: Tips first KubeCon Presentation (Pt. 2)
Part 2 about experiences from my first KubeCon presentation. Probably delay by 1w before approving.
Pre-review and collaboration with @kbarnard10 and @parispittman.
**Note:** needs fix for the link to part 1 after the first one has been released.
First part PR here: https://github.com/kubernetes/website/pull/10509
* Update Tips-For-First-KubeCon-Presentation-Part-2.MD
* Update and rename Tips-For-First-KubeCon-Presentation-Part-2.MD to 2018-10-26-tips-for-first-kubecon-presentation-part-2.md
* fix spelling errors in content/en/docs/concepts/containers/
Signed-off-by: William Zhang <warmchang@outlook.com>
* fix spelling errors in HPA, StatefulSet, SA
Signed-off-by: William Zhang <warmchang@outlook.com>
* Updated the numbering of instructions
All of the instructions were numbered like this:
1. do something
1. then do this
1. finally, do this.
I just changed them accordingly to be 1-2-3. There was also a case typo in the `LOG_LEVEL=info` which should be `LOG_LEVEL=INFO` based on the data in the yaml file.
* Update numbered list formatting
* [WIP] test snippet fix
* more numbered list/snippet fixes
* New link about Localizing Kubernetes Documentation
This commit adds a link about Localizing Kubernetes Documentation in
README.md's Contributing to the docs section.
Fixed : #10485, #10622
Signed-off-by: Claudia J. Kang <claudiajkang@gmail.com>
* Update l10n guide about adding l10n README files.
This commit adds a link process about the l10n README files in
localization.md.
Fixed : #10485, #10622
Signed-off-by: Claudia J. Kang <claudiajkang@gmail.com>
Now that there are multiple predictable and stable upstream solutions to deploy Kubernetes, we should not express an opinion as to which one to recommend without also mentioning the reasons for it.
* Blog Post: Tips first KubeCon Presentation (Pt. 1)
Part 1 about experiences from my first KubeCon presentation.
Pre-review and collaboration with @kbarnard10 @parispittman.
* Update Tips-For-First-KubeCon-Presentation-Part-1.MD
* Update and rename Tips-For-First-KubeCon-Presentation-Part-1.MD to 2018-10-18-tips-for-first-kubecon-presentation-part-1.md
Missing the `data` label in configmap spec. Attempting to create the file as is results in:
```
error: error validating "STDIN": error validating data: ValidationError(ConfigMap): unknown field "Corefile" in io.k8s.api.core.v1.ConfigMap; if you choose to ignore these errors, turn validation off with --validate=false
```
* Use clusterIP instead of ServiceIP in graphs and documentation
Using ServiceIP instead of clusterIP in images can be confusing when
they're showing the clusterIP.
Since the SVGs are updated, the "Note" is now redundant.
* Update out-dated service diagram PNGs
The `/` steps expression is used throughout this doc but is never explained. Worse, it isn't actually part of the "normal" Cron spec linked in Wikipedia and is an extension added to vixiecron
* add Digital Rebar KRIB to installer lists
* second review, minor cleanups
* address corrections flagged by @neolit123
* resolve merge - fix table
* add Digital Rebar KRIB to installer lists
* second review, minor cleanups
* address corrections flagged by @neolit123
* Change deb repo from http to https
Given that http://apt.kubernetes.io/ is redirecting to https://packages.cloud.google.com/apt/ which is secure, then the suggestion is to change the source list to point to the correct destination.
* change apt source to https with apt.kubernetes.io
The docs say to backup, start a new application called new-etcd, but then to restore to etcd/0 and not new-etcd/0. Fixing that so it restores to that newly created unit.
* Changed CSS property for browser consistency.
* Moved height property into tablet media query to fix issue on smaller screens.
* Add changed to two more .content files.
* Updated generated resources files, this time using Hugo extended.
* Update PR template for 1.13 release
Also updates links to documentation for submitting PRs
* Update contributing docs for new branch strategy
Branches for upcoming releases are now dev-X.Y instead of
release-X.Y
* Update localization guidelines for language labels
Continuing work
Continuing work
Continuing work
More work in progress
Add local OWNERS folders
Add an OWNERS file to Chinese
Remove shortcode for repos
Add Japanese
Alphabetize languages, change weights accordingly
More updates
Add Korean in Korean
Add English to languageName
Feedback from gochist
Move Chinese content from cn/ to zh/
Move OWNERS from cn/ to zh/
Resolve merge conflicts by updating from master
Add files back in to prep for resolution
After rebase on upstream/master, remove files
Review and update localization guidelines
Feedback from gochist, tnir, cstoku
Add a trailing newline to content/ja/OWNERS
Add a trailing newline to content/zh/OWNERS
Drop requirement for GH repo project
Clarify language about forks/branches
Edits and typos
Remove a shortcode specific to a multi-repo language setup
Update aliases and owners
Add explicit OWNERS for content/en
Migrate content from Chinese repo, update regex in config.toml
Remove untranslated strings
Add trailing newline to content/en/OWNERS
Add trailing newlines to OWNERS files
add Jaguar project description (#10433)
* add Jaguar project description
[Jaguar](https://gitlab.com/sdnlab/jaguar) is an open source solution for Kubernetes's network based on OpenDaylight.
Jaguar provides overlay network using vxlan and Jaguar CNIPlugin provides one IP address per pod.
* Minor newline tweak
blog post for azure vmss (#10538)
Add microk8s to pick-right-solution.md (#10542)
* Add microk8s to pick-right-solution.md
Microk8s is a single-command installation of upstream Kubernetes on any Linux and should be included in the list of local-machine solutions.
* capitalized Istio
Add microk8s to foundational.md (#10543)
* Add microk8s to foundational.md
Adding microk8s as credible and stable alternative to get started with Kubernetes on a local machine. This is especially attractive for those not wanting to incur the overhead of running a VM for a local cluster.
* Update foundational.md
Thank you for your suggestions! LMK if this works now?
* Rewrote first paragraph
And included a bullet list of features of microk8s
* Copyedit
fix typo (#10545)
Fix the kubectl subcommands links. (#10550)
Signed-off-by: William Zhang <warmchang@outlook.com>
Fix command issue (#10515)
Signed-off-by: mooncake <xcoder@tenxcloud.com>
remove imported community files per issue 10184 (#10501)
networking.md: Markdown fix (#10498)
Fix front matter, federation command-line tools (#10500)
Clean up glossary entry (#10399)
update slack link (#10536)
typo in StatefulSet docs (#10558)
fix discription about horizontal pod autoscale (#10557)
Remove redundant symbols (#10556)
Fix issue #10520 (#10554)
Signed-off-by: William Zhang <warmchang@outlook.com>
Update api-concepts.md (#10534)
Revert "Fix command issue (#10515)"
This reverts commit c02a7fb9f9.
Update memory-constraint-namespace.md (#10530)
update memory request to 100MiB corresponding the yaml content
Blog: Introducing Volume Snapshot Alpha for Kubernetes (#10562)
* blog post for azure vmss
* snapshot blog post
Resolve merge conflicts in OWNERS*
Minor typo fix (#10567)
Not sure what's supposed to be here, proposing removing it.
* Feedback from gochist
Tweaks to feedback
* Feedback from ClaudiaJKang
* Fix broken links for older versions of kubernetes
Upgrade paths listed on this page (1.7, etc) had broken links. Referred those links to the last working copy, which was in v1.11 docs.
* Removed older links
Current manifest of flannel is old for Kubernetes v1.12 .
Deployment cluster is failed at installing pod network add-on.
This PR update flannel manifest URL.
* Add microk8s to foundational.md
Adding microk8s as credible and stable alternative to get started with Kubernetes on a local machine. This is especially attractive for those not wanting to incur the overhead of running a VM for a local cluster.
* Update foundational.md
Thank you for your suggestions! LMK if this works now?
* Rewrote first paragraph
And included a bullet list of features of microk8s
* Copyedit
* Add microk8s to pick-right-solution.md
Microk8s is a single-command installation of upstream Kubernetes on any Linux and should be included in the list of local-machine solutions.
* capitalized Istio
* add Jaguar project description
[Jaguar](https://gitlab.com/sdnlab/jaguar) is an open source solution for Kubernetes's network based on OpenDaylight.
Jaguar provides overlay network using vxlan and Jaguar CNIPlugin provides one IP address per pod.
* Minor newline tweak
added powershell equivalent for eval $(minikube docker-env), and added some text to help a beginner understand in more concrete terms the difference between the local docker registry, and the one in minikube (might only be an issue for newbs, but I am a newb :) and limited to powershell :().
* improved and updated rollout history information
* minor change, manifest.yaml > manifest
* tweaks to the change-cause section
* annotation command typo
* redundancy fix
* removing the --record flag as it may be misleading
* resolve some semantics around ABAC and RBAC
some minor tweaks for readability.
* Update abac.md
* Update abac.md
* Update abac.md
* Update abac.md
* Update abac.md
We have a redirect, so these links aren't broken, but we shouldn't
rely on the redirect - that ends up with long chains of complicated
redirects and makes validating the markdown harder.
* Capitalized "Pod" in multiple locations
This style guide states to always capitalize Pod, but in the next section it was written in lowercase in a couple places. I've capitalized them.
* Capitalized two additional instances of "Pod" as recommended by @neolit123
[Jaguar](https://gitlab.com/sdnlab/jaguar) is an open source solution for Kubernetes's network based on OpenDaylight.
Jaguar provides overlay network using vxlan and Jaguar CNIPlugin provides one IP address per pod.
StatefulSet deletion does not have any guarantees of orderly termination of pods as is suggested by the documentation. Prior to 1.11 kubectl did scale down StatefulSets before deleting them, but this went away after the removal of reapers. Ref discussion in #68627.
This change updates the documentation to reflect this.
Wording is confusing to beginners - in the sentence before, it is just being explained that containers in the same pod are indeed run on the same physical host. Hopefully this clarifies that.
Cancel the invalid hyperlink
Cancel the invalid hyperlink
Cancel the invalid hyperlink
Cancel the invalid hyperlink
Cancel the invalid hyperlink
Cancel the invalid hyperlink
The CentsOS/RHEL/... section mentiones that SELinux must be put in permissive
mode, but the supplied command does the job only for the current boot. Once
the system is restarted SELinux can again enter enforcing mode thus breaking
a Kubernetes cluster.
Fix this by adding a sed command that permanently changes the SELinux mode to
permissive.
Signed-off-by: Rostislav M. Georgiev <rostislavg@vmware.com>
GKE On-Prem | Google Cloud
https://cloud.google.com/gke-on-prem/
Containerize on-premises applications and be cloud-ready. With GKE On-Prem, you get the Google Kubernetes Engine (GKE) experience directly in your data center. ... GKE On-Prem also registers your cluster with Google Cloud Console in order to have a single-pane-of-glass view for managing all your clusters.
* Add basic header-checking function
* Add Slack notification logic
* Modify Netlify Functions setup
* Rework function logic
* Add missing dependencies
* Remove package-lock.json from Git
* Separate header checking function
* Isolate env check into a separate function
* Add new Sass generation system
* Remove resources folder
* Add develop Sass command and sourcemaps
* Add Hugo version shortcode for use in docs
* Add OWNERS file to ./sass folder
* blog: health-checking-grpc
date in the markdown and file/dir names will be updated later
Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
* Update 2018-09-30-health-checking-grpc.md
* Update and rename 2018-09-30-health-checking-grpc.md to 2018-10-01-health-checking-grpc.md
* Update 2018-10-01-health-checking-grpc.md
* Update 2018-10-01-health-checking-grpc.md
* Update docs for fields allowed at root of CRD schema (#9973)
* add plugin docs and examples (#10053)
* docs update to promote TaintNodesByCondition to beta (#9626)
* HPA Specificity Improvements (#8757)
Updated the HPA docs to reference the `autoscaling/v2beta2` API version,
and added documentation about the new fields.
* adjust docs for pod ready++ (#10049)
* Remove --cadvisor-port - has been deprecated since v1.10 (#10023)
Change-Id: Id2a685473a243aef492a98ff450759f39e362557
* Add Documentation for Snapshot Feature (#9948)
* Add documentation for snapshot feature
* Update volume-snapshots.md
* Add dry-run to api-concepts (#10033)
* kubeadm-init: Update the offline support section (#10062)
The update includes the following things (in mind with Kubernetes 1.12):
- Remove the 1.8 image versions
- Add the 1.10 image versions that were missing until now
- Include a comment for the missing arch suffixes in 1.12
Signed-off-by: Rostislav M. Georgiev <rostislavg@vmware.com>
* Say bye to `DynamicProvisioningScheduling` (#10157)
The mentioned feature gate is now collapsed into `VolumeScheduling`.
xref: kubernetes/kubernetes#67432
* Update ResourceQuota per PriorityClass state for 1.12 (#10229)
* TokenRequest and TokenRequestProjection now beta (#10161)
xref: kubernetes/kubernetes#67349
* Change feature state for kms provider to beta. (#10230)
KMS Provider will be graduating to beta in v1.12, reflecting this change on the website.
* coredns default (#10200)
* Promote ShareProcessNamespace to beta in docs (#9996)
* Add CoreDNS details to DNS Debug docs (#10201)
* add coredns details
* address nits, add query logging section
* Update docs with topology aware dynamic provisioning (#9939)
* Document topology aware volume binding feature
* update for readability
* Update storage-classes.md
* comma splice
* don't abbreviate
* HPA Algorithm Information Improvements (#9780)
* Update HPA docs with more algorithm details
The HPA docs pointed to an out-of-date document for information on the
algorithm details, which users were finding confusing. This sticks a
section on the algorithm in the HPA docs instead, documenting both
general behavior and corner cases.
* Add glossary info, HPA docs on quantities
People often ask about the quantity notation when working with the
metrics APIs, so this adds a glossary entry on quantities (since they're
used elsewhere in the system), and a short explantation in the HPA walkthough.
* Information about HPA readiness and stabilization
This adds information about the new changes to HPA readiness and
stabilization from kubernetes/features#591, and other minor changes that
landed in Kubernetes 1.12.
* Update horizontal-pod-autoscale.md
* Audit 1.12 doc (#9953)
* audit 1.12 document
* remove legacy audit feature
https://github.com/kubernetes/kubernetes/pull/65862
* update feature gate doc
* MountPropagation is now GA (#10090)
* RuntimeClass documentation (#10102)
* RuntimeClass documentation
* Update runtime-class.md
* Add documentation for Scheduler performance tuning (#10048)
* Add documentation for Scheduler performance tuning
* Update scheduler-perf-tuning.md
* TTL controller for cleaning up finished resources (#10064)
* TTL controller for cleaning up finished resources
* Address comments
* Update ttlafterfinished.md
* Bump quota configuration api version (#10217)
* Incremental update from master (#10278)
* fix invalid href of cloud controller manager (#10240)
* fix invalid yaml format (#10238)
* update storage-limits doc with Azure disk part (#10224)
update storage-limits doc with Azure disk part
fix comments
* Update kubelet-config-file.md (#10222)
Update link to KubeletConfiguration struct.
* fix a trivial misspelling (#10244)
* Fix cassandra-statefulset.yaml indent level (#10243)
* Mention minimum etcd versions (#10208)
Source: https://groups.google.com/d/msg/kubernetes-dev/jMPA4JzKiY4/HIx2ugvLBAAJ
* fix 404 error (#10250)
* Small verb tweak (#10190)
Present participle, ftw.
* Add AnchorJS logic for header links (#10155)
* Add AnchorJS JavaScript
* Remove existing inpage_heading logic
* Remove underline from anchor tags
* Use single icon and add touch visibility
* Use paragraph link icon for AnchorJS
* Update Sass to use code formatting in docsContent headers
* Update header size coverage to H3-H6
* fix broken link in kubefed.md (#10254)
* Update the version numbers for the X-Remote-Extra- and Impersonate-Extra- key fixes (#9827)
The fix was cherry picked into 1.11.3, 1.10.7, and 1.9.11:
https://github.com/kubernetes/kubernetes/pull/67162https://github.com/kubernetes/kubernetes/pull/67163https://github.com/kubernetes/kubernetes/pull/67164
* fix typo (#10168)
* fix typo
* addressing comments.
* Update setup-ha-etcd-with-kubeadm.md
* fix typos (#10252)
* fix description of contribute guide (#10253)
* describe truncate feature about advanced audit (#10236)
* describe truncate feature about advanced audit
* Update audit.md
* docs update to promote ScheduleDaemonSetPods to beta (#9923)
* Dynamic volume limit updates for 1.12 (#10211)
* add a placeholder commit
* Update docs for csi volume limits
* Update storage-limits.md
* Add "MayRunAs" value among other GroupStrategies (#9888)
* Add CoreDNS details to the customize DNS doc (#10228)
* Add CoreDNS details to the customize DNS doc
Rewrite the document to include more details about CoreDNS, since it's now the default from v1.12
* Address comments
* Improve doc wording
* Fix link
* Update dns-custom-nameservers.md
* Update dns-custom-nameservers.md
* Fix secrets docs in 1.12 branch (#10056)
* Fix secrets docs
* Update secret.md
* Revert CoreDNS Docs (#10319)
* Revert "Add CoreDNS details to DNS Debug docs (#10201)"
This reverts commit 462817a674.
* Revert "Add CoreDNS details to the customize DNS doc (#10228)"
This reverts commit e7319eeb8c.
* Revert "coredns default (#10200)"
This reverts commit 698e93b441.
* Add CRI installation instructions page
Added cri-installation page with CRI installation instructions
Referenced it from kubeadm-init and install-kubeadm pages.
* kubeadm: update API types documentation for 1.12 (#10283)
v1alpha2 -> v1alpha3
MasterConfiguration -> [new-api-types]
* TokenRequest feature documentation (#10295)
* AdvancedAuditing is now GA (#10156)
xref: kubernetes/kubernetes#65862
`AdvancedAuditing` feature is GA in 1.12. This PR adjusts the related
docs.
* update runtime-class.md (#10332)
* update runtime-class.md
* Update runtime-class.md
* Document cross-authorizer permissions for creating RBAC roles (#10015)
* Document cross-authorizer permissions for creating RBAC roles
* Update rbac.md
* kubeadm: update authored content for 1.12 (reference docs and cluster creation) (#10348)
* kubeadm: update authored content in reference docs for 1.12
* kubeadm: add time frame in create-cluster-kubeadm for 1.12
* add AllowedProcMountTypes and ProcMountType to docs (#9911)
Signed-off-by: Jess Frazelle <acidburn@microsoft.com>
* kubeadm: add new command line reference (#10306)
Add:
- placeholder files
- include place holder files
- include "renew" sub command
- add missing tabs for "alpha phase kubelet"
* Documenting SCTP support in Kubernetes (#10279)
* Documenting SCTP support in Kubernetes Service, Endpoint, NetworkPolicy and Pod
* Updates based on comments on the PR
* kubectl expose update with SCTP support
* Updated according to comments in the PR
* Revert "kubectl expose update with SCTP support"
This reverts commit 0d5a1e6720a012390cf100c83e16b4a8c0782356.
* TLS Bootstrap and Server Cert Rotation feature documentation (#10232)
* TokenRequest feature documentation
* line wrapping to make review not insane
* update content for GA without major refactor
* Update kubelet-tls-bootstrapping.md
* Add clarifications for volume snapshots (#10296)
* Update kubadm ha installation for 1.12 (#10264)
* Update kubadm ha installation for 1.12
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* update stable version
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* Update stacked control plane for v1.12 (#2)
* use v1alpha3
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* more v1alpha3 (#4)
* updates
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* Document how to run in-tree cloud providers with kubeadm (#10357)
Change-Id: Iab6b996a830503d74a6eb0c507c5f8ca7a39235b
* kubeadm reference doc for release 1.12 (#10359)
* Revert "Revert "Add CoreDNS details to DNS Debug docs (#10201)""
This reverts commit bb30f4d1fcd6fba2fe6190778ead99f8010033b7.
* Revert "Revert "Add CoreDNS details to the customize DNS doc (#10228)""
This reverts commit bc23d45c09d7b83cac130fe22a0bd91e72435862.
* Revert "Revert "coredns default (#10200)""
This reverts commit 7f4350d6ab7fc554ee53126d3875e845d2e43d1f.
* add missing instruction for ha guide (#10374)
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* kubeadm - Ha upgrade updates (#10340)
* Update HA upgrade docs
* Adds external etcd HA upgrade guide
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* copyedit
* more edits
* add runasgroup in psp (#10076)
* update KubeletPluginsWatcher feature gate (#10205)
* generated 1.12 docs
* Building Multi-arch images with Manifests (#10379)
In 1.12, a variety of images used in a typical kubernetes installation
have started to using manifests to better support environments with arm
or ppc64le architectures. For example all images used with kubeadm by
default have manifests, another would be all the tests in the
conformance test suite. Here we capture the best practices for everyone
to start using manifests in their own workflows.
Change-Id: I5ba4c5fe55ffc9486a8251760f3352be4f2e1494
* Upgrade docs for v1.12 (#10344)
* generated assets and docs
* remove 1.7
* update 1.12
* update plugin documentation under docs>tasks>extend-kubectl (#10259)
* update plugin documentation under docs>tasks>extend-kubectl
* Update kubectl-plugins.md
* Added content to Setup index
* Alphabetized providers
* Update _index.md
* Make Turnkey Cloud Solutions a H2 for toc
* Updated from Andrew's Comments
* fixing headings
* add new turnkey cloud solution to setup: ICP on
multiple clouds
Signed-off-by: Brad Topol <btopol@us.ibm.com>
* Updated ICP Multiple Cloud URL and IBM Cloud table entry
* small tweak to kick off redeploy
when i hit the command
`kubectl patch serviceaccount default -p '{\"imagePullSecrets\": [{\"name\": \"myregistrykey\"}]}'`
then i got this error
`Error from server (BadRequest): invalid character '\\' looking for beginning of object key string`
But i stripped all back slashes, and it worked.
If this issue is caused only in my specific environment,
close this pull-request.
My environment is ...
- Docker for Mac: Version 18.06.0-ce-mac70 (26399), Kubernetes: v1.10.3
* The fix clicks the error hyperlink that 'here' appears
The fix clicks the error hyperlink that 'here' appears
The fix clicks the error hyperlink that 'here' appears
* Update link path to k/examples
* WIP - rework update imported docs
* Rework tool/doc for updating reference docs
This PR reimplement the reference docs generator in Python and fixes
some outdated docs and data:
- Do docs import using Python because the GoLang version of tool has
some following drawbacks:
* its not convenient for handling YAML config files
* it has to be compiled to binaries to run on different platforms
* for every tiny changes you need to compile a new version and check in
- The reference docs we use in website are actually not coming directly
from `kubernetes/kubernetes`. Most of them come from the `reference-docs`
project. The configuration files are thus changed to avoid confusion.
- We have changed the location of generated docs so the default configuration
files and the docs are updated.
* Fix Markdown on documentation for install-kubectl
Section modified: "Install with Powershell from PSGallery"
* Update install-kubectl.md
* Feedback from PR review with gramamtically incorect sentence and markdown rendering in install-kubectl.md
Update install-kubectl.md
Update install-kubectl.md
Update install-kubectl.md
Update install-kubectl.md
* Clean up inline markup and links
- Clean up inline markup in html headers
- Fix links on page and related page
- Clean up some wording and add links to tutorial and concepts
* Update scale-stateful-set.md
Kubelet doesn't prepend the cluster DNS server to the nodes's DNS
settings, neither for Pods with "ClusterFirst" dnsPolicy nor Pods with
"default" dnsPolicy.
Only pods with "default" dnsPolicy inherit DNS from nodes, without the
cluster DNS server prepended.
* Make navigation and UI strings i18n friendly
This commit
* Extracts most UI strings into i18n bundles so they can be translated
* Makes a proper Hugo menu out of the hardcoded menu that is shown on smaller screens
* Changes the language selector logic to navigate to the current page in the other language if possible (e.g. the translation). If not possible, it takes you to the home page for that language.
For testing, this commit also adds Norwegian as a new language. This is turned off.
* Make the home page into reusable and translatable blocks
This commit adds a set of block type shortcodes that is then used to build the home page.
* These shortcodes gets common image resources from a new headless bundle. These resources can be inherited or overridden by translations.
* The hardcoded case studies section on the home page is replaced with a query and a loop.
* The hardcoded feature list on the home page is replaed qith a query and a loop.
* Add AnchorJS JavaScript
* Remove existing inpage_heading logic
* Remove underline from anchor tags
* Use single icon and add touch visibility
* Use paragraph link icon for AnchorJS
* Update Sass to use code formatting in docsContent headers
* Update header size coverage to H3-H6
* Change product name
From IBM Cloud Container Service to IBM Cloud Kubernetes Service
* Adding IKS to the table of solutions
Not sure about where in the table it should be placed. The note said,
“The above table is ordered by version test/used in nodes, followed by
support level.”
* Adding IKS to Cloud Providers page
* Adding IBM Cloud Container Registry to private registry topic
* Updating language on cloud provider page
* Revising text for the registry entry
* Specifying that it's calico network policies
The Product Security Team got a report about these unauthenticated
discovery roles. The reporter was surprised about getting 200 requests
when unauthenticated. And given the light documentation on the intention
of these roles it is justifiable.
Increase documentation on these roles.
The URL was not updated to point to release-1.11 branch when 1.11 was released.
This PR updates it to use the docsbranch param, so we don't have to
update it for every release.
* Update Quote
The Previous quote was not actually in our case study, makes me thing it was just a miss.
I'm proposing we change to a quote from within the case study, doesn't have to be this one.
* Update index.html
* add Ygrene case study
* Update ygrene.html
* Update ygrene.html
* add Adform case study
* update to have logo show
* Update and rename adform.html to index.html
The original doc contained "type: fast" which means the volume type
"fast" should exist on OpenStack/Cinder side.
However there is not any standard volume type name and most people
face the StorageClass issue when specifying this volume type.
In addition, the issue is hard to be debugged because the error
message which explains the nonexistent volume type is not output
on debugging information. Then external cloud-provider-openstack
doesn't contain the volume type "fast" today as [1].
This removes it for avoiding confusions for users who still use
the deprecated internal provisioner.
[1]: https://github.com/kubernetes/cloud-provider-openstack/blob/master/examples/persistent-volume-provisioning/cinder/cinder-storage-class.yaml
* Add instructions for staging site using Docker
Adds a condensed version of the instructions in the README to
the intermediate contribution page.
* Format code blocks
* Update high-availability.md
Fix for https://github.com/kubernetes/website/issues/9594#
Changed the value of `kubernetesVersion` to `v1.11.1` in the kubeadm-config.yaml so it pulls the correct server images for the latest v1.11 release.
I don't like the idea of having to change this value for every point release. Maybe someone can come up with a better solution that submitting a change to the documentation for every minor release?
* Update high-availability.md
* Changed Azure Container Service names and to Azure Kubernetes Service
* Changed docs link
* Service link redirects to aks link and remains unchanged.
* Copyedit and update with escape characters
- Use escape characters for {{< toc >}}.
- Copyedit the content.
* Remove the {{< toc >}} reference
The template does not need a {{< toc >}} as the TOC will be generated by default. Therefore, removed this info from the doc.
In Options section, "--feature-gates mapStringBool"
option was given as a "feature=true|false" format.
While in other cli-ref pages, like kube-apiserver,
it's like "feature=true|false (BETA - default=true)".
Make it consistent to be "feature=true|false (phase - default=true or false)"
like kube-apiserver, scheduler, etc.
* Propogating
not "Propogating", is "Propagating"
* `kubelet init` and `kubelet join`
`kubeadm init` and `kubeadm join`, not `kubelet init` and `kubelet join`
* Copyedit the page
A few minor updates were made.
* Update conjuction
Three options. The first (original) was OK, the second (change in this PR) was ambiguous, the third is a bit clearer.
* Format security note with proper callout
The information about security of ssh keys might benefit from standing out more. Thus included it in a caution shortcode. Formatting is now more aligned with the style guide.
* close caution tag
Page titles are in the verb's infinitive form throughout the d11n. Changed the title from the gerund form to infinitive to align it with the other page titles.
The relevant fix for kubernetes.io is the "Page last modified on" line (Git revision info), which in this version now works correctly across languages.
* Prevent hugo's wrong yaml rendering
* moved a couple of yaml descriptions to examples directory
* remove command prompt
* split each code snippet into command and output
* revert newline character
* add new test in examples_test.go
* change kind to ResourceQuota from List
* revert using examples/quota-objects-priority.yaml
* fix indent number
* unify file extension to yaml
This patch fix content "List existing nodes, pods, services and more,
in all namespaces, or in just one:" lost pod list.
Signed-off-by: Yuanbin.Chen <cybing4@gmail.com>
* Added shortcode callouts and removed future tense
* Added colons according to the style guide
* Add a few more copyedits
@cody-clark inspired me. More to do, but progress is being made!
* Fixes#9787. Be explicit with page name for Hugo to find section
* Revert "Fixes #9787. Be explicit with page name for Hugo to find section"
This reverts commit b3f4d5be107149777173ac345a2cadcaf8b0c5ff.
* Follow @bep suggestions to fix#9787
* Fix sentence style capitalization in title
Capitalization of topic title was inconsistent with other titles. Fixed to sentence style capitalization.
* Fix object name
Minor change to nice fix, thank you!
The ordered list of content under "Creating a Deployment" was not ordered as per the example. Since it was confusing to search for the meaning around, I reordered the content.
Replaced "we" with "you" as per the style guide.
This block of code was missing the correct formatting
Changed the formatting
Rechanged it
Sorry I got kind of mixed up with the highlighting, this is what you meant right?
three backticks formatting
Inserted newlines to fix code formatting
Re-added white space
Yet more whitespace adjustment
* create-cluster-kubeadm: update notes about flannel
Add note that a specific manifest can be used to support
different architectures until version 0.11.0 is released.
* Fix passive voice
Style guide compliance
* Fix link order in Setup section
* fix merge conflict
* Co-authored-by: Jennifer Rondeau <jennifer.rondeau@gmail>
* flip front matter order
* Remove Imported section and add Community section
* revert flip
* change section weights
* revert case study change
It was not clear what "Before you begin" meant and how it needs to be added only if the task or tutorial is version specific. Therefore, added this info in.
- /docs/contribute/foundational/ does not exist. Therefore, update all the redirects that go to /foundational to /start.
- Added a redirect to redirect all links that got to /foundational to /start.
* 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
* 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
* 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
* Improve social media share sheet metadata
* Improve social media share sheet metadata
* Improve social media share sheet metadata
* Improve social media share sheet metadata
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.
* 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
* 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
* 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
* 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.
* 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
* 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
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)`
* adding blog post
* adding blog post
* Revert "adding blog post"
This reverts commit eeb113259d74e7c725f1f30dbc2bfd0cb335e4ff.
* Update 2018-08-03-make-kubernetes-production-grade-anywhere.md
* 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.
- 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.
* 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
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).
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
* 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
* 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 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
* 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.
* 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
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.
* 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
* 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
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 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
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.
* 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
* 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
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
* fix dead links and apply template
* fix conflicts
* re-fix dead links
* Revert "re-fix dead links"
This reverts commit 3eb8292f45c6453c577f6fc4a49600da291d8622.
* 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
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.
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*.
* 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
* 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
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.
This PR contains API reference docs generated from the reworked
generator (see:
https://github.com/kubernetes-incubator/reference-docs/pull/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
Added a couple of separate aliases:
- sig-cluster-lifecycle-kubeadm-approvers
- sig-cluster-lifecycle-kubeadm-reviewers
At the same time update the list SIG participants.
* Update cluster-administration-overview.md
remove the sentence "If you are using a guide involving Salt, see [Configuring Kubernetes with Salt](/docs/admin/salt/)."
because the website can be find ,it will return 404
* update the cluster-administration-overview.md
change the sentence "-If you are using a guide involving Salt, see [Configuring Kubernetes with Salt](/docs/admin/salt/)."
to "-If you are using a guide involving Salt, see [Configuring Kubernetes with Salt](/docs/setup/salt/)."
* Update cluster-administration-overview.md
This PR moves the examples test to where it belongs and also include the
following improvements:
- Removed test cases defined for non-existent files;
- Add guard against ineffective tests against missing files;
- Remove the special case for scheduler-policy-config which is no longer
an example, the dependency on the related go module is thus
eliminated;
- Updated the .tavis.yml file to use the new test case: the instruction
sequence is adjusted to ensure the correct version of kubernetes is
fully prepared before we do `go get -v -t`.
- The examples_test.go is formatted using `gofmt`;
- Verbose output during test has been added.
- A separate test case is added for CN translation.
Related: #9285
This is the last PR for moving the YAML/JSON sample files. There still
need some follow up PRs to:
- rename the `codenew` shortcode to `code`.
- move the examples_test.go to where it really belongs.
This PR deals with YAML files referenced by the following two topics:
- concepts:object management
- concepts:service networking
When scanning references to the YAML files to be moved, some trivial
editings were applied to the markdown files. None of this editing should
break the build or ruin the doc otherwise.
This change is to list JuniperContrail/TungstenFabric as a provider
of Pod networking for a Kubernetes cluster.
Juniper's CNI solution has been available as a open source product
for couple of years now. It is a mature solution that has been
deployed in live clusters.
Move the code of conduct page under /community
Add redirect
Use text from CNCF COC and note the revision we imported it at
Add note to top of imported file not to edit it directly
* Adding documentation on recommended labels and annotations
This content was developed as part of the App Def WG
* Updates per feedback from editing and to remove annotations per WG
* Adding app instance to the recommended labels
This PR deals with the getting started guides (windows) and tutorials
sections. Since the YAML files in the windows directory currently are not
referenced at all, this PR refactored the markdown file to correct this
problem. When appropriate, we use the YAML content from the markdown in
the extracted version.
* Consolidate YAML files [part-12]
Relocate YAML files referenced by the accessing application topic
and the rest of cluster administration.
* Adjust json shortcodes.
* adding discuss kubernetes link to community page
addressing https://github.com/kubernetes/website/issues/8578
* moving to bullet list and changing caps
* removing caps
* resetting back to original PR and removing caps
* Update link to the NetworkPlugin interface
Link was broken during some refactoring (commit 42398825ed7fac58fc6c4027c8be730398b6d2be).
Change the link to reflect the new location.
This fixes Issue #9297
* Remove extra line
Somehow the fixed link was pasted at the end of the modified paragraph.
Remove it.
* Add back linebreak
I'll get this right... I swear.
Adds a missing instruction on how to configure the kubelet. Reported in slack in the #kubeadm channel.
Fixes#9222
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* Document name restrictions for multi-port services
Add note in documentation about port name restrictions.
* fix whitespace
undo unrelated whitespace deletion
* Consolidate YAML files [part-8]
This PR exacts the YAML files referenced from the following subdirs:
- docs/concepts/workloads
- docs/concepts/configuration
- docs/concepts/policy
The following problems are fixed:
- docs/concepts/workloads/controllers/ doesnt have a 'cronjob.yaml for
test
- the exactly same `pod.yaml` was used in both the task/config-pod-container
topic and the concepts/configuration topics.
* Update examples_test.go
* Add missing yaml file.
* Consolidate YAML files [part-5]
This PR relocates the yaml files used in stateless application
guestbook. This PR also fixes the list numbering and code block
problems in the page.
Note that neither code blocks nor note callouts live happily inside a
numbered list, so this PR moves them out of such lists.
* Update examples_test.go
There were things changed upstream which have blocked the examples test
from running correctly:
- PodSecurityPolicy has been MOVED from extensions API group into
policy. All samples that are using this resource type needs a change.
- The 'GetCodecForObject()' function in testapi/testapi package was
removed in 1.11 for unknown reasons. This change has broken our job as
well as the test code in the kubernetes/examples project.
- Kubernetes is now using 1.10.2+ verion of Go for compilation so we
have to change the .travis.yml accordingly.
This PR fixes the above problems.
Note also, the `TestReadme` function is **removed** for two reasons:
- It is only testing the snippets in the `volumes.md` file which is now
broken because of the introduction of service account token injection.
- It is regarded as too aggressive/restrictive a test. We cannot
guarantee that YAML snippets in the markdown files are complete and
can be used as is. Instead I believe we should encourage people to use
template snippets that contain the **key** information for a topic.
When we see a need for a full template that can be used directly, we
may want to extract the YAML contents into the `examples`
subdirectory.
* Seperate priority and preemption (#8144)
* Doc about PID pressure condition. (#8211)
* Doc about PID pressure condition.
Signed-off-by: Da K. Ma <klaus1982.cn@gmail.com>
* "so" -> "too"
* Update version selector for 1.11
* StorageObjectInUseProtection is GA (#8291)
* Feature gate: StorageObjectInUseProtection is GA
Update feature gate reference for 1.11
* Trivial commit to re-trigger Netlify
* CRIContainerLogRotation is Beta in 1.11 (#8665)
* Seperate priority and preemption (#8144)
* CRIContainerLogRotation is Beta in 1.11
xref: kubernetes/kubernetes#64046
* Bring StorageObjectInUseProtection feature to GA (#8159)
* StorageObjectInUseProtection is GA (#8291)
* Feature gate: StorageObjectInUseProtection is GA
Update feature gate reference for 1.11
* Trivial commit to re-trigger Netlify
* Bring StorageObjectInUseProtection feature to GA
StorageObjectInUseProtection is Beta in K8s 1.10.
It's brought to GA in K8s 1.11.
* Fixed typo and added feature state tags.
* Remove KUBE_API_VERSIONS doc (#8292)
The support to the KUBER_API_VERSIONS environment variable is completely
dropped (no deprecation). This PR removes the related doc in
release-1.11.
xref: kubernetes/kubernetes#63165
* Remove InitialResources from admission controllers (#8293)
The feature (was experimental) is dropped in 1.11.
xref: kubernetes/kubernetes#58784
* Remove docs related to in-tree support to GPU (#8294)
* Remove docs related to in-tree support to GPU
The in-tree support to GPU is completely removed in release 1.11.
This PR removes the related docs in release-1.11 branch.
xref: kubernetes/kubernetes#61498
* Update content updated by PR to Hugo syntax
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Update the doc about extra volume in kubeadm config (#8453)
Signed-off-by: Xianglin Gao <xianglin.gxl@alibaba-inc.com>
* Update CRD Subresources for 1.11 (#8519)
* coredns: update notes in administer-cluster/coredns.md (#8697)
CoreDNS is installed by default in 1.11.
Add notes on how to install kube-dns instead.
Update notes about CoreDNS->CoreDNS upgrades as in 1.11
the Corefile is retained.
Add example on upgrading from kube-dns to CoreDNS.
* kubeadm-alpha: CoreDNS related changes (#8727)
Update note about CoreDNS feature gate.
This change also updates a tab as a kubeadm sub-command
will change.
It looks for a new generated file:
generated/kubeadm_alpha_phase_addon_coredns.md
instead of:
generated/kubeadm_alpha_phase_addon_kube-dns.md
* Update cloud controller manager docs to beta 1.11 (#8756)
* Update cloud controller manager docs to beta 1.11
* Use Hugo shortcode for feature state
* kubeadm-upgrade: include new command `kubeadm upgrade diff` (#8617)
Also:
- Include note that this was added in 1.11.
- Modify the note about upgrade guidance.
* independent: update CoreDNS mentions for kubeadm (#8753)
Give CoreDNS instead of kube-dns examples in:
- docs/setup/independent/create-cluster-kubeadm.md
- docs/setup/independent/troubleshooting-kubeadm.md
* update 1.11 --server-print info (#8870)
* update 1.11 --server-print info
* Copyedit
* Mark ExpandPersistentVolumes feature to beta (#8778)
* Update version selector for 1.11
* Mark ExpandPersistentVolumes Beta
xref: kubernetes/kubernetes#64288
* fix shortcode, add placeholder files to fix deploy failures (#8874)
* declare ipvs ga (#8850)
* kubeadm: update info about CoreDNS in kubeadm-init.md (#8728)
Add info to install kube-dns instead of CoreDNS, as CoreDNS
is the default DNS server in 1.11.
Add notes that kubeadm config images can be used to list and pull
the required images in 1.11.
* kubeadm: update implementation-details.md about CoreDNS (#8829)
- Replace examples from kube-dns to CoreDNS
- Add notes about the CoreDNS feature gate status in 1.11
- Add note that the service name for CoreDNS is also
called `kube-dns`
* Update block device support for 1.11 (#8895)
* Update block device support for 1.11
* Copyedits
* Fix typo 'fiber channel' (#8957)
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* kubeadm-upgrade: add the 'node [config]' sub-command (#8960)
- Add includes for the generated pages
- Include placeholder generated pages
* kubeadm-init: update the example for the MasterConfiguration (#8958)
- include godocs link for MasterConfiguration
- include example MasterConfiguration
- add note that `kubeadm config print-default` can be used
* kubeadm-config: include new commands (#8862)
Add notes and includes for these new commands in 1.11:
- kubeadm config print-default
- kubeadm config migrate
- kubeadm config images list
- kubeadm config images pull
Include placeholder generated files for the above.
* administer-cluster/coredns: include more changes (#8985)
It was requested that for this page a couple of methods
should be outlined:
- manual installation for CoreDNS explained at the Kubernetes
section of the GitHub project for CoreDNS
- installation and upgrade via kubeadm
Make the above changes and also add a section "About CoreDNS".
This commit also lowercases a section title.
* Update CRD subresources doc for 1.11 (#8918)
* Add docs for volume expansion and online resizing (#8896)
* Add docs for volume expansion going beta
* Copyedit
* Address feedback
* Update exec plugin docs with TLS credentials (#8826)
* Update exec plugin docs with TLS credentials
kubernetes/kubernetes#61803 implements TLS client credential support for
1.11.
* Copyedit
* More copyedits for clarification
* Additional copyedit
* Change token->credential
* NodeRestriction admission prevents kubelet taint removal (#8911)
* dns-custom-namerserver: break down the page into mutliple sections (#8900)
* dns-custom-namerserver: break down the page into mutliple sections
This page is currently about kube-dns and is a bit outdated.
Introduce the heading `# Customizing kube-dns`.
Introduce a separate section about CoreDNS.
* Copyedits, fix headings for customizing DNS
Hey Lubomir,
I coypedited pretty heavily because this workflow is so much easier for docs and because I'm trying to help improve everything touching kubeadm as much as possible.
But there's one outstanding issue wrt headings and intro content: you can't add a heading 1 to a topic to do what you wanted to do. The page title in the front matter is rendered as a heading 1 and everything else has to start at heading 2. (We still need to doc this better in the docs contributing content, I know.)
Instead, I think we need to rewrite the top-of-page intro content to explain better the relationship between kube-dns and CoreDNS. I'm happy to write something, but I thought I'd push this commit first so you can see what I'm doing.
Hope it's all clear -- ping here or on Slack with any questions ~ Jennifer
* Interim fix for talking about CoreDNS
* Fix CoreDNS details
* PSP readOnly hostPath (#8898)
* Add documentation for crictl (#8880)
* Add documentation for crictl
* Copyedit
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Final copyedit
* VolumeSubpathEnvExpansion alpha feature (#8835)
* Note that Heapster is deprecated (#8827)
* Note that Heapster is deprecated
This notes that Heapster is deprecated, and migrates the relevant
docs to talk about metrics-server or other solutions by default.
* Copyedits and improvements
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Address feedback
* fix shortcode to troubleshoot deploy (#9057)
* update dynamic kubelet config docs for v1.11 (#8766)
* update dynamic kubelet config docs for v1.11
* Substantial copyedit
* Address feedback
* Reference doc for kubeadm (release-1.11) (#9044)
* Reference doc for kubeadm (release-1.11)
* fix shortcode to troubleshoot deploy (#9057)
* Reference doc for kube-components (release-1.11) (#9045)
* Reference doc for kube-components (release-1.11)
* Update cloud-controller-manager.md
* fix shortcode to troubleshoot deploy (#9057)
* Documentation on lowercasing kubeadm init apiserver SANs (#9059)
* Documentation on lowercasing kubeadm init apiserver SANs
* fix shortcode to troubleshoot deploy (#9057)
* Clarification in dynamic Kubelet config doc (#9061)
* Promote sysctls to Beta (#8804)
* Promote sysctls to Beta
* Copyedits
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Review comments
* Address feedback
* More feedback
* kubectl reference docs for 1.11 (#9080)
* Update Kubernetes API 1.11 ref docs (#8977)
* Update v1alpha1 to v1beta1.
* Adjust left nav for 1.11 ref docs.
* Trim list of old ref docs.
* Update Federation API ref docs for 1.11. (#9064)
* Update Federation API ref docs for 1.11.
* Add titles.
* Update definitions.html
* CRD versioning Public Documentation (#8834)
* CRD versioning Public Documentation
* Copyedit
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Address feedback
* More rewrites
* Address feedback
* Update main CRD page in light of versioning
* Reorg CRD docs
* Further reorg
* Tweak title
* CSI documentation update for raw block volume support (#8927)
* CSI documetation update for raw block volume support
* minor edits for "CSI raw block volume support"
Some small grammar and style nits.
* minor CSIBlockVolume edits
* Update kubectl component ref page for 1.11. (#9094)
* Update kubectl component ref page for 1.11.
* Add title. Replace stevepe with username.
* crd versioning doc: fix nits (#9142)
* Update `DynamicKubeletConfig` feature to beta (#9110)
xref: kubernetes/kubernetes#64275
* Documentation for dynamic volume limits based on node type (#8871)
* add cos for storage limits
* Update docs specific for aws and gce
* fix some minor things
* Update storage-limits.md
* Add k8s version to feature-state shortcode
* The Doc update for ScheduleDaemonSetPods (#8842)
Signed-off-by: Da K. Ma <klaus1982.cn@gmail.com>
* Update docs related to PersistentVolumeLabel admission control (#9109)
The said admission controller is disabled by default in 1.11
(kubernetes/kubernetes#64326) and scheduled to be removed in future
release.
* client exec auth: updates for 1.11 (#9154)
* Updates HA kubeadm docs (#9066)
* Updates HA kubeadm docs
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* kubeadm HA - Add stacked control plane steps
* ssh instructions and some typos in the bash scripts
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* Fix typos and copypasta errors
* Fix rebase issues
* Integrate more changes
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* copyedits, layout and formatting fixes
* final copyedits
* Adds a sanity check for load balancer connection
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* formatting fixes, copyedits
* fix typos, formatting
* Document the Pod Ready++ feature (#9180)
Closes: #9107
Xref: kubernetes/kubernetes#64057
* Mention 'KubeletPluginsWatcher' feature (#9177)
* Mention 'KubeletPluginsWatcher' feature
This feature is more developers oriented than users oriented, so simply
mention it in the feature gate should be fine.
In future, when the design doc is migrated from Google doc to the
kubernetes/community repo, we can add links to it for users who want to
dig deeper.
Closes: #9108
Xref: kubernetes/kubernetes#63328, kubernetes/kubernetes#64605
* Copyedit
* Amend dynamic volume list docs (#9181)
The dynamic volume list feature has been documented but the feature gate
related was not there yet.
Closes: #9105
* Document for service account projection (#9182)
This adds docs for the service account projection feature.
Xref: kubernetes/kubernetes#63819, kubernetes/community#1973Closes: #9102
* Update pod priority and preemption user docs (#9172)
* Update pod priority and preemption user docs
* Copyedit
* Documentation on setting node name with Kubeadm (#8925)
* Documentation on setting node name with Kubeadm
* copyedit
* Add kubeadm upgrade docs for 1.11 (#9089)
* Add kubeadm upgrade docs for 1.11
* Initial docs review feedback
* Add 1-11 to outline
* Fix formatting on tab blocks
* Move file to correct location
* Add `kubeadm upgrade node config` step
* Overzealous ediffing
* copyedit, fix lists and headings
* clarify --force flag for fixing bad state
* Get TOML ready for 1.11 release
* Blog post for 1.11 release (#9254)
* Blog post for 1.11 release
* Update 2018-06-26-kubernetes-1.11-release-announcement.md
* Update 2018-06-26-kubernetes-1.11-release-announcement.md
* Update 2018-06-26-kubernetes-1.11-release-announcement.md
Changes that will help upcoming consolidation work:
- Add variable `githubWebsiteRaw` to config.toml to facilitate building
links to raw YAML files
- Revise `codenew` shortcode to generate links to raw YAML files instead
of github.com file view;
- Rename `artifacts` directory to `examples` to better reflect its usage;
Accompanied changes as show cases:
- Moved `deployment.yaml`, `deployment-update.yaml` and
`deployment-scale.yaml` to the new `examples/application` subdirectory;
- Removed duplicate instances of the above YAML files in other
directories;
- Update example_test.go to test the relocated YAML files and removed
testing for files that no longer needed.
* Update Windows documentation for OVN/OVS CNI plugin
This patch adds reference to the Ansible playbooks which help
to deploy a kubernetes cluster in a fully automated way.
Signed-off-by: Alin Balutoiu <abalutoiu@cloudbasesolutions.com>
* Minor tweaks
* Trivial commit/undo to trigger Netlify
Added an extra whitespace line at EOF
This page adds instructions on how to use the kubeadm config
to pass flags to control plane components.
The provided examples are pretty basic. Later this can be expanded with
actual user stories.
This is an attempt to consolidate YAML files so that:
- They can remain untouched when we moving the documents around;
- Contributors do not have to change the test cases each time a
documentation is moved;
- We can encourage referencing the existing YAMLs from different
concept or task pages when possible.
After deploying the PV and PVC via the YAML file, run `kubectl describe pvc mysql-pv-claim` should show `mysql-pv-volume` as the `Volume`, instead of `mysql-pv`.
This heading is missing in the 1.10 documentations which makes it hard to find the needed information because the anchor `setting up a master load balancer` points to nowhere. This was working in the 1.19 documentation and it was really useful.
I noticed that the three last headers were missing from the index, so I inspected the markdown and realized that they had only one hashtag (#) as compared to two (##) as all the other headers had.
I simply made those three topics follow the same pattern I observed the other did.
# Issue
The command of jobs does not run correctly if its job already finished.
Some readers may confuse that they can't succeed to run a command to follow this tutorial.
So, we should add `--show-all` option to show pods that may be completed.
# The log to show that we need to add an --show-all option
```
$ kubectl get jobs
NAME DESIRED SUCCESSFUL AGE
busybox 1 0 27d
hello-1529501040 1 1 2m
hello-1529501100 1 1 1m
hello-1529501160 1 1 43s
$ kubectl get pods --selector=job-name=hello-1529501160
No resources found, use --show-all to see completed objects.
$ kubectl get pods --show-all --selector=job-name=hello-1529501160
NAME READY STATUS RESTARTS AGE
hello-1529501160-dckjv 0/1 Completed 0 1m
```
Those links are dead, pointing at what I assume in the previous place for the Kubelet TLS bootstrapping documentation.
Update them with the new location!
* Update etcd config description of kubeadm HA doc
- Fix url from http to https
- Add etcd-listen-ip description
* Edit for clarity and list markup
* More minor edits
* Add Dockerfile and make commands
* add background run option
* Expand on OSS attribution in new Dockerfile
* Begin adding README instructions for Docker
* Add new stage command
implementation-details.md is outdated for k8s 1.11.
Add feature state that this page applies to k8s 1.10.
The page should be updated for k8s 1.11 in a later stage
in the release cycle.
commenting out the div that holds the current calendar until we can fix some issues we are having with zoom project wide per steering committee email to k-dev mailing list.
`base64` generates 76-character chunks of text, delimited by a space character. the `=+/` characters are removed, so on the (uniformly random) offchance that 44 characters are removed, the last `dd` will read a whitespace, and the token will include a whitespace, which "usually" isn't defined as an "alphanumeric character." Removing the space character as well, would mean that 142 of the characters would have to be a `=+/[:space:]`, before the token becomes shorter.
* [docs] Fix syntax formatting in HA-setup doc.
Attempts to fix an unformatted code block; whatever markdown parser is being used seems to have gotten tripped up, and as a result the inline `yaml` in the script is interpreted as bullet points... it looks [pretty yucky](http://jstu.art/sAjc). I'm wondering if this is something specific to the Hugo toolchain? Because GH itself recognizes the block as valid, even with the `none` syntax type.
If this doesn't trigger a CI build preview, I can test locally to verify.
* [css] Don't display ul/li bullets on UI 'tabs-nav' components.
* [docs] Revert HA docs changes.
This reverts commit f5cf5c7e4f0468d077e48347bf678a95c791982e.
Cannot copy any apiserver* keys and certs, as they are generated on startup. If not, it results in an error from kubeadm
```
certificate apiserver is not signed by corresponding CA
```
Also, if the kubernetes.list does not exist you will not be able to edit it, so adding touch and then add the line will prevent errors with installing via apt-get.
It is confusing to capitalize "container" because it isn't really a primitive or API object. Furthermore, this guideline doesn't appear to be closely followed.
* Overall cleanup for kubeadm setup guide.
* Add sonobuoy verification next step
* Partial copyedits
Hit a place where we also have formatting issues, plus a TODO (removed bc these changes go live as soon as merged). More work to do, but this should help the bottleneck for now.
* Address comments from reviewers
* Copy edits, fiddly bits, and clearer warnings
Incorporated feedback from @mistyhacks, fixed many nits, reorganized some **Note:** content more sensibly.
* Revised title per feedback
* replace pearson case study with new one
*this is already on the index page from awhile ago so I didn't add it to the top before NYT as a result
* add images
* Add a note regarding escaping characters
Updated docs with a note regarding escaping characters, it's important because it won't work well otherwise.
* Update secret.md
* No escape required for --from-file
Feedback from @mengqiy
Added information to install cfssl and cfssljson on all etc nodes as they are required to generate clients certificates
Change <podname> to <name> in static pod yaml description for etcd deployment
Additionaly the first bash script in "Run kubeadm init on master0" section doesn't render correctly on kubernetes.io site (https://kubernetes.io/docs/setup/independent/high-availability/) but I don't see any pb with markdown.
* Issue #8493 - Missing instructions in "Creating HA clusters with kubeadm":
- change to kubeadm-init.yaml: configure `advertiseAddress` to the VIP
- added section with instructions for configuring `kubelet`, `kube-controller-manager` and `kube-scheduler` to use the VIP
* Issue #8493 - Missing instructions in "Creating HA clusters with kubeadm": Change use the 'controlPlaneEndpoint' setting in kubeadm-init.yaml, hence no configuration file patching afterwards is necessary anymore.
* Issue #8493 - added private IP to apiServerCertSANs as proposed by @detiber
These pages did not use any template and the displayed toc started
with two bullet points.
Fixes:
* Use the concept template everywhere and add capture markers.
* Rework content-organization.md to move the references to a "whatsnext"
section.
* Fix in localization.md a misparsed list.
* fixing date format
* Update 2018-06-01-dynamic-ingress-kubernetes.md
* Rename 2018-06-01-dynamic-ingress-kubernetes.md to 2018-06-07-dynamic-ingress-kubernetes.md
* Add kbarnard10 as sole reviewer for auto assignment
* Add acontini as sole reviewer for case studies auto assignment
Un-comment out the reviewer declaration
Un-comment out the reviewer declaration
* Getting started gce deadlink
1.
modify for kubernetes/website link
2.
remove unnecessary .md link
* modify link from github.com to kubernetes.io
* revert blogs modification
* revert blog post for meta char
Fix some hugo transition issues:
* Use `file` as code syntax following our style guide and fixing
bug #8868
* Reformat Note so that it's not displayed as text.
Closes: #8868
In _index doc the Kubectl CLI about overview link
was add in "[Overview of kubectl]", So remove not
need "[kubectl]" link.
Signed-off-by: Yuanbin.Chen <cybing4@gmail.com>
* Fix errors in configure-multiple-schedulers.md
- Failed to push docker image
- Errors found in my-scheduler logs
```
...
E0515 06:36:28.180428 1 reflector.go:205] k8s.io/kubernetes/vendor/k8s.io/client-go/informers/factory.go:130: Failed to list *v1beta1.ReplicaSet: replicasets.extensions is forbidden: User "system:serviceaccount:kube-system:default" cannot list replicasets.extensions at the cluster scope
```
* Replace double quote with backticks for code strings
* Use `system:kube-scheduler` instead of `cluster-admin`
* Create dedicated service account for `my-scheduler`
* Update high-availability.md
[fix]command should leading
* Repair code inside list items, remove "like so"
* Modify one code block, change 1-step procedures to not be procedures
This commit adds details on how to create Windows services from
kubelet and kube-proxy.
Signed-off-by: Alin Balutoiu <abalutoiu@cloudbasesolutions.com>
* Add link: add changelog-1.10 and changelog-1.11
* Delete download page's catalog: hugo's markdown render engine can generate catalog through the TOC
* Format the release list
* Delete the release note
In recent versions of Kubernetes, selector field in DeploymentSpec is required and it'll not be filled with values from pod template. simple_deployment.yaml was already corrected and selector was added, here in this commit the content of the docs corrected to match this change.
I do not have a desire of titles but I am trying this to make the hours
I spent on the project worth them. I feel very bad when I have full
confidence about a PR and I have reviewed it but I cannot approve it.
* Clarify that beta annotations can not be removed
Removing annotations caused a major outage with nodes that lagged the
master. We used annotations as would-be fields, though we don't any
more. Now we just add fields. That makes them part of the API version.
These annotations are effectively part of the API version, too.
It stinks because I love to delete code, but I think it's just part of
the debt-accrual process and yet another reason we need to be judicious
in adding fields.
* Change 6 month deprecations to 9 months
This covers maximum version skew. For example a master might be at
1.10, while nodes are at 1.8. We must not break compat within that
window.
* Update service-access-application-cluster.md
Fix code snippet formatting and indentation in ordered list (#8698)
* Fixes code formatting using code fences
Here's a pass with code fences. It seems to work well, and I indented the code fences in the source for readability, even though it wasn't needed for proper indentation in the rendered output.
I wasn't able to use code fences and get the text "The response to a successful request is a hello message:" on its own line. I can achieve that using indentation, but for consistency's sake I used the code fences and placed the text with the paragraph above it.
* Adds `shell` to the code fences
* Fix etcd installation command in kubeadm tutorial
Shells interpolate variables before running commands, so setting the
ETCD_VERSION variable must be separated from the command that
interpolates it. Otherwise an empty string will be interpolated.
The rm command isn't necessary - the output from curl is piped directly
to tar.
* Update stated default etcd version for K8s 1.10
1.10 is the most recent version of K8s and the default etcd server
version for it is 3.1.12
* Fix non-US English typo
Style guide states US English should be used
* Add configure link description
I added a configure link description. Just having a link
on a page with no introductory context seemed awkward.
Signed-off-by: Brad Topol <btopol@us.ibm.com>
* removing unnecessary header
* updated text to be active voice
A tab shortcode was using angle brackets even though the
contents were markdown. This caused a formatting issue.
This switches the tab to use the `%`-delimiter to properly
render the markdown.
* Restore gate jobs
Most gate jobs have been disabled recently so we are risking introduce
many defects when migrating to Hugo. This PR fixes the gate job to get
it running again.
* add comment for fix
* comment out, delete later
* comment out completely
* include package
This commit adds a missing closing capture and puts "## Install kubectl" inside the relevant capture.
Note that the missing close was also missing before Hugo-migration, so the section ordering is still not the same as the Jekyll version of the site. But I think it is more corret.
Note that content outside the capture template blocks, is included as defined is this template:
https://github.com/kubernetes/website/blob/master/layouts/partials/templates/task.html#L8
See #8277
* Fix url to etcd binary
etcd should be 3.12 for kubernetes 1.10, also fix the URL (probably was broken after migration to Hugo)
* Make Curl command safer
You really only need that variable to be set for the specific command, so no need to export it.
Also, when using Bash variables in a string, you should enclose them in curly braces to delineate them from the rest of the string. This helps prevent problems where Bash can't tell where the name of the variable ends and the next part of the string begins.
The page was wrongly formatted:
* Two lists were shown as paragraphs, add empty lines so that they are
parsed as lists.
* The list of members, reviewers was not intended properly, so that the
single items are intended but not their description. Indent
everything.
* Fix URL to owners.md file, the old one gives a 404.
* Fix code blocks in set-up-cluster-federation-kubefed
Two of the code blocks don't render correctly in the [docs page](https://kubernetes.io/docs/tasks/federation/set-up-cluster-federation-kubefed/) (see *Adding a cluster to a federation* section) even though they render correctly in the GitHub preview. Hopefully this PR will fix it.
Plus fixed a few instances where the code blocks in set-up-cluster-federation-kubefed.md don't indicate the code block's language.
* Fix spacing
- Use environment variables when redirecting to "/etc/etcd.env".
- Add more placeholder values for flags in "etcd.service" -> "ExecStart"
Fixeskubernetes/kubeadm#797
* Update kubeadm-init.md
Fix broken kubeadm token link
* Fix more broken links in kubeadm-init.md
Broken links are fixed including kubeadm-join, kubeadm-upgrade, and kubeadm-reset
Currently, the link just points to a description of
what Kubernetes objects are and does not
explicitly state what a declarative API is. It is
not immediately clear to the reader what the term
means.
This commit tries to explain it explicitly so that
the link adds to the meaning and it is clearer to
the reader.
ThirdPartyResources (TPRs) were removed in v1.8. It is misleading
to still show the docs for TPRs for > v1.8. If one needs to read
docs for TPRs, they can switch to the v1.8 version of the docs
website.
However, the docs of migration of TPRs to CRDs are still not
removed because one can also migrate from v1.7 (when CRDs were
introduced) to v1.7+.
First, fix https:// address.
Secondly, previous formatting would display on the page as one line
altogether, which couldn't be pasted into a terminal correctly.
The TOC looked like:
3. Deployments
1.1 Deployment Management
4. Services
1.1 Service Management
The problem is that the headings went from "##" to "####", use "###" for
second level heading to cleanup TOC.
fix some hugo issues:
* Add missing empty line for list.
* Indent items correctly to avoid overlong line shown as code.
* Fix broken table
Closes: #8457
Before running `kubeadm init` users should be informed that the command might change depending on the network plugins they choose. It is better to provide it before presenting with `kubeadm init` so that they don't have to tear the cluster apart once they figure out they needed some extra parameters while running the command
* Container Linux doc fixes
portions of the URLs were missing their bash substitutions and the variable exports don't apply to the following commands without using 'export'
* Adjustments from PR
export is not needed, used proper bash expansion
* typos
* Typo fix: formated->formatted and proper noun in capital
formated->formatted
Pod and Container are proper noun, in this doc, someplace are in capital, some are in lowercase. It's better to keep consistency.
* Update volumes.md
1) Remove missing links about kube-apiserver, kube-controller-manager
and kube-scheduler. Link to the high-availability page, which
isn't exactly a full replacement.
2) Add section about kube-proxy parameters.
Hugo does not support the way the image's max-width was specified before.
This fix will constrain images to always be 50% rather than max out
at 50%, but it is the best we can easily do for now.
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Add links to the F5 BIG-IP Controller for Kubernetes to the Ingress controllers section of the ingress doc
* Address review comments from @zacharysarah
* Fix concepts/api-extension/custom-resources.md
All tables were wrongly formatted, add proper second line so that hugo
formats them nicely again.
Add missing empty line before lists so that they get displayed as lists.
Closes: #8392
* Fix one more table
Fix another wrong table heading in custom-resources.md as noticed
during review.
Reading over the .md file, I fixed the following problems:
* Replace links to old location with new location.
* Fix missing shell quotation marks and shell annotations
* Fix wrong indent so that lists are shown correctly.
* Fix broken table, the "|" needs to be quoted to be rendered.
The way we previously did it in Jekyll doesn't work
with Black Friday. There are a few workarounds, but
the easiest way to fix it is to just change those
links to HTML email.
* [Issue #8336] Added a # symbol to What's next
Looking to see if the Table of contents will render properly if all the headers are H4 (####)
* use h2 instead of h4
* More readable fix for issue #7957
Replaces HTML entity-escaped text with Markdown-escaped text where necessary.
* Fixing the markdown discrepancy
Rendering consistently is for chumps
* Supersedes #8288 with a post-Hugo location
* Adjusted time for earlier publishing
* Dropped blog post into http/
* Another time adjustment
* Update front matter
* Testing a location change
* Adding a top-level heading
* More tweaks
Ajusted the sequence of tab "node allow-post-csrs" and "node allow-auto-approve" to conform to the actual sequence of kubeadm alpha phase bootstrap-token.
The term "`MutatingAdmissionWebhooks`" has no special meaning in the
docs. It is misleading because readers may think of it as the name of a
resource or field, or the name of the corresponding admission
controller. However, the name of the admission controller is in
singular. This PR proposes a change to avoid such misunderstandings.
* Update service.md
Update from ReplicationController and rolling-update to ReplcaSet and Deployment rollout
* Update service.md
Remove reference to deployment
Since we now generate the kubectl doc for each release, it is no longer necessary to use the old redirects. Cleaning up the references throughout the documents.
* Added IPv6 info to kube-proxy arguments
* Added IPv6 related printouts for kubectl commands
* revert kube-proxy.md
* revert
* revert to ba7c300
* revert to 08af95d
* Update zookeeper.md
As part of a docs sprint in Melbourne I made a very initial pass at trying to tidy this up a little, I would like to have done much much more, but it's a start…
* Updates from feedback
* Format markdown
* FInal tidy
* Update style-guide.md
Added kubectl and Minikube to the Kubernetes.io word list. Please review.
* Update style-guide.md
Added Persistent Volumes and Salt to the Kubernetes.io word list. Please review.
* Update style-guide.md
removed PersistentVolumes and Salt from the list
So far we have been running tests against the master branch of
kubernetes/kubernetes. This is creating quite some problems because the
master branch is always moving. We are actually checking the YAML files
against a version between 1.10 and 1.11.
This PR is attempting to fix the problem by checking out the
'release-1.10' branch before running the tests. We are supposed to
change the branch to be used when release-1.11 is out. With this PR
(hopefully it works), we will only need to fix the gate every time a new
release is out.
The current title "CoreOS on AWS or GCE" is misleading because the page
actually contains information about many ways to run Kubernetes. When
the page is referenced from the navigation panel, the title becomes very
confusing.
Closes: #711
* Typo fix in implementation-details.md
does not exists->does not exist
does not contains->does not contain
* Update 2017-04-00-Rbac-Support-In-Kubernetes.md
an an->an
* Update 2017-04-00-Rbac-Support-In-Kubernetes.md
* Update a note indicating current state of federation V1
* change horizontal line to <br>
* edit note
* capitalize Kubernetes
* <br> unnecessary w/ note callout
* Clarify that node anti-affinity can be achieved using node taints
The current text may have pre-dated the node taints feature, so it says that no such concept exists, when it actually does now.
* add "to"
Replace double-quote with single-quote for terminal commands.
Although the strings in the examples work fine, users who with randomly generated passwords may have character strings that cause strange behaviors with double-quotes. Using single-quotes prevents this.
Example of a command that causes odd behaviors with double-quotes:
echo -n "RandPasswordr3!$#$3aR" | base64
This example has a series of special characters that some terminals try to interpret and replace with other text.
add this to --runimte-config will cause such error:
```
error: unknown api groups eventratelimit.admission.k8s.io
```
I have test that this feature works fine without any confiuration
to --runtime-config.
The 'user-guide' subdirectory is almost empty now after the contents
are migrated to either concepts or tasks. This PR removes the contents
left over in this path.
* Use Terminated instead of Failed
Containers that terminate successfully (exit code 0) can also be restarted and it's the default behaviour is restartPolicy is not specified.
* Use Exited instead of Failed
In the upstream code base, there are cases where the field description
string contain substrings like '*', 'pods/*', '*/scale' and '*/*'.
When generating reference docs out of these Go comments, the Node.js
module used was incorrectly passing the asterisks as '<em>', i.e. a
mark for emphasize. This behavior has rendered the output documentation
very misleading. For example, in the definition for RuleWithOperations,
users can specify '*' as a wildcard for matching all apiGroups, all
resources. However, the generated docs is showing that an empty string
'' is used to match all apiGroups or resources. This is a serious bug
fixed by this PR.
Doc generator patch is included in PR to
kubernetes-incubator/reference-docs.
* Initial Kubefed AWS Route53 on-prem documentation
* Add flag requirement for kubefed init
* conform to style guidelines
* fix controller-manager wording
* move cut-off section from CoreDNS support
Since the default annotation prefix has been changed to "nginx.ingress.kubernetes.io" in nginx ingress controller, the examples in ingress doc should be updated.
* Document new OpenAPI endpoint
Document new OpenAPI endpoint and deprecation announcement for old endpoints.
* Remove out-of-date swagger spec information
Deprecation announcement is in line 29
* Update default behavior for endpoint HTTP headers
First-time kubeadm user here: The v1.10.0 docs indicate that config file use is experimental, but judging from the comments on https://github.com/kubernetes/kubernetes/pull/59288 it looks like new features are beginning to be supported only in the config file. controlPlaneEndpoint is super useful for us and while I suspect the kubeadm init docs will ultimately be re-written to emphasize the config file options rather than flags (with appropriate examples and descriptions as the flags have now), it would've saved us some time today if we'd seen controlPlaneEndpoint in the config file example.
* Add draft for blog migration post
* Small revisions
* Most important commit ever
* Feedback from kbarnard10
- Turn URLs into hyperlinks
- Remove one line
* Feedback from sarahkconway
- Specify that blog reviews are more transparent/streamlined
* Feedback from kbarnard10, part 2
Added "how to submit a blog post"
Revised "confidentiality"
* Feedback from kbarnard10, part 3
* Renamed file for date accuracy
* Changed date back, added email link
In previous commit, we have enabled showing the full group names for API
resources. However, in doing that, we broken links inside the reference
doc and links pointing to the api reference. This PR fixes this problem
using the revised doc generator.
* Add contrib guidelines for blog posts
* Add form guidelines
* Add TOC entry
* Renamed file
* Feedback from @heckj and @bradtopol
* Revised submission guidelines to include form
podtolerationrestriction does not encompass all the use cases of
podnodeselector, in a case where not all nodes are tainted, then
podtolerationrestriction can not ensure pods are scheduled on the
specific set of nodes.
Based on the discussion on kubernetes/kubernetes#40870, we'd better
clearly document that the endpoint IPs used by a service without
selectors cannot be virtual ones.
* Updated for adherence to style guide and the links to: /docs/user-guide/kubectl
Can someone please confirm what the "Coming soon" path to extend the API with custom resources is?
* Incorporated the changes suggested @heckj @zacharysarah
Could one of you please confirm What "Coming soon: " in line 82 stands for? Is there a name or definition or reference?
* Update api-overview.md
* Update api-overview.md
* fixed a typo
* Update api-overview.md
* hosting fonts locally
resolves#7955
- issues with using hosted fonts: excessive page load times due to
periodic firewall impact
* move jquery from google CDN to jquery site
* getting the CSS too, just in case
* WIP
* fixing layouts and assets
updating Gemfile.lock with bundle install (rvm use ruby-2.2.9)
Updated links in header and footer
switch to paginate v2 gem
comment sidebar logic
fixing css regression
retry paginate
updated local ruby version
reverting to original pagination gem
remove text, make heading roboto, next/prev as buttons
* reintoduce dir tree changes
format checking new posts
shrink fab-icons down to 33px
* reintoduce dir tree changes
format checking new posts
shrink fab-icons down to 33px
* next/prev buttons on posts and index
* Change "latest" to v1.10
* rename .md to match old blog and added explict permalinks for urls
* replacing a link to old blog
* fix image regression with {: .big-img} tag
* adding blog post
* formatting updates
* more formatting updates
* fixing numbering
* more number fixes
* list updates again
* changes based on Michelle's comment
* formatting update
* updated bullet points
* formatting fixes
* indentation fixes
* WIP
* fixing layouts and assets
updating Gemfile.lock with bundle install (rvm use ruby-2.2.9)
Updated links in header and footer
switch to paginate v2 gem
comment sidebar logic
fixing css regression
retry paginate
updated local ruby version
reverting to original pagination gem
remove text, make heading roboto, next/prev as buttons
* reintoduce dir tree changes
format checking new posts
shrink fab-icons down to 33px
* reintoduce dir tree changes
format checking new posts
shrink fab-icons down to 33px
* next/prev buttons on posts and index
* Change "latest" to v1.10
* rename .md to match old blog and added explict permalinks for urls
* replacing a link to old blog
"short-definition" is not correct.
In the YAML files like data/glossary/minikube.yaml,_data/glossary/application-architect.yaml,data/glossary/cla.yaml ..., "short-description" are used, not "short-definition".
Tested in minikube by replacing the zookeeper image with the pause container and the scheduler was able to schedule all 3 pods on the minikube node. Changing it to zk, made the pods zk-1 and zk-2 pending with scheduling failure as expected.
* imaged.md kubernetes version changed
"This was tested with a private docker repository as of 26 June with Kubernetes version This was tested with a private docker repository as of 26 June with Kubernetes version v0.19.3. It should also work for a private registry such as quay.io, but that has not been tested.
v0.19.3 changed to v1.9.3
* Update images.md
* Update images.md
We have been using redirections in many pages when referencing the API
docs generated. Since the relocation of the generated files, this is
becoming difficult to maintain. This PR redirects all such links to the
generated artifacts so we can easily detect missing links if any.
closes: #7874
* Add link for IBM Cloud Private-CE on Linux Containers project
IBM Cloud Private-CE (Community Edition) on Linux Containers is a Terraform/Packer/BASH based IaC to create a seven node (1 Boot, 1 Master, 1 Management, 1 Proxy and 3 Workers) LXD cluster on Linux Host. Supported versions are: ICP 2.1.0.1 + Kubernetes 1.8.3 and ICP 2.1.0.2 + Kubernetes 1.9.1
Goal of this project was to create a Terraform based solution that can be easily configured to meet user needs for development purposes. This IaC script can be applied to Local or Cloud based Linux Host (Ubuntu). Additionally, environment specific TFVARS can allow simpler integration with DevOps pipeline.
Detailed information can be found at https://github.com/HSBawa/icp-ce-on-linux-containers.
* Update verbiage to expand IaC
* 1.10 update (#7151)
* Fix partition value expected behaviour explanation (#7123)
Fixes issue #7057
* Correct "On-Premise" to "On-Premises"
* Updates the Calico installation page (#7094)
* All files for Haufe Groups case study (#7051)
* Fix typo (#7127)
* fix typo of device-plugins.md (#7106)
* fix broken links (#7136)
* Updated configure-service-account (#7147)
Error from server resolved by escaping kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "myregistrykey"}]}' JSON string by '\'
* Remove docs related to 'require-kubeconfig' (#7138)
With kubernetes/kubernetes#58367 merged, v1.10 will not use the
"require-kubeconfig" flag. The flag has become a no-op solely to ensure
existing deployments won't break.
* Added Verification Scenario for a Pod that Uses a PVC in Terminating State (#7164)
The below PR:
https://github.com/kubernetes/kubernetes/pull/55873
modified scheduler in such a way that scheduling of a pod that uses a PVC in Terminating state fails.
That's why verification of such scenario was added to documentation.
* fix LimitPodHardAntiAffinityTopology name (#7221)
* Document the removal of the KubeletConfigFile feature gate (#7140)
With kubernetes/kubernetes#58978 merged, the said feature gate is
removed. This PR removes texts related to the gate and revises the
Feature Gates reference to reflect this change.
* deprecate three admission controller (#7363)
* Document the removal of Accelerators feature gate (#7389)
The `Accelerators` feature gate will be removed in 1.11. 1.10 will be
its last mile.
References: kubernetes/kubernetes#57384
* Update local storage docs for beta (#7473)
* Document that HugePages feature gate is Beta (#7387)
The `HugePages` feature gate has graduated to Beta in v1.10. This PR
documents this fact.
* Add HyperVContainer feature gates (#7502)
* Remove the beta reference from Taints and Tolerations doc (#7493)
* Kms provider doc (#7479)
* Kms provider doc
* issue# 7399, Create KMS-provider.md and update encrypt-data.md
* address review comments
* Document that Device Plugin feature is Beta (1.10) (#7512)
* Add docs for CRD features for 1.10 (#7439)
* Add docs for CRD features for 1.10
* Add CustomResourcesSubresources to list of feature gates
* Add latest changes to custom resources doc
* Add crds as abbreviated alias (#7437)
* Bring PVC Protection Feature to Beta (#7165)
* Bring PVC Protection Feature to Beta
The PR: https://github.com/kubernetes/kubernetes/pull/59052
brought PVC Protection feature to beta.
That's why the documentation is updated accordingly.
* The PVC Protection feature was renamed to Storage Protection. That's why the documentation is updated.
* promote PodNodeSelector to stable; document detailed behavior (#7134)
* promote PodNodeSelector to stable; document detailed behavior
* respond to feedback
* Update CPU manager feature enabling (#7390)
With `CPUManager` feature graduating to beta. No explicit enabling is
required starting v1.10.
References: kubernetes/kubernetes#55977
* Adding block volumeMode documentation for local volumes. (#7531)
Code review comments.
Changed property to field.
Address tech review comment.
* remove description kubectl --show-all (#7574)
--show-all has been deprecated and set to true by default.
https://github.com/kubernetes/kubernetes/pull/60210
* fix description about contribute style guide (#7592)
* fix description about KUBECONFIG (#7589)
s/envrionment/environment
* fix description about cni (#7588)
s/simultanously/simultaneously/
* fix description about MutatingAdmissionWebhook and ValidatingAdmissionWebhook (#7587)
* fix description about persistent volume binding (#7590)
s/slighty/slightly/
* Doc change for configurable pod resolv.conf Beta (#7611)
* fix description about out of resource handling (#7597)
s/threshhold/threshold
* fix description about zookeeper (#7598)
s/achive/achieve
* fix description about kubeadm (#7594)
s/compatability/compatibility/
* fix description about kubeadm (#7593)
* fix description about kubeadm implementation details (#7595)
* fix description about api concepts (#7596)
* Storage Protection was renamed to Storage Object in Use Protection (#7576)
* Storage Protection was renamed to Storage Object in Use Protection
The K8s PR: https://github.com/kubernetes/kubernetes/pull/59901
renamed Storage Protection to Storage Object in Use Protection.
That's why the same is also renamed in the documentation.
* Moved Storage Object in Use Protection admission plugin description down according to alphabetic order.
* Use PSP from policy API group. (#7562)
* update kubeletconfig docs for v1.10, beta (#7561)
* Update port-forwarding docs (#7575)
* add pv protection description (#7620)
* fix description about client library (#7634)
* Add docs on configuring NodePort IP (#7631)
* Document that LocalStorageCapacityIsolation is beta (#7635)
A follow-up to the kubernetes/kubernetes#60159 change which has promoted
the `LocalStorageCapacityIsolation` feature gate to Beta.
* Update CoreDNS docs for beta (#7638)
* Update CoreDNS docs for beta
* Review comments
* Fix typo (#7640)
* Update feature gates move to beta (#7662)
* Added the inability to use colon ':' character as environment variable names and described workaround (#7657)
* merge master to 1.10, with fixes (#7682)
* Flag names changed (s/admission-control/enable-admission-plugins); disable-admissions-plugin entry added; removed reference to admission controller/plugins requiring set order (for v1.10), redundant example enabling specific plugin, and redundant version-specific info (#7449)
* Documentation for MountPropagation beta (#7655)
* Remove job's scale-related operations (#7684)
* authentication: document client-go exec plugins (#7648)
* authentication: document client-go exec plugins
* Update authentication.md
* Update local ephemeral storage feature to beta (#7685)
Update local ephemeral storage feature to beta
* Update docs for windows container resources (#7653)
* add server-side print docs (#7671)
* Create a task describing Pod process namespace sharing (#7489)
* Add external metrics to HPA docs (#7664)
* Add external metrics to HPA docs
* Update horizontal-pod-autoscale-walkthrough.md
* Apply review comments to HPA walkthrough
* remove description about "scale jobs" (#7712)
* CSI Docs for K8s v1.10 (#7698)
* Add a warning about increased memory consumption for audit logging feature. (#7725)
Signed-off-by: Mik Vyatskov <vmik@google.com>
* Update Audit Logging documentation for 1.10 (#7679)
Signed-off-by: Mik Vyatskov <vmik@google.com>
* Fix stage names in audit logging documentation (#7746)
Signed-off-by: Mik Vyatskov <vmik@google.com>
* Feature gate update for release 1.10 (#7742)
* State in the docs that the value of default Node labels are not reliable. (#7794)
* Kill the reference to --admission-control option (#7755)
The `--admission-control` option has been replaced by two new options in
v1.10. This PR kills the last appearance of the old option in the doc.
* Pvcprotection toc (#7807)
* Refreshing installation instructions (#7495)
* Refreshing installation instructions
Added conjure-up. Updated displays and juju versions to current versions.
* Updated anchors
* Fixed image value version typo (#7768)
Was inconsistent with other values
* Update flocker reference to the github repo (#7784)
* Fix typo in federation document (#7779)
* an user -> a user (#7778)
* Events are namespaced (#7767)
* fix 'monitoring' link lose efficacy problem' (#7764)
* docs/concepts/policy/pod-security-policy.md: minor fix. (#7659)
* Update downward-api-volume-expose-pod-information.md (#7771)
* Update downward-api-volume-expose-pod-information.md
The pod spec puts the downward api files into /etc/podinfo, not directly in /etc. Updated docs to reflect this fact.
* Update downward-api-volume-expose-pod-information.md
One more spot needed fixing.
* Update downward-api-volume-expose-pod-information.md
Yet another fix, in the container example.
* Add Amadeus Case Study (#7783)
* Add Amadeus Case Study
* add Amadeus logo
* Fixed Cyrillic с in 'kube-proxy-cm' (#7787)
There was a typo (wrong character) in kube-proxy-cm.yaml - Cyrillic с (UTF-8 0x0441) was used instead of Latin c.
* install-kubectl: choose one installation method (#7705)
The previous text layout suggested that all installations had to be done, one after another.
* Update install-kubeadm.md (#7781)
Add note to kubeadm install instruction to help install in other arch i.e. aarch64, ppc64le etc.
* repair failure link (#7788)
* repair failure link
* repair failure link
* do change as required
* Update k8s201.md (#7777)
* Update k8s201.md
Change instructions to download yams files directly from the website (as used in other pages.)
Added instructions to delete labeled pod to avoid warnings in the subsequent deployment step.
* Update k8s201.md
Added example of using the exposed host from the a node running Kubernetes. (This works on AWS with Weave; not able to test it on other variations...)
* Gramatical fix to kompose introduction (#7792)
The original wording didn't through very well. As much of the original sentence has been preserved as possible, primarily to ensure the kompose web address is see both in text and as a href link.
* update amadeus.html (#7800)
* Fix a missing word in endpoint reconciler section (#7804)
* add toc entry for pvcprotection downgrade issue doc
* Pvcprotection toc (#7809)
* Refreshing installation instructions (#7495)
* Refreshing installation instructions
Added conjure-up. Updated displays and juju versions to current versions.
* Updated anchors
* Fixed image value version typo (#7768)
Was inconsistent with other values
* Update flocker reference to the github repo (#7784)
* Fix typo in federation document (#7779)
* an user -> a user (#7778)
* Events are namespaced (#7767)
* fix 'monitoring' link lose efficacy problem' (#7764)
* docs/concepts/policy/pod-security-policy.md: minor fix. (#7659)
* Update downward-api-volume-expose-pod-information.md (#7771)
* Update downward-api-volume-expose-pod-information.md
The pod spec puts the downward api files into /etc/podinfo, not directly in /etc. Updated docs to reflect this fact.
* Update downward-api-volume-expose-pod-information.md
One more spot needed fixing.
* Update downward-api-volume-expose-pod-information.md
Yet another fix, in the container example.
* Add Amadeus Case Study (#7783)
* Add Amadeus Case Study
* add Amadeus logo
* Fixed Cyrillic с in 'kube-proxy-cm' (#7787)
There was a typo (wrong character) in kube-proxy-cm.yaml - Cyrillic с (UTF-8 0x0441) was used instead of Latin c.
* install-kubectl: choose one installation method (#7705)
The previous text layout suggested that all installations had to be done, one after another.
* Update install-kubeadm.md (#7781)
Add note to kubeadm install instruction to help install in other arch i.e. aarch64, ppc64le etc.
* repair failure link (#7788)
* repair failure link
* repair failure link
* do change as required
* Update k8s201.md (#7777)
* Update k8s201.md
Change instructions to download yams files directly from the website (as used in other pages.)
Added instructions to delete labeled pod to avoid warnings in the subsequent deployment step.
* Update k8s201.md
Added example of using the exposed host from the a node running Kubernetes. (This works on AWS with Weave; not able to test it on other variations...)
* Gramatical fix to kompose introduction (#7792)
The original wording didn't through very well. As much of the original sentence has been preserved as possible, primarily to ensure the kompose web address is see both in text and as a href link.
* update amadeus.html (#7800)
* Fix a missing word in endpoint reconciler section (#7804)
* add toc entry for pvcprotection downgrade issue doc
* revert TOC change
* Release 1.10 (#7818)
* Refreshing installation instructions (#7495)
* Refreshing installation instructions
Added conjure-up. Updated displays and juju versions to current versions.
* Updated anchors
* Fixed image value version typo (#7768)
Was inconsistent with other values
* Update flocker reference to the github repo (#7784)
* Fix typo in federation document (#7779)
* an user -> a user (#7778)
* Events are namespaced (#7767)
* fix 'monitoring' link lose efficacy problem' (#7764)
* docs/concepts/policy/pod-security-policy.md: minor fix. (#7659)
* Update downward-api-volume-expose-pod-information.md (#7771)
* Update downward-api-volume-expose-pod-information.md
The pod spec puts the downward api files into /etc/podinfo, not directly in /etc. Updated docs to reflect this fact.
* Update downward-api-volume-expose-pod-information.md
One more spot needed fixing.
* Update downward-api-volume-expose-pod-information.md
Yet another fix, in the container example.
* Add Amadeus Case Study (#7783)
* Add Amadeus Case Study
* add Amadeus logo
* Fixed Cyrillic с in 'kube-proxy-cm' (#7787)
There was a typo (wrong character) in kube-proxy-cm.yaml - Cyrillic с (UTF-8 0x0441) was used instead of Latin c.
* install-kubectl: choose one installation method (#7705)
The previous text layout suggested that all installations had to be done, one after another.
* Update install-kubeadm.md (#7781)
Add note to kubeadm install instruction to help install in other arch i.e. aarch64, ppc64le etc.
* repair failure link (#7788)
* repair failure link
* repair failure link
* do change as required
* Update k8s201.md (#7777)
* Update k8s201.md
Change instructions to download yams files directly from the website (as used in other pages.)
Added instructions to delete labeled pod to avoid warnings in the subsequent deployment step.
* Update k8s201.md
Added example of using the exposed host from the a node running Kubernetes. (This works on AWS with Weave; not able to test it on other variations...)
* Gramatical fix to kompose introduction (#7792)
The original wording didn't through very well. As much of the original sentence has been preserved as possible, primarily to ensure the kompose web address is see both in text and as a href link.
* update amadeus.html (#7800)
* Fix a missing word in endpoint reconciler section (#7804)
* Partners page updates (#7802)
* Partners page updates
* Update to ZTE link
* Make using sysctls a task instead of a concept (#6808)
Closes: #4505
* add a note when mount a configmap to pod (#7745)
* adjust a note format (#7812)
* Update docker-cli-to-kubectl.md (#7748)
* Update docker-cli-to-kubectl.md
Edited the document for adherence to the style guide and word usage.
* Update docker-cli-to-kubectl.md
* Incorporated the changes suggested.
* Mount propagation update to include docker config (#7854)
* update overridden config for 1.10 (#7847)
* update overridden config for 1.10
* fix config file per comments
* Update Extended Resource doc wrt cluster-level resources (#7759)
* Update service.md
`securityGroupName` is the required value when creating LoadBalancer type service in Azure.
I got the following error without `securityGroupName` value.
> Observed a panic: "invalid memory address or nil pointer dereference" (runtime error: invalid memory address or nil pointer dereference)
* Update service.md
- Original example (with <myservicename> replaced with my-svc) will result in the following error:
error: at least one tcp port specifier must be provided
- Use the same example in this section seems ideal
If you created the resource (on your local minikube) as instructed using:
kubectl create -f https://k8s.io/docs/concepts/cluster-administration/nginx-app.yaml
then, you probably want to delete it from your minikube, in that case, the correct command is the one proposed in this PR.
* Update docker-cli-to-kubectl.md
Edited the document for adherence to the style guide and word usage.
* Update docker-cli-to-kubectl.md
* Incorporated the changes suggested.
The original wording didn't through very well. As much of the original sentence has been preserved as possible, primarily to ensure the kompose web address is see both in text and as a href link.
* Update k8s201.md
Change instructions to download yams files directly from the website (as used in other pages.)
Added instructions to delete labeled pod to avoid warnings in the subsequent deployment step.
* Update k8s201.md
Added example of using the exposed host from the a node running Kubernetes. (This works on AWS with Weave; not able to test it on other variations...)
* Update downward-api-volume-expose-pod-information.md
The pod spec puts the downward api files into /etc/podinfo, not directly in /etc. Updated docs to reflect this fact.
* Update downward-api-volume-expose-pod-information.md
One more spot needed fixing.
* Update downward-api-volume-expose-pod-information.md
Yet another fix, in the container example.
* Correct spelling mistake
The whole file only appeared once
* Correct spell
Correct the word "resource" spell.
* Is "kube/.config" should be ".kube/config"
It seems that the file is ".kube/config"
* Correct spelling mistake
The whole file only appeared once
* Correct spell
Correct the word "resource" spell.
* Is "kube/.config" should be ".kube/config"
It seems that the file is ".kube/config"
* behaviour to behavior
* Guide for upgrading kubeadm HA clusters.
* kubeadm HA upgrade guide: text changes from code review.
* Guide for upgrading kubeadm HA clusters: proposed changes after second round of code review.
Pod is the object to be scheduled, So "pod to schedule onto a node " and "pod to schedule on" are not suitable in the doc. "pod to be scheduled onto a node" is better.
Made updates for files, related to IPv6. Note: The release notes
cover 1.9. When 1.10 release notes are added, the comment about
the /66 restriction for IPv6 can be removed.
* fixed the interacting with cluster section for the ubuntu installation
* made changes as per request from zacharysarah
* added rancher stub
* added rancher documentation
* fixed missing capture tag
* added ingress example, fixed languages as per changes in the PR
* fixed page index as per pr
* fixed rancher readme
* Add a note on availability of tcp_syncookies syctl
Sysctl `net.ipv4.tcp_syncookies` is not availalbe on 4.4 kernel
as it's not namespaced yet.
* updating to use {: .note} notation
per https://kubernetes.io/docs/home/contribute/style-guide/#note
This list on the sidebar isn't very useful:
- it's not an exhaustive list
- it's not an up-to-date list either
- design docs are not documentation (they're already stale)
- we already link to the full list from https://kubernetes.io/docs/reference/
home page
Also removing the 'docs/admin/ovs-networking.md' document as per
the pull request comments, it's no longer necessary.
Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
A common source of beffudlement when using local hypervisors or cloud
providers with peculiar interface setups, IP adressing, or network
policies for which kubelet cannot guess the right IP to use.
`awk` is being used so that the example works in CoreOS Container Linux
too.
Requested in kubernetes/kubeadm#203.
* Please explain N/A's meaning
Because N/A's meaning probably is Not Available/ Not applicable or Name and Address
* all "N/A" change to "Not Available"
all "N/A" change to "Not Available"
* "Available" change to "Applicable"
all "Available" change to "Applicable"
- Moved details of recent releases (1.8 and onward) to the top
- added missing "with" in "compatible with the Kubernetes Container Runtime Interface (CRI)"
* Updating troubleshooting
Changed debug method over to CDK Field Agent and replaced old logging suggestion with the logging page.
* Rewording to hopefully clarify
Please let me know if this still isn't clear. It's a deceptively dense word soup and I wonder if I need to just expand on it some to remove assumptions.
* Updating privileged container information
We now use privileged containers by default on GPU-enabled nodes.
* Changes for consistency
Replaced worker with node.
* Pull out build instructions
* General clarifications and remove reference to merged kube-proxy PR
* Updates to sample yaml files, and clarification on host OS version (2016/latest vs 1709 tags)
* Reordering for clarity
* Add tag for Server 1709
* Addressing feedback
* Address feedback
* Fixed cross-node preemption example
The constraint between P and Q should be pod affinity rather than anti-affinity in order to the example to be correct.
Fixes#7149
* Fixed example to emphasize Zone namespace in pod anti-affinity
The default sort in liquid is ASCIIbetical, but there is a built in
sort_natural that allows you to sort things in human sensible
ways. This updates the glossary list to use sort_natural instead.
Fixes issue #7491
Because API data volumes like downwardAPI are expected to be fully
managed by Kubernetes and are now mounted read-only, this causes
problems with other files in /etc like /etc/resolv.conf that Docker
tries to add to the volume. Our examples should show such volumes
being mounted to a dedicated subdirectory for the volume.
The term_id for Label is singular, but the file is plural. All the
rest of the terms in the glossary prefer singular for the glossary
reference. Harmonizing the label entry is helpful for consistency.
Update all in tree tooltip references at the same time.
* Update Service Catalog docs to meet style guidelines
* Address stevepe's comments
* Remove full-links to cluster operator and application developer in glossary
- In the provided configuration file for `kubeadm init` the value for
`apiserver-count` needs to be put in quotes.
- In addition to /etc/kubernetes/pki/ca.* also /etc/kubernetes/pki/sa.*
need to be copied to the additional masters. See [this
comment](https://github.com/kubernetes/kubeadm/issues/546#issuecomment-350241024) by
@petergardfjall for details.
If we are getting releases from the stable channel, I think the plan output would say stable instead of experimental. At least, that is what I see in this video, around 40:15 mins in: https://www.youtube.com/watch?v=x9doB5eJWgQ&feature=youtu.be
* Update Create an External Load Balancer Doc
The `Create an External Load Balancer` readme has a `Finding your IP address` section which describes steps that do not work when running the service in Minikube. @jimmidyson describes how to find your ip address while running in Minikube here: https://github.com/kubernetes/minikube/issues/384#issuecomment-234409957. This change adds this helpful bit to the docs.
* Update create-external-load-balancer.md
* Update create-external-load-balancer.md
Add note callout formatting
* Update and revise 'Configuration Best Practices'
* Tidy up, clarify, and reword some confusing sections
* Update names of Kubernetes objects per Style Guide
* Update references to ReplicationControllers to ReplicaSets/Deployments
* Update and add some new cross-references
* Remove some out-of-date text
* Explain why you should create a Service before its backend or client workloads
* Reword advice about labels
* Capitalize k8s object names
* Clarify reference titles
* Explain but deprecate the :latest tag on images
* Mention both kubectl apply and kubectl create
* Address @abiogenesis-now comments
* strawman structure
* updates from PR review/feedback
* consolidate usage of SIG Docs and how to volunteer into a single location
* adding into ToC
* updates for Zach
* re-organizing and adding back approver lgtm comment
* Add files via upload
Custom Resource Definition, that replaces Third Party Resources.
* Update customresourcedefinition.yaml
Minor formating error
* Update customresourcedefinition.yaml
missing id key
* Update customresourcedefinition.yaml
deleted aka key
* Update customresourcedefinition.yaml
Made a minor edit to "name" and "id" and added "aka" section, but should require a "related" section. The related section may have the Custom Resource term, but there is currently no glossary term for Custom Resource.
* Replace old zkOk.sh livenessProbe by zookeeper-ready
Fixes one part of the issue #7287
* Update probe script content with the zookeeper-ready
Fixes the part with shows/explains the probe script at issue #7287
* Fix the path to delete liveness probe
Issue #7287
* Replace zkOk.sh readinessProbe by zookeeper-ready
Fixes "Testing for Readiness" section in issue #7287
* Add instructions to remove docker images; fixes#6874
On cleanup of Minikube, adds instructions to optionally remove Docker images created in tutorial setup
* update wording of instructions to include flag
Updates the wording to explicitly match the shell command and flags used.
If we are getting releases from the stable channel, I think the plan output would say stable instead of experimental. At least, that is what I see in this video, around 40:15 mins in: https://www.youtube.com/watch?v=x9doB5eJWgQ&feature=youtu.be
* Update on install-kubectl.md
Added more info on the reason people may get "the connection to the server was refused error". It will help newbies understand the kubectl is a client that connects to a cluster. Hence, a Kubernetes cluster such as a minikube tool will be needed to verify that kubectl is functioning correctly.
* updating wording to remove redundancy
* Updates to Component Overview
* Changed VMs to machines -- it can be both VM or physical machine.
* Separated Addons from Master section, since it depends on an addon if it's components are executed on Master or Node.
* Fix ID of Kubelet glossary
* Removed fluentd and supervisord
These are not necessary to mention here in the overview.
* fluentd is one of Cluster-level Logging solutions briefly described in Addons Section
* supervisord is not required to be run on the Node
* Requested change - remove Addons manager reference
* After review updates
* Updated the Addons page reference
* Update security-context.md
The old link to `PodSecurityContext` was 404. Found another one by starting from a `Pod` in the API Reference. Hope it is the appropriate one.
* Fix broken link to SecurityContext
resolves#7289
specifically, if the individuals listed in these leaf-node OWNERS
files issue an `/lgtm` comment on documents, it will no longer be taken
as an approver lgtm override that will merge the documents. This
preserves them in being chosen for reviews to the documents, and still
supports them using `/lgtm` to indicate technical accuracy.
* Use EOF instead of EOL in HA guide
This is for consistency with the rest of the docs.
* Change indentation from 4 to 3 spaces
The number of spaces in indentation is expected to be divisible by 3.
By having 4 spaces, an extra space was added to the beginning of all
shell code sections, causing issues for heredoc interpretation on
copy/paste.
Fixes one part of the issue #7056 about patch command failing to update.
In this case it changes the image URL to another different than the used
previously to create the StatefulSet.
* Update the workloads API versions to 1.9 for rest of the docs
* Remove comments per CR feedback
* Add a comment to be clear about which versions will work with the example
* removed link to self
* removed reference to deprecated documentation
* revised confusing statement, added more recent link to Kelsey Hightower Kubecon2017 talk
This PR adds a link to the cluster autoscaler project documentation
which can help answer some questions related to the scaler internals.
Closes: #1408
* Add an API concepts document and describe terminology and API chunking
Create a new API reference page that covers some high level topics
- terminology, paths, verbs, watching resources, chunking, and content
type negotation.
* Update api-concepts.md
Adding review feedback
The sample yaml contains base64 encoded strings that were generated with
trailing returns. This is inconsistent to the result from the command in
which a user passes the key and value from command line. This PR removes
the trailing "Cg==" characters for consistency.
Closes: #7065
Indented code block after normal paragraph is not rendered well. So changed the paragraphs to ordered list in consistency with other parts of this document.
Updated with respect to Storage/Storage Classes _"A StorageClass provides a way for administrators to describe the “classes” of storage *they* offer."_
The "Configure a Pod to Use a PersistentVolume for Storage"-task specifies that the content should be located on "/mnt/data" and not "/tmp/data", however this is not reflected in the yaml.
Many people have refrained from reading the whole document and started using /tmp as a de-facto standard directory to store data. Needless to say, using /tmp for persistent data is a bad idea and for the sake of the people only reading the first page, it should be changed to /mnt
I'm updating this after having read https://github.com/spiffxp/community/blob/0b27ee08362b4bb3cb467145705aae9fa0450bea/contributors/devel/owners.md, and it seems that what we have listed as "reviewers" is more appropriate for "approvers" - and there's probably folks who should be on the set of reviewers that we don't have listed there...
PetSet is a *very* old term that dates back to v1.4. We should not
continue evangelize such a concept where there is no trace in code base
today.
Closes: #6484
* Updated 404 link to kubeadm ref
* Update ref link to Federation API
* Fix broken links
* Manual fixes to autogenerated links
* Revert "Manual fixes to autogenerated links"
This reverts commit 94dba97a08da323b97350f4bb74385352e3f8f13.
* Import docs from other repos
* imported test docs
* fix README copy
* Add ToC YAML and index page for imported docs.
* modify update-imported-docs.sh
* Add `imported` to global ToCs
* Add nav to imported section
* remove unnecessary scope for docs/imported
* update script w/ comments and directory root fixes
* use genCmd variable
* display output of generation command
* Update instructions
* Add Community to /docs/imported/index.md
* fix travis errors
* update README.md and fix community docs issues
* simplify code, add comment
* make sure the binary is used instead of `go run`
* add automated handling for links from imported files
Put the expression "quantum entanglement" in quotes to signal to non-native readers that its use is as a turn of phrase and has no special jargonic meaning in this context.
For specifying mount propagation, changes to flags on apiserver and
kubelet are required. This PR fixes the problem.
For more comprehensive list of feature gate settings, please refer to
kubernetes/website#6364.
Closes: #5766
Update extension api-server to include missing steps for auth delegation cluster role binding and extension-apiserver-authentication-reader role binding.
Had a lot of trouble finding the exact way to "un-do" the tainting example provided here. Even the great folks on Slack couldn't provide the correct command to achieve this, even though it seems so trivial now that I know it. :-)
I think "Configuring DNS Service" reads like "you don't have DNS, let's install
it and configure it". This is more like you already have a DNS service, let's
tweak a few things.
Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
Apparently someone managed to squeeze stuff in between network policy topics.
Bringing them next to each other for coherency.
Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
The code for these providers has already been removed, but the
documentation has not been kept up to date. This page should
undergo a more thorough re-write, but this serves as a useful
stopgap.
Update double quotes format in yaml to avoid issue on copy/paste action :-)
I lost 1 hour before seeing the issue of double quotes format in my yaml file through the logs
=> kubectl logs --namespace=kube-system $(kubectl get pods --namespace=kube-system -l k8s-app=kube-dns -o name) -c kubedns
The current link to the flannel plugin is confusing. There are more
detailed description on using flannel on the github project site.
We should avoid linking to the specific yaml file. This PR changes the
link to the general markdown file.
Closes: #3835
Closes: #2896
According to the report, the google/cadvisor#1422 has been closed.
However, the related issue has been fixed in google/cadvisor#1489 and
merged a long time ago. We can safely remove the known issue now.
In the previous version it read as if you could
specify the `propagationPolicy` on the Object itself,
which isn't possible.
Change the documentation to make it clear that the
`propagationPolicy` is set on the `deleteOptions`
argument when invoking a Object deletion function.
This PR attempts to:
* Generally clean up the bootstrapping token doc.
* Separate the authentication and signing features. Help users that
only want to enable the authenticator without the signer.
* Adds a warning about ConfigMap signing being susceptible to MITM
if the same token is reused.
Currently we have two diferent doc pages to configure pod using ConfigMaps.
There are redundency between these two docs and also it creates some
confusion using the doc. Merging these two docs into single page and removing
redundency etc.
Checks an additional variable named versionedurl for the version name,
and uses the value as the url to reference. If the versionedurl doesn't
contain an entry for the version the current path is used.
e.g.
versionedurl:
v1.8: /docs/home
v1.7: /docs/old-path-to-doc
Make the 'trademark usage page' a hyperlink, thus removing the display of the raw URL (and condensing the footer from three lines to two.)
I assume there is some legalese reason why this has to be on Every Page, but other Collaborative Projects don't have it at all.
This PR is to address the concern about labels used in service diagrams.
The PR adds a note to explain the `ServiceIP` shown in the figure
instead of redrawing and pushing a new diagram.
On k8s 1.9, using --discovery-token
kubeadm join --discovery-token abcdef.1234567890abcdef --discovery-token-unsafe-skip-ca-verification 1.2.3.4:6443`
returns an error, but the node joins successfully with
kubeadm join --token abcdef.1234567890abcdef --discovery-token-unsafe-skip-ca-verification 1.2.3.4:6443`
kubectl-container example no longer exists and it has not been usable for
more than a year. it's time we scrub references to it and delete the source
as well.
* Merge branch 'master' of https://github.com/kubernetes/website into release-1.9
* 'master' of https://github.com/kubernetes/website:
[maintenance] December link fixes (#6680)
Update audit.md (#6381)
Fixed typo
concepts/policy/pod-security-policy.md: fix broken links.
Fixed a typo `illgal`
Add glossory entry for ReplicaSet
# Conflicts:
# docs/concepts/policy/pod-security-policy.md
# docs/tasks/debug-application-cluster/audit.md
* Spelling correction and sentence capitalization.
- Corrected the spelling error for storing, was put in as 'stoing'.
- Capitalized list items.
- Added '.' at end of sentences in the list items.
* Workaround for Jekyllr frontmatter
* fix typo
* Update access-cluster.md with a comment that for IPv6
the user should use [::1] for the localhost
* Trivial change to open release branch
* Undo trivial change
* add service ipvs overview
* Add instructions on how to setup kubectl
* Document conntrack dependency for kube-proxy
* Add an a
This is kind of jarring / missing an article. I'm guessing it should either be ' to a rack of bare metal servers.' or '...to racks of bare metal servers.'.
* adding example responses for common issues
- support request
- code bug report
* Trivial change to open release branch
* Undo trivial change
* Signed-off-by: Ziqi Zhao <zhaoziqi@qiniu.com> (#5366)
Fix the not-working test case yaml for /doc/concepts/storage/volumes.md
* kubectl-overview
* temp fix for broken pod and deployment links
* Update Table of Solutions for Juju
* Revise certificates documentation (#5965)
* Update review-issues.md
Some edits for clarity and condensed language.
* Update init-containers.md
Fix leading spaces in commands.
* Update kubectl-overview.md
Fix format.
* Update clc.md
Fix format.
* Update openstack-heat.md
The url no need. just highlight.
* Typo
I believe this should be "users" not "uses"
* making explicit hostname uniq requirement
* Update scheduling-hugepages.md
* Update update-daemon-set.md
* fix redirection of PersistentVolume
* Update hpa.md
* update kubectl instruction
* Use the format of kubeadm init
* fix spelling error
guarnatees to guarantees
* add matchLabels description (#6020)
* search and replace for k8s.github.io to website (#6019)
* fix scale command of object-management (#6011)
* Update replicaset.md (#6009)
* Update secret.md (#6008)
* specify password for mysql image (#5990)
* specify password for mysql image
* specify password for mysql image
* link error for run-stateless-application-deployment.md (#5985)
* link error for run-stateless-application-deployment.md
* link error for run-stateless-application-deployment.md
* Add performance implications of inter-pod affinity/anti-affinity (#5979)
* 404 monthly maintenance - October 2017 (#5977)
* Updated redirects
* More redirects
* Add conjure-up to Turnkey Cloud Solutions list (#5973)
* Add conjure-up to Turnkey Cloud Solutions list
* Changed wording slightly
* change the StatefulSet to ReplicaSet in reference (#5968)
* Clarification of failureThreshold of probes (#5963)
* Mention usage of block storage version param (#5925)
Mention usage of block storage version (bs-version) parameter to
workaround attachment issues using older K8S versions on an OpenStack
cloud with path-based endpoints.
Resolves: https://github.com/kubernetes/kubernetes.github.io/issues/5924
* Update sysctl-cluster.md (#5894)
Include guide on enabling unsafe sysctls in minikube
* Avoid Latin phrases & format note (#5889)
* Avoid Latin phrases & format note
according the Documentation Style Guide
* Update scratch.md
* Update scratch.md
* resolves jekyll rendering error (#5976)
- chinese isn't understood for keys in YAML frontmatter in jekyll, so
replaced it with the english equivalent that doesn't throw the
following error on rendering:
Error reading file src/kubernetes.github.io/cn/docs/concepts/cluster-administration/device-plugins.md: (<unknown>): could not find expected ':' while scanning a simple key at line 4 column 1
* Change VM to pod. (#6022)
* Add link to custom metrics. (#6023)
* Rephrase core group. (#6024)
* Added explanation on context to when joining (#6018)
* Update create-cluster-kubeadm.md (#5761)
Update Canal version in pod network apply commands
* Fixes issue #5620 (#5869)
* Fixes issue #5620
Signed-off-by: Brad Topol <btopol@us.ibm.com>
* Restructured so that review process is for both current and upcoming
releases. Added content describing the use of tech reviewers.
* Removed incorrect Kubernetes reviewer link.
* Fixed tech reviewer URL to now use website
* Update pod-priority-preemption.md
fix-wrong-link-to-pod-preemption
* pod-security-policy.md: add links to the page about admission plugins.
* Adding all files for BlaBlaCar case study (#5857)
* Adding all files for BlaBlaCar case study
* Update blablacar.html
* Fix changed URL for google containers
* Add /docs/reference/auto-generated directory
* correct the downwardapi redirect
* Remove links using "here"
* Rename to /docs/reference/generated directory
* add Concept template
* Change title to just Ingress
* Link mistake (#6038)
* link mistake
* link mistake
* skip title check for skip_title_check.txt
* skip title check for skip_title_check.txt
* remove doesn't exist link.
* Fix podpreset task (#5705)
* Add a simple pod manifest to pod overview (#5986)
* Split PodPreset concept out from task doc (#5984)
* Add selector spec description (#5789)
* Add selector spec description
* Fix selector field explanation
* Put orphaned topics in TOC. (#6051)
* static-pod example bad format in the final page (#6050)
* static-pod example bad format in the final page
* static-pod example bad format in the final page
* static-pod example bad format in the final page
* static-pod example bad format in the final page
* static-pod example bad format in the final page
* Fix `backoffLimit` field misplacement (#6042)
It should be placed in JobSpec according to:
https://github.com/kubernetes/kubernetes/blob/master/api/swagger-spec/batch_v1.json#L1488-L1514
* Update addons.md (#6061)
* add info about VMware NSX-T CNI plugin (#5987)
* add info about VMware NSX-T CNI plugin
Hello,
I'm VMware Networking and Security Architect and would like to include short information about our CNI plugin implementation similar to what other vendors did
Best regards
Emil Gagala
* Update networking.md
* Update networking.md
* Update networking.md
* Update: Using universal zsh configuration (#5669)
* Update install-kubectl.md
Zsh is not only oh-my-zsh, so I added universal configuration for zsh that also can be used in prezto.
* fix merge error after rebase
* Operating etcd cluster for Kubernetes bad format in the final page (#6056)
* Operating etcd cluster for Kubernetes bad format in the final page
* Update configure-upgrade-etcd.md
* Update configure-upgrade-etcd.md
* Usage note and warning tags. (#6053)
* Usage note and warning tags.
* Update configure-upgrade-etcd.md
* Update configure-upgrade-etcd.md
* Document jekyll includes snippets
* Add jekyll includes to docs home toc
- Remove extra kubernetes home in toc
* document docker cgroupdriver req (#5937)
* Update test blacklists (#6063)
* Update toc check blacklist
* Update title check blacklist
* wip
* wip
* Fix typo
* Document unconfined apparmor profile
* Revert "Document the unconfined profile for AppArmor" (#6268)
* CRD Validation: remove alpha warning, change enable instructions to (#6066)
disable
* Documented service annotation for AWS ELB SSL policy
* kubeadm: add a note about the new `--print-join-command` flag.
This is a new flag for the `kubeadm token create` command.
* Add a note to PDB page
* Improve Kubeadm reference doc (#6103)
* automatically-generated kubeadm reference doc
* user-mantained kubeadm reference doc
* Documentation for CSIPersistentVolume
* change replicaset documentation to use apps/v1 APIs
* Update service.md
ipvs alpha version -> beta version
* Updated Deployment concept docs (#6494)
* Updated Deployment concept docs
* Addressed comments
* Documentation for volume scheduling alpha feature
* Update admission control docs for webhooks
* Improve DNS documentation (#6479)
* update ds for 1.9
* Update service.md
* Update service.md
* Revert "begin updating webhook documentation" (#6575)
* Update version numbers to include 1.9 (#6518)
* Update site versions for 1.9
* Removed 1.4 docs
* Update _config.yml
* Update _config.yml
* updates for raw block devices
* rbac: docs for aggregated cluster roles (#6474)
* Added IPv6 information for Kubelet arguments (#6498)
* Added IPv6 info to kube-proxy arguments
* Added IPv6 information for argument for kubelet
* Update PVC resizing documentation (#6487)
* Updates for Windows Server version 1709 with K8s v1.8 (#6180)
* Updated for WSv1709 and K8s v1.8
* Updated picture and CNI config
* Fixed formatting on CNI Config
* Updated docs to reference Microsoft/SDN GitHub docs
* fix typo
* Workaround for Jekyllr frontmatter
* Added section on features and limitations, with example yaml files.
* Update index.md
* Added kubeadm section, few other small fixes
* Few minor grammar fixes
* Update access-cluster.md with a comment that for IPv6
the user should use [::1] for the localhost
* Addressed a number of issues brought up against the base PR
* Fixed windows-host-setup link
* Rewrite PodSecurityPolicy guide
* Update index.md
Signed-off-by: Alin Balutoiu <abalutoiu@cloudbasesolutions.com>
Signed-off-by: Alin Gabriel Serdean <aserdean@ovn.org>
* Spelling correction and sentence capitalization.
- Corrected the spelling error for storing, was put in as 'stoing'.
- Capitalized list items.
- Added '.' at end of sentences in the list items.
* Update index.md
* Update index.md
* Addressed comments and rebased
* Fixed formatting
* Fixed formatting
* Updated header link
* Updated hyperlinks
* Updated warning
* formatting
* formatting
* formatting
* Revert "Update access-cluster.md with a comment that for IPv6"
This reverts commit 31e4dbdc25.
* Revert "fix typo"
This reverts commit c05678752d.
* Revert "Workaround for Jekyllr frontmatter"
This reverts commit b84ac59624.
* Fixed grammatical issues and reverted non-related commits
* Revert "Rewrite PodSecurityPolicy guide"
This reverts commit 5d39cfeae4.
* Revert "Spelling correction and sentence capitalization."
This reverts commit 47eed4346e.
* Fixed auto-numbering
* Minor formatting updates
* CoreDNS feature documentation (#6463)
* Initial placeholder PR for CoreDNS feature documentation
* Remove from admin, add content
* Fix missing endcapture
* Add to tasks.yml
* Review feedback
* Postpone Deletion of a Persistent Volume Claim in case It Is Used by a Pod (#6415)
* Postpone Deletion of a Persistent Volume Claim in case It Is Used by a Pod
A new feature PVC Protection was added into K8s 1.9 that's why this documentation change is needed.
* Added tag at the top of each new area.
* Fix typo
* Fix: switched on in (all kubelets) -> (all K8s components).
* Added link to admission controller
* Moved PVC Protection configuration into Before you begin section.
* Added steps how to verify PVC Protection feature.
* Fixes for admission controller plugin description and for PVC Protection description in PVC lifecycle.
* Testing official rendering of enumerations (1., 2., 3., etc.)
* Re-write to address comments from review.
* Fixed definition when a PVC is in active use by a pod.
* Change auditing docs page for 1.9 release (#6427)
* Change auditing docs page for 1.9 release
Signed-off-by: Mik Vyatskov <vmik@google.com>
* Address review comments
Signed-off-by: Mik Vyatskov <vmik@google.com>
* Address review comments
Signed-off-by: Mik Vyatskov <vmik@google.com>
* Address review comments
Signed-off-by: Mik Vyatskov <vmik@google.com>
* Fix broken link
Signed-off-by: Mik Vyatskov <vmik@google.com>
* short circuit deny docs (#6536)
* line wrap
* short circuit deny
* address comments
* Add kubeadm 1.9 upgrade docs (#6485)
* kubeadm: Improve kubeadm documentation for v1.9 (#6645)
* Update admission control docs for webhooks (re-send #6368) (#6650)
* Update admission control docs for webhooks
* update in response to comments
* Revamp rkt and add CRI-O as alternative runtime (#6371)
Signed-off-by: Lorenzo Fontana <lo@linux.com>
* Documented NLB for Kubernetes 1.9 (#6260)
* Added IPV6 information to setup cluster using kubeadm (#6465)
* Added IPV6 information to setup cluster using kubeadm
* Updated kubeadm.md & create-cluster-kubeadm.md with IPv6 related information
* Added IPv6 options for kubeadm --init & automated address binding for kube-proxy based on version of IP configured for API server)
* Changes to kubeadm.md as per comments
* Modified kubeadm.md and create-cluster-kubeadm.md
* Implemented changes requested by zacharysarah
* Removed autogenerated kubeadm.md changes
* StatefulSet 1.9 updates. (#6550)
* updates sts concept and tutorials to use 1.9 apps/v1
* Update statefulset.md
* clarify pod name label
* Garbage collection updates for 1.9 (#6555)
* 1.9 gc policy update
* carify deletion
* Couple nits for dnsConfig doc (#6652)
* Add doc for AllowedFlexVolume (#6563)
* Update OpenStack Cloud Provider API support for v1.9 (#6638)
* Flex volume is GA. Remove alpha notation. (#6666)
* Update generated ref docs for Kubernetes and Federation components. (#6658)
* Update generated ref docs for Kubernetes and Federation components.
* Rename kubectl-options to kubectl.
* Add title to kubectl.
* Fix double synopsis.
* Update Federation API ref docs for 1.9. (#6636)
* Update federation API ref docs.
* Move and redirect.
* Move generated Federation docs to the generated directory.
* Fix titles.
* Type
* Fix titles
* Update auto-generated Kubernetes APi ref docs. (#6646)
* Update kubectl commands for 1.9 (#6635)
* add ExtendedResourceToleration admission controller (#6618)
* Update API reference paths for v1.9 (#6681)
* Trivial change to open release branch
* Undo trivial change
* add service ipvs overview
* Add instructions on how to setup kubectl
* Document conntrack dependency for kube-proxy
* Add an a
This is kind of jarring / missing an article. I'm guessing it should either be ' to a rack of bare metal servers.' or '...to racks of bare metal servers.'.
* adding example responses for common issues
- support request
- code bug report
* Trivial change to open release branch
* Undo trivial change
* Signed-off-by: Ziqi Zhao <zhaoziqi@qiniu.com> (#5366)
Fix the not-working test case yaml for /doc/concepts/storage/volumes.md
* kubectl-overview
* temp fix for broken pod and deployment links
* Update Table of Solutions for Juju
* Revise certificates documentation (#5965)
* Update review-issues.md
Some edits for clarity and condensed language.
* Update init-containers.md
Fix leading spaces in commands.
* Update kubectl-overview.md
Fix format.
* Update clc.md
Fix format.
* Update openstack-heat.md
The url no need. just highlight.
* Typo
I believe this should be "users" not "uses"
* making explicit hostname uniq requirement
* Update scheduling-hugepages.md
* Update update-daemon-set.md
* fix redirection of PersistentVolume
* Update hpa.md
* update kubectl instruction
* Use the format of kubeadm init
* fix spelling error
guarnatees to guarantees
* add matchLabels description (#6020)
* search and replace for k8s.github.io to website (#6019)
* fix scale command of object-management (#6011)
* Update replicaset.md (#6009)
* Update secret.md (#6008)
* specify password for mysql image (#5990)
* specify password for mysql image
* specify password for mysql image
* link error for run-stateless-application-deployment.md (#5985)
* link error for run-stateless-application-deployment.md
* link error for run-stateless-application-deployment.md
* Add performance implications of inter-pod affinity/anti-affinity (#5979)
* 404 monthly maintenance - October 2017 (#5977)
* Updated redirects
* More redirects
* Add conjure-up to Turnkey Cloud Solutions list (#5973)
* Add conjure-up to Turnkey Cloud Solutions list
* Changed wording slightly
* change the StatefulSet to ReplicaSet in reference (#5968)
* Clarification of failureThreshold of probes (#5963)
* Mention usage of block storage version param (#5925)
Mention usage of block storage version (bs-version) parameter to
workaround attachment issues using older K8S versions on an OpenStack
cloud with path-based endpoints.
Resolves: https://github.com/kubernetes/kubernetes.github.io/issues/5924
* Update sysctl-cluster.md (#5894)
Include guide on enabling unsafe sysctls in minikube
* Avoid Latin phrases & format note (#5889)
* Avoid Latin phrases & format note
according the Documentation Style Guide
* Update scratch.md
* Update scratch.md
* resolves jekyll rendering error (#5976)
- chinese isn't understood for keys in YAML frontmatter in jekyll, so
replaced it with the english equivalent that doesn't throw the
following error on rendering:
Error reading file src/kubernetes.github.io/cn/docs/concepts/cluster-administration/device-plugins.md: (<unknown>): could not find expected ':' while scanning a simple key at line 4 column 1
* Change VM to pod. (#6022)
* Add link to custom metrics. (#6023)
* Rephrase core group. (#6024)
* Added explanation on context to when joining (#6018)
* Update create-cluster-kubeadm.md (#5761)
Update Canal version in pod network apply commands
* Fixes issue #5620 (#5869)
* Fixes issue #5620
Signed-off-by: Brad Topol <btopol@us.ibm.com>
* Restructured so that review process is for both current and upcoming
releases. Added content describing the use of tech reviewers.
* Removed incorrect Kubernetes reviewer link.
* Fixed tech reviewer URL to now use website
* Update pod-priority-preemption.md
fix-wrong-link-to-pod-preemption
* pod-security-policy.md: add links to the page about admission plugins.
* Adding all files for BlaBlaCar case study (#5857)
* Adding all files for BlaBlaCar case study
* Update blablacar.html
* Fix changed URL for google containers
* Add /docs/reference/auto-generated directory
* correct the downwardapi redirect
* Remove links using "here"
* Rename to /docs/reference/generated directory
* add Concept template
* Change title to just Ingress
* Link mistake (#6038)
* link mistake
* link mistake
* skip title check for skip_title_check.txt
* skip title check for skip_title_check.txt
* remove doesn't exist link.
* Fix podpreset task (#5705)
* Add a simple pod manifest to pod overview (#5986)
* Split PodPreset concept out from task doc (#5984)
* Add selector spec description (#5789)
* Add selector spec description
* Fix selector field explanation
* Put orphaned topics in TOC. (#6051)
* static-pod example bad format in the final page (#6050)
* static-pod example bad format in the final page
* static-pod example bad format in the final page
* static-pod example bad format in the final page
* static-pod example bad format in the final page
* static-pod example bad format in the final page
* Fix `backoffLimit` field misplacement (#6042)
It should be placed in JobSpec according to:
https://github.com/kubernetes/kubernetes/blob/master/api/swagger-spec/batch_v1.json#L1488-L1514
* Update addons.md (#6061)
* add info about VMware NSX-T CNI plugin (#5987)
* add info about VMware NSX-T CNI plugin
Hello,
I'm VMware Networking and Security Architect and would like to include short information about our CNI plugin implementation similar to what other vendors did
Best regards
Emil Gagala
* Update networking.md
* Update networking.md
* Update networking.md
* Update: Using universal zsh configuration (#5669)
* Update install-kubectl.md
Zsh is not only oh-my-zsh, so I added universal configuration for zsh that also can be used in prezto.
* fix merge error after rebase
* Operating etcd cluster for Kubernetes bad format in the final page (#6056)
* Operating etcd cluster for Kubernetes bad format in the final page
* Update configure-upgrade-etcd.md
* Update configure-upgrade-etcd.md
* Usage note and warning tags. (#6053)
* Usage note and warning tags.
* Update configure-upgrade-etcd.md
* Update configure-upgrade-etcd.md
* Document jekyll includes snippets
* Add jekyll includes to docs home toc
- Remove extra kubernetes home in toc
* document docker cgroupdriver req (#5937)
* Update test blacklists (#6063)
* Update toc check blacklist
* Update title check blacklist
* wip
* wip
* Fix typo
* Document unconfined apparmor profile
* Revert "Document the unconfined profile for AppArmor" (#6268)
* CRD Validation: remove alpha warning, change enable instructions to (#6066)
disable
* Documented service annotation for AWS ELB SSL policy
* kubeadm: add a note about the new `--print-join-command` flag.
This is a new flag for the `kubeadm token create` command.
* Add a note to PDB page
* Improve Kubeadm reference doc (#6103)
* automatically-generated kubeadm reference doc
* user-mantained kubeadm reference doc
* Documentation for CSIPersistentVolume
* change replicaset documentation to use apps/v1 APIs
* Update service.md
ipvs alpha version -> beta version
* Updated Deployment concept docs (#6494)
* Updated Deployment concept docs
* Addressed comments
* Documentation for volume scheduling alpha feature
* Update admission control docs for webhooks
* Improve DNS documentation (#6479)
* update ds for 1.9
* Update service.md
* Update service.md
* Revert "begin updating webhook documentation" (#6575)
* Update version numbers to include 1.9 (#6518)
* Update site versions for 1.9
* Removed 1.4 docs
* Update _config.yml
* Update _config.yml
* updates for raw block devices
* rbac: docs for aggregated cluster roles (#6474)
* Added IPv6 information for Kubelet arguments (#6498)
* Added IPv6 info to kube-proxy arguments
* Added IPv6 information for argument for kubelet
* Update PVC resizing documentation (#6487)
* Updates for Windows Server version 1709 with K8s v1.8 (#6180)
* Updated for WSv1709 and K8s v1.8
* Updated picture and CNI config
* Fixed formatting on CNI Config
* Updated docs to reference Microsoft/SDN GitHub docs
* fix typo
* Workaround for Jekyllr frontmatter
* Added section on features and limitations, with example yaml files.
* Update index.md
* Added kubeadm section, few other small fixes
* Few minor grammar fixes
* Update access-cluster.md with a comment that for IPv6
the user should use [::1] for the localhost
* Addressed a number of issues brought up against the base PR
* Fixed windows-host-setup link
* Rewrite PodSecurityPolicy guide
* Update index.md
Signed-off-by: Alin Balutoiu <abalutoiu@cloudbasesolutions.com>
Signed-off-by: Alin Gabriel Serdean <aserdean@ovn.org>
* Spelling correction and sentence capitalization.
- Corrected the spelling error for storing, was put in as 'stoing'.
- Capitalized list items.
- Added '.' at end of sentences in the list items.
* Update index.md
* Update index.md
* Addressed comments and rebased
* Fixed formatting
* Fixed formatting
* Updated header link
* Updated hyperlinks
* Updated warning
* formatting
* formatting
* formatting
* Revert "Update access-cluster.md with a comment that for IPv6"
This reverts commit 31e4dbdc25.
* Revert "fix typo"
This reverts commit c05678752d.
* Revert "Workaround for Jekyllr frontmatter"
This reverts commit b84ac59624.
* Fixed grammatical issues and reverted non-related commits
* Revert "Rewrite PodSecurityPolicy guide"
This reverts commit 5d39cfeae4.
* Revert "Spelling correction and sentence capitalization."
This reverts commit 47eed4346e.
* Fixed auto-numbering
* Minor formatting updates
* CoreDNS feature documentation (#6463)
* Initial placeholder PR for CoreDNS feature documentation
* Remove from admin, add content
* Fix missing endcapture
* Add to tasks.yml
* Review feedback
* Postpone Deletion of a Persistent Volume Claim in case It Is Used by a Pod (#6415)
* Postpone Deletion of a Persistent Volume Claim in case It Is Used by a Pod
A new feature PVC Protection was added into K8s 1.9 that's why this documentation change is needed.
* Added tag at the top of each new area.
* Fix typo
* Fix: switched on in (all kubelets) -> (all K8s components).
* Added link to admission controller
* Moved PVC Protection configuration into Before you begin section.
* Added steps how to verify PVC Protection feature.
* Fixes for admission controller plugin description and for PVC Protection description in PVC lifecycle.
* Testing official rendering of enumerations (1., 2., 3., etc.)
* Re-write to address comments from review.
* Fixed definition when a PVC is in active use by a pod.
* Change auditing docs page for 1.9 release (#6427)
* Change auditing docs page for 1.9 release
Signed-off-by: Mik Vyatskov <vmik@google.com>
* Address review comments
Signed-off-by: Mik Vyatskov <vmik@google.com>
* Address review comments
Signed-off-by: Mik Vyatskov <vmik@google.com>
* Address review comments
Signed-off-by: Mik Vyatskov <vmik@google.com>
* Fix broken link
Signed-off-by: Mik Vyatskov <vmik@google.com>
* short circuit deny docs (#6536)
* line wrap
* short circuit deny
* address comments
* Add kubeadm 1.9 upgrade docs (#6485)
* kubeadm: Improve kubeadm documentation for v1.9 (#6645)
* Update admission control docs for webhooks (re-send #6368) (#6650)
* Update admission control docs for webhooks
* update in response to comments
* Revamp rkt and add CRI-O as alternative runtime (#6371)
Signed-off-by: Lorenzo Fontana <lo@linux.com>
* Documented NLB for Kubernetes 1.9 (#6260)
* Added IPV6 information to setup cluster using kubeadm (#6465)
* Added IPV6 information to setup cluster using kubeadm
* Updated kubeadm.md & create-cluster-kubeadm.md with IPv6 related information
* Added IPv6 options for kubeadm --init & automated address binding for kube-proxy based on version of IP configured for API server)
* Changes to kubeadm.md as per comments
* Modified kubeadm.md and create-cluster-kubeadm.md
* Implemented changes requested by zacharysarah
* Removed autogenerated kubeadm.md changes
* StatefulSet 1.9 updates. (#6550)
* updates sts concept and tutorials to use 1.9 apps/v1
* Update statefulset.md
* clarify pod name label
* Garbage collection updates for 1.9 (#6555)
* 1.9 gc policy update
* carify deletion
* Couple nits for dnsConfig doc (#6652)
* Add doc for AllowedFlexVolume (#6563)
* Update OpenStack Cloud Provider API support for v1.9 (#6638)
* Flex volume is GA. Remove alpha notation. (#6666)
* Update generated ref docs for Kubernetes and Federation components. (#6658)
* Update generated ref docs for Kubernetes and Federation components.
* Rename kubectl-options to kubectl.
* Add title to kubectl.
* Fix double synopsis.
* Update Federation API ref docs for 1.9. (#6636)
* Update federation API ref docs.
* Move and redirect.
* Move generated Federation docs to the generated directory.
* Fix titles.
* Type
* Fix titles
* Update auto-generated Kubernetes APi ref docs. (#6646)
* Update kubectl commands for 1.9 (#6635)
* add ExtendedResourceToleration admission controller (#6618)
* Update API reference paths for v1.9 (#6681)
This is inline with minikube warning message:
```
WARNING: The xhyve driver is now deprecated and support for it will be removed in a future release.
Please consider switching to the hyperkit driver, which is intended to replace the xhyve driver.
See https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#hyperkit-driver for more information.
To disable this message, run [minikube config set WantShowDriverDeprecationNotification false]
```
* Greatly expanded custom resoure concept guide
Added section on how to decide if you need a custom resource or not.
Added section on how to decide if you want CRD or AA.
* Converted HTML tables to Markdown
* Add links, clean up first table
* configmap vs UDR
* ease of use comparison
* Advanced features
* More cleanup
* Addressed review comments.
* Move lists out of table cells
Attempt at making the left sidebar for /docs/reference more useful, I've got
some more sidebar improvements I'm saving for other PRs for this area.
Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
The link in the sample command "kubectl apply" pointed to a YAML file that was rendered wrongly. I replaced the problem link to a link to the same file on git, which avoids the rendering issue.
https://github.com/kubernetes/website/issues/6377
I added the clusterrolebinding command to the "Adding a cluster to a federation" section, plus I cleaned up the section to remove redundant text, and turned the instructions into a numbered list.
The configuration values section only mentions liveness probes which is confusing for the reader. Additionally liveness and readiness probes behave differently if they time out. Readiness probe will not restart the Pod but the documentation looks like it would.
For new readers without a detailed understanding of how deletion occurs, specifying foreground deletion first gives the needed context to understand what background deletion is eschewing.
* Update PodAffinity/PodAntiAffinity Use-Case
Updated PodAffinity use-case to reflect use of PodAntiAffinity. Under the previous Redis deployment manifest, each replica is not guaranteed its own node.
* add podAntiAffinity to web-server spec use-case
* Additional changes to PodAffinity/PodAntiAffinity Use-Case
Renames
Concepts → Extending the Kubernetes API
to
Concepts → Extending Kubernetes
Adds in subsections
Adds concept guides for other (non-API) extensions.
Subsequent commits will add an overview for all the ways to extend kubernetes,
hence the subsections in this commit.
Google Cloud has a new feature called "Open in Cloud Shell" which supports invoking a URL that auto-starts a cloud shell session (via in-browser ssh to an auto-provisioned VM) with an auto-cloned repo specified in the URL.
* Update maximum cluster size guidance
This document was published when v1.3 was the prevailing k8s version. This change provides newer guidance with respect to using large clusters.
* Update federation.md
Add documentation of all OpenStack provider options including an
indication as to which items are required versus optional and which
configuration blocks they must appear in.
Also adds a section detailing which services are required/expected by
the OpenStack provider implementation.
https://github.com/kubernetes/website/issues/5980
* Update install-kubectl.md
Zsh is not only oh-my-zsh, so I added universal configuration for zsh that also can be used in prezto.
* fix merge error after rebase
* add info about VMware NSX-T CNI plugin
Hello,
I'm VMware Networking and Security Architect and would like to include short information about our CNI plugin implementation similar to what other vendors did
Best regards
Emil Gagala
* Update networking.md
* Update networking.md
* Update networking.md
* static-pod example bad format in the final page
* static-pod example bad format in the final page
* static-pod example bad format in the final page
* static-pod example bad format in the final page
* static-pod example bad format in the final page
* Fixes issue #5620
Signed-off-by: Brad Topol <btopol@us.ibm.com>
* Restructured so that review process is for both current and upcoming
releases. Added content describing the use of tech reviewers.
* Removed incorrect Kubernetes reviewer link.
* Fixed tech reviewer URL to now use website
- chinese isn't understood for keys in YAML frontmatter in jekyll, so
replaced it with the english equivalent that doesn't throw the
following error on rendering:
Error reading file src/kubernetes.github.io/cn/docs/concepts/cluster-administration/device-plugins.md: (<unknown>): could not find expected ':' while scanning a simple key at line 4 column 1
This is kind of jarring / missing an article. I'm guessing it should either be ' to a rack of bare metal servers.' or '...to racks of bare metal servers.'.
This document is very good, but it does not mention anywhere how a node would obtain its own Pod CIDR when setting up static pod routing on something like bare metal.
I also think the kube-proxy section on this page should include *--cluster-cidr* in the "arguments to consider" area. I say should because I'm not confident that I'm right. If I omitted --cluster-cidr from the kube-proxy and controller manager, and found that my pod routing didn't work, adding the switch would be one of the first things I'd try.
The doc asks users to use `ps` command inside the nginx container, when
ps is not installed inside the container. So this commit adds that
command to install ps.
* change some chinese expression
* change some chinese expression
* Update cpu-memory-limit.md
* change some chinese expression
change some chinese expression
* Adding all files for BlaBlaCar case study
* Update blablacar.html
* 3 updated listings for partner page
* Revert "Update blablacar.html"
This reverts commit 73c21d64c56d3f2038530d66da8428f67d26ad76.
* Revert "Adding all files for BlaBlaCar case study"
This reverts commit d53523f21411ba28fe59e9d30e1169777e4c84f3.
* Adding all files for BlaBlaCar case study
* Adding KubeCon banners to community page and homepage
* Revert "Adding all files for BlaBlaCar case study"
This reverts commit d53523f21411ba28fe59e9d30e1169777e4c84f3.
Removing case study commit from branch
* Update index.html
The current Fine Job Queue page refers to a one-pod-per-job setup in the intro content (as in the Coarse Job Queue Page) but then proceeds to talk about a multiple jobs per pod setup. I've edited the intro content to reflect that.
* Removed unessary caracters when outputing the CA key hash using openssl
Removed unessary caracters when outputing the CA key hash using openssl.
* Changed CA key gathering cmd
Changed CA key gathering cmd to make it comatible with different versions of openssl
Update flannel script to use latest version.
1. It is fully compatible with previous versions (see [Release Notes](https://github.com/coreos/flannel/releases))
2. `kube-flannel-rbac.yml` was merged to `kube-flannel.yml`
* initial version of how to develop and debug locally with telepresence
* minor fixups
* add overview, prereq, steps blocks
* add whatsnext capture
* remove further reading header
* incorporate feedback from @radhikapc
* incorporate more feedback
1. There is no flag called `--trust-ca-file` in etcd and i presume it is `--trusted-ca-file`
2. Using the same key and cert peer.key and peer.cert for both peer communication and client communication, confuses user. So differentiated it.
* explain how to enable heapster on minikube
The docs which ask user to see if heapster is running,
this commit adds explanation of how you can enable heapster
on minikube Kubernetes cluster.
* Update assign-cpu-resource.md
* Update assign-memory-resource.md
For the 1.8.0 release, we found that kubeadm was enabling certificate
rotation, but didn't properly add the RBAC bindings to allow the new
CSRs to get auto-approved. As a stop-gap, we documented how to manually
approve these CSRs as part of the upgrade, but this change is to trade
those instructions for actually creating an RBAC binding to allow the
auto-approval to happen.
This has the added benefit that when certificates start to expire and
need to be rotated, the approval will be automatic, unlike the previous
one-off solution.
* GC now supports non-core resources
* Add two examples about how to analysis audits of kube-apiserver (#4264)
* Deprecate system:nodes binding
* [1.8] StatefulSet `initialized` annotation is now ignored.
* inits the kubeadm upgrade docs
addresses kubernetes/kubernetes.github.io/issues/4689
* adds kubeadm upgrade cmd to ToC
addresses kubernetes/kubernetes.github.io/issues/4689
* add workload placement docs
* ScaleIO - document udpate for 1.8
* Add documentation on storageClass.mountOptions and PV.mountOptions (#5254)
* Add documentation on storageClass.mountOptions and PV.mountOptions
* convert notes into callouts
* Add docs for CustomResource validation
add info about supported fields
* advanced audit beta features (#5300)
* Update job workload doc with backoff failure policy (#5319)
Add to the Jobs documentation how to use the new backoffLimit field that
limit the number of Pod failure before considering the Job as failed.
* Documented additional AWS Service annotations (#4864)
* Add device plugin doc under concepts/cluster-administration. (#5261)
* Add device plugin doc under concepts/cluster-administration.
* Update device-plugins.md
* Update device-plugins.md
Add meta description. Fix typo. Change bare metal deployment to manual deployment.
* Update device-plugins.md
Fix typo again.
* Update page.version. (#5341)
* Add documentation on storageClass.reclaimPolicy (#5171)
* [Advanced audit] use new herf for audit-api (#5349)
This tag contains all the changes in v1beta1 version. Update it now.
* Added documentation around creating the InitializerConfiguration for the persistent volume label controller in the cloud-controller-manager (#5255)
* Documentation for kubectl plugins (#5294)
* Documentation for kubectl plugins
* Update kubectl-plugins.md
* Update kubectl-plugins.md
* Updated CPU manager docs to match implementation. (#5332)
* Noted limitation of alpha static cpumanager.
* Updated CPU manager docs to match implementation.
- Removed references to CPU pressure node condition and evictions.
- Added note about new --cpu-manager-reconcile-period flag.
- Added note about node allocatable requirements for static policy.
- Noted limitation of alpha static cpumanager.
* Move cpu-manager task link to rsc mgmt section.
* init containers annotation removed in 1.8 (#5390)
* Add documentation for TaintNodesByCondition (#5352)
* Add documentation for TaintNodesByCondition
* Update nodes.md
* Update taint-and-toleration.md
* Update daemonset.md
* Update nodes.md
* Update taint-and-toleration.md
* Update daemonset.md
* Fix deployments (#5421)
* Document extended resources and OIR deprecation. (#5399)
* Document extended resources and OIR deprecation.
* Updated extended resources doc per reviews.
* reverts extra spacing in _data/tasks.yml
* addresses `kubeadm upgrade` review comments
Feedback from @chenopis, @luxas, and @steveperry-53 addressed with this commit
* HugePages documentation (#5419)
* Update cpu-management-policies.md (#5407)
Fixed the bad link.
Modified "cpu" to "CPU".
Added more 'yaml' as supplement.
* Update RBAC docs for v1 (#5445)
* Add user docs for pod priority and preemption (#5328)
* Add user docs for pod priority and preemption
* Update pod-priority-preemption.md
* More updates
* Update docs/admin/kubeadm.md for 1.8 (#5440)
- Made a couple of minor wording changes (not strictly 1.8 related).
- Did some reformatting (not strictly 1.8 related).
- Updated references to the default token TTL (was infinite, now 24 hours).
- Documented the new `--discovery-token-ca-cert-hash` and `--discovery-token-unsafe-skip-ca-verification` flags for `kubeadm join`.
- Added references to the new `--discovery-token-ca-cert-hash` flag in all the default examples.
- Added a new _Security model_ section that describes the security tradeoffs of the various discovery modes.
- Documented the new `--groups` flag for `kubeadm token create`.
- Added a note of caution under _Automating kubeadm_ that references the _Security model_ section.
- Updated the component version table to drop 1.6 and add 1.8.
- Update `_data/reference.yml` to try to get the sidebar fixed up and more consistent with `kubefed`.
* Update StatefulSet Basics for 1.8 release (#5398)
* addresses `kubeadm upgrade` review comments
2nd iteration review comments by @luxas
* adds kubelet upgrade section to kubeadm upgrade
* Fix a bulleted list on docs/admin/kubeadm.md. (#5458)
I updated this doc yesterday and I was absolutely sure I fixed this, but I just saw that this commit got lost somehow.
This was introduced recently in https://github.com/kubernetes/kubernetes.github.io/pull/5440.
* Clarify the API to check for device plugins
* Moving Flexvolume to separate out-of-tree section
* addresses `kubeadm upgrade` review comments
CC: @luxas
* fixes kubeadm upgrade index
* Update Stackdriver Logging documentation (#5495)
* Re-update WordPress and MySQL PV doc to use apps/v1beta2 APIs (#5526)
* Update statefulset concepts doc to use apps/v1beta2 APIs (#5420)
* add document on kubectl's behavior regarding initializers (#5505)
* Update docs/admin/kubeadm.md to cover self-hosting in 1.8. (#5497)
This is a new beta feature in 1.8.
* Update kubectl patch doc to use apps/v1beta2 APIs (#5422)
* [1.8] Update "Run Applications" tasks to apps/v1beta2. (#5525)
* Update replicated stateful application task for 1.8.
* Update single instance stateful app task for 1.8.
* Update stateless app task for 1.8.
* Update kubectl patch task for 1.8.
* fix the link of persistent storage (#5515)
* update the admission-controllers.md index.md what-is-kubernetes.md link
* fix the link of persistent storage
* Add quota support for local ephemeral storage (#5493)
* Add quota support for local ephemeral storage
update the doc to this alpha feature
* Update resource-quotas.md
* Updated Deployments concepts doc (#5491)
* Updated Deployments concepts doc
* Addressed comments
* Addressed more comments
* Modify allocatable storage to ephemeral-storage (#5490)
Update the doc to use ephemeral-storage instead of storage
* Revamped concepts doc for ReplicaSet (#5463)
* Revamped concepts doc for ReplicaSet
* Minor changes to call out specific versions for selector defaulting and
immutability
* Addressed doc review comments
* Remove petset documentations (#5395)
* Update docs to use batch/v1beta1 cronjobs (#5475)
* add federation job doc (#5485)
* add federation job doc
* Update job.md
Edits for clarity and consistency
* Update job.md
Fixed a typo
* update DaemonSet concept for 1.8 release (#5397)
* update DaemonSet concept for 1.8 release
* Update daemonset.md
Fix typo. than -> then
* Update bootstrap tokens doc for 1.8. (#5479)
* Update bootstrap tokens doc for 1.8.
This has some changes I missed when I was updating the main kubeadm documention:
- Bootstrap tokens are now beta, not alpha (https://github.com/kubernetes/features/issues/130)
- The apiserver flag to enable the authenticator changedin 1.8 (https://github.com/kubernetes/kubernetes/pull/51198)
- Added `auth-extra-groups` documentaion (https://github.com/kubernetes/kubernetes/pull/50933)
- Updated the _Token Management with `kubeadm`_ section to link to the main kubeadm docs, since it was just duplicated information.
* Update bootstrap-tokens.md
* Updated the Cassandra tutorial to use apps/v1beta2 (#5548)
* add docs for AllowPrivilegeEscalation (#5448)
Signed-off-by: Jess Frazelle <acidburn@microsoft.com>
* Add local ephemeral storage alpha feature in managing compute resource (#5522)
* Add local ephemeral storage alpha feature in managing compute resource
Since 1.8, we add the local ephemeral storage alpha feature as one
resource type to manage. Add this feature into the doc.
* Update manage-compute-resources-container.md
* Update manage-compute-resources-container.md
* Update manage-compute-resources-container.md
* Update manage-compute-resources-container.md
* Update manage-compute-resources-container.md
* Update manage-compute-resources-container.md
* Added documentation for Metrics Server (#5560)
* authorization: improve authorization debugging docs (#5549)
* Document mount propagation (#5544)
* Update /docs/setup/independent/create-cluster-kubeadm.md for 1.8. (#5524)
This introduction needed a couple of small tweaks to cover the `--discovery-token-ca-cert-hash` flag added in https://github.com/kubernetes/kubernetes/pull/49520 and some version bumps.
* Add task doc for alpha dynamic kubelet configuration (#5523)
* Fix input/output of selfsubjectaccess review (#5593)
* Add docs for implementing resize (#5528)
* Add docs for implementing resize
* Update admission-controllers.md
* Added link to PVC section
* minor typo fixes
* Update NetworkPolicy concept guide with egress and CIDR changes (#5529)
* update zookeeper tutorial for 1.8 release
* add doc for hostpath type (#5503)
* Federated Hpa feature doc (#5487)
* Federated Hpa feature doc
* Federated Hpa feature doc review fixes
* Update hpa.md
* Update hpa.md
* update cloud controller manager docs for v1.8
* Update cronjob with defaults information (#5556)
* Kubernetes 1.8 reference docs (#5632)
* Kubernetes 1.8 reference docs
* Kubectl reference docs for 1.8
* Update side bar with 1.8 kubectl and api ref docs links
* remove petset.md
* update on state of HostAlias in 1.8 with hostNetwork Pod support (#5644)
* Fix cron job deletion section (#5655)
* update imported docs (#5656)
* Add documentation for certificate rotation. (#5639)
* Link to using kubeadm page
* fix the command output
fix the command output
* fix typo in api/resources reference: "Worloads"
* Add documentation for certificate rotation.
* Create TOC entry for cloud controller manager. (#5662)
* Updates for new versions of API types
* Followup 5655: fix link to garbage collection (#5666)
* Temporarily redirect resources-reference to api-reference. (#5668)
* Update config for 1.8 release. (#5661)
* Update config for 1.8 release.
* Address reviewer comments.
* Switch references in HPA docs from alpha to beta (#5671)
The HPA docs still referenced the alpha version. This switches them to
talk about v2beta1, which is the appropriate version for Kubernetes 1.8
* Deprecate openstack heat (#5670)
* Fix typo in pod preset conflict example
Move container port definition to the correct line.
* Highlight openstack-heat provider deprecation
The openstack-heat provider for kube-up is being deprecated and will be
removed in a future release.
* Temporarily fix broken links by redirecting. (#5672)
* Fix broken links. (#5675)
* Fix render of code block (#5674)
* Fix broken links. (#5677)
* Add a small note about auto-bootstrapped CSR ClusterRoles (#5660)
* Update kubeadm install doc for v1.8 (#5676)
* add draft workloads api content for 1.8 (#5650)
* add draft workloads api content for 1.8
* edits per review, add tables, for 1.8 workloads api doc
* fix typo
* Minor fixes to kubeadm 1.8 upgrade guide. (#5678)
- The kubelet upgrade instructions should be done on every host, not
just worker nodes.
- We should just upgrade all packages, instead of calling out kubelet
specifically. This will also upgrade kubectl, kubeadm, and
kubernetes-cni, if installed.
- Draining nodes should also ignore daemonsets, and master errors can be
ignored.
- Make sure that the new kubeadm download is chmoded correctly.
- Add a step to run `kubeadm version` to verify after downloading.
- Manually approve new kubelet CSRs if rotation is enabled (known issue).
* Release 1.8 (#5680)
* Fix versions for 1.8 API ref docs
* Updates for 1.8 kubectl reference docs
* Kubeadm /docs/admin/kubeadm.md cleanup, editing. (#5681)
* Update docs/admin/kubeadm.md (mostly 1.8 related).
This is Fabrizio's work, which I'm committing along with my edits (in a commit on top of this).
* A few of my own edits to clarify and clean up some Markdown.
> NOTE: Please check the “Allow edits from maintainers” box (see image below) to
> [allow reviewers to fix problems](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) on your patch and speed up the review process.
> Please delete this note before submitting the pull request.

>
> For 1.14 Features: set Milestone to 1.14 and Base Branch to dev-1.14
>
> For Chinese localization, base branch to release-1.12
>
> For Korean Localization: set Base Branch to dev-1.13-ko.<latest team milestone>
@@ -9,7 +9,8 @@ These are just guidelines, not rules. Use your best judgment, and feel free to p
### Code of Conduct
Kubernetes follows the [Cloud Native Computing Foundation (CNCF) Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to Sarah Novotny[sarahnovotny@google.com](mailto:sarahnovotny@google.com) and/or Dan Kohn[dan@linuxfoundation.org](mailto:dan@linuxfoundation.org).
Kubernetes follows the [Cloud Native Computing Foundation (CNCF) Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to the
[Kubernetes Code of Conduct Committee](https://github.com/kubernetes/community/tree/master/committee-code-of-conduct) <conduct@kubernetes.io>.
### Documentation and Site Decisions
@@ -17,7 +18,7 @@ The [Kubernetes SIG Docs Discussion Group](https://groups.google.com/forum/#!for
### Style Guides and Templates
Before submitting a pull request to create new content, please review the [Kubernetes.io style guide](http://kubernetes.io/docs/home/contribute/style-guide/) and follow the [instructions for using page templates](http://kubernetes.io/docs/home/contribute/page-templates/).
Before submitting a pull request to create new content, please review the [Kubernetes.io style guide](http://kubernetes.io/docs/home/contribute/style-guide/) and follow the [instructions for using page templates](http://kubernetes.io/docs/home/contribute/page-templates/).
## Contributing to Documentation
@@ -26,10 +27,10 @@ Before submitting a pull request to create new content, please review the [Kuber
Kubernetes.io uses github issues to track documentation issues and requests. If you see a documentation issue, submit an issue using the following steps:
1. Check the [kubernetes.io issues list](https://github.com/kubernetes/kubernetes.github.io/issues) as you might find out the issue is a duplicate.
2. Use the [included template for every new issue](https://github.com/kubernetes/kubernetes.github.io/issues/new). When you create a bug report, include as many details as possible and include suggested fixes to the issue.
1. Check the [kubernetes.io issues list](https://github.com/kubernetes/website/issues) as you might find out the issue is a duplicate.
2. Use the [included template for every new issue](https://github.com/kubernetes/website/issues/new). When you create a bug report, include as many details as possible and include suggested fixes to the issue.
Note that code issues should be filed against the main kubernetes repository, while documentation issues should go in the kubernetes.io repository.
Note that code issues should be filed against the main kubernetes repository, while documentation issues should go in the kubernetes.io repository.
Ce référentiel contient toutes les informations nécessaires à la construction du site web et de la documentation de Kubernetes.
Nous sommes très heureux que vous vouliez contribuer !
## Contribuer à la rédaction des docs
Vous pouvez cliquer sur le bouton **Fork** en haut à droite de l'écran pour créer une copie de ce dépôt dans votre compte GitHub.
Cette copie s'appelle un *fork*.
Faites tous les changements que vous voulez dans votre fork, et quand vous êtes prêt à nous envoyer ces changements, allez dans votre fork et créez une nouvelle pull request pour nous le faire savoir.
Une fois votre pull request créée, un examinateur de Kubernetes se chargera de vous fournir une revue claire et exploitable.
En tant que propriétaire de la pull request, **il est de votre responsabilité de modifier votre pull request pour tenir compte des commentaires qui vous ont été fournis par l'examinateur de Kubernetes.**
Notez également que vous pourriez vous retrouver avec plus d'un examinateur de Kubernetes pour vous fournir des commentaires ou vous pourriez finir par recevoir des commentaires d'un autre examinateur que celui qui vous a été initialement affecté pour vous fournir ces commentaires.
De plus, dans certains cas, l'un de vos examinateur peut demander un examen technique à un [examinateur technique de Kubernetes](https://github.com/kubernetes/website/wiki/Tech-reviewers) au besoin.
Les examinateurs feront de leur mieux pour fournir une revue rapidement, mais le temps de réponse peut varier selon les circonstances.
Pour plus d'informations sur la contribution à la documentation Kubernetes, voir :
* [Commencez à contribuer](https://kubernetes.io/docs/contribute/start/)
* [Apperçu des modifications apportées à votre documentation](http://kubernetes.io/docs/contribute/intermediate#view-your-changes-locally)
* [Utilisation des modèles de page](http://kubernetes.io/docs/contribute/style/page-templates/)
* [Traduction de la documentation Kubernetes](https://kubernetes.io/docs/contribute/localization/)
## Exécuter le site localement en utilisant Docker
La façon recommandée d'exécuter le site web Kubernetes localement est d'utiliser une image spécialisée [Docker](https://docker.com) qui inclut le générateur de site statique [Hugo](https://gohugo.io).
> Si vous êtes sous Windows, vous aurez besoin de quelques outils supplémentaires que vous pouvez installer avec [Chocolatey](https://chocolatey.org). `choco install install make`
> Si vous préférez exécuter le site Web localement sans Docker, voir [Exécuter le site localement avec Hugo](#running-the-site-locally-using-hugo) ci-dessous.
Si vous avez Docker [up and running](https://www.docker.com/get-started), construisez l'image Docker `kubernetes-hugo' localement:
```bash
make docker-image
```
Une fois l'image construite, vous pouvez exécuter le site localement :
```bash
make docker-serve
```
Ouvrez votre navigateur à l'adresse: http://localhost:1313 pour voir le site.
Lorsque vous apportez des modifications aux fichiers sources, Hugo met à jour le site et force le navigateur à rafraîchir la page.
## Exécuter le site localement en utilisant Hugo
Voir la [documentation officielle Hugo](https://gohugo.io/getting-started/installing/) pour les instructions d'installation Hugo.
Assurez-vous d'installer la version Hugo spécifiée par la variable d'environnement `HUGO_VERSION` dans le fichier [`netlify.toml`](netlify.toml#L9).
Pour exécuter le site localement lorsque vous avez Hugo installé :
```bash
make serve
```
Le serveur Hugo local démarrera sur le port 1313.
Ouvrez votre navigateur à l'adresse: http://localhost:1313 pour voir le site.
Lorsque vous apportez des modifications aux fichiers sources, Hugo met à jour le site et force le navigateur à rafraîchir la page.
## Communauté, discussion, contribution et assistance
Apprenez comment vous engager avec la communauté Kubernetes sur la [page communauté](http://kubernetes.io/community/).
Vous pouvez joindre les responsables de ce projet à l'adresse :
환영합니다! 이 저장소는 쿠버네티스 웹사이트 및 문서화를 만드는 데 필요로 하는 모든 asset에 대한 공간을 제공합니다. 여러 분이 기여를 원한다는 사실에 매우 기쁩니다!
## 문서에 기여하기
이 저장소에 대한 복제본을 여러분의 GitHub 계정에 생성하기 위해 화면 오른쪽 위 영역에 있는 **Fork** 버튼을 클릭 가능합니 다. 이 복제본은 *fork* 라고 부릅니다. 여러분의 fork에서 원하는 임의의 변경 사항을 만들고, 해당 변경 사항을 보낼 준비가 되었다면, 여러분의 fork로 이동하여 새로운 풀 리퀘스트를 만들어 우리에게 알려주시기 바랍니다.
여러분의 풀 리퀘스트가 생생된 이후에는, 쿠버네티스 리뷰어가 명료하고 실행 가능한 피드백을 제공하는 책임을 담당할 것입니 다. 풀 리퀘스트의 오너로서, **쿠버네티스 리뷰어로부터 제공받은 피드백을 수용하기 위해 풀 리퀘스트를 수정하는 것은 여러분의 책임입니다.** 또한, 참고로 한 명 이상의 쿠버네티스 리뷰어가 여러분에게 피드백을 제공하는 상황에 처하거나, 또는 여러분에게 피드백을 제공하기로 원래 할당된 사람이 아닌 다른 쿠버네티스 리뷰어로부터 피드백을 받는 상황에 처할 수도 있습니다. 뿐만 아니라, 몇몇 상황에서는, 필요에 따라 리뷰어 중 한 명이 [쿠버네티스 기술 리뷰어](https://github.com/kubernetes/website/wiki/Tech-reviewers)로부터의 기술 리뷰를 요청할지도 모릅니다. 리뷰어는 제시간에 피드백을 제공하기 위해 최선을 다할 것이지만, 응답 시간은 상황에 따라 달라질 수도 있습니다.
쿠버네티스 웹사이트를 로컬에서 실행하기 위한 추천하는 방식은 [Hugo](https://gohugo.io) 정적 사이트 생성기를 포함하는 특 별한 [도커](https://docker.com) 이미지를 실행하는 것입니다.
> Windows에서 실행하는 경우, [Chocolatey](https://chocolatey.org)로 설치할 수 있는 명명 추가 도구를 필요로 할 것입니다. `choco install make`
> 도커를 사용하지 않고 웹사이트를 로컬에서 실행하기를 선호하는 경우에는, 아래 [Hugo를 사용한 로컬 사이트 실행하기](#hugo를-사용한-로컬-사이트-실행하기)를 살펴봅니다.
도커 [동작 및 실행](https://www.docker.com/get-started) 환경이 있는 경우, 로컬에서 `kubernetes-hugo` 도커 이미지를 빌드 합니다:
```bash
make docker-image
```
해당 이미지가 빌드된 이후, 사이트를 로컬에서 실행할 수 있습니다:
```bash
make docker-serve
```
브라우저에서 http://localhost:1313 를 열어 사이트를 살펴봅니다. 소스 파일에 변경 사항이 있을 때, Hugo는 사이트를 업데이 트하고 브라우저를 강제로 새로고침합니다.
## Hugo를 사용한 로컬 사이트 실행하기
Hugo 설치 안내를 위해서는 [공식 Hugo 문서화](https://gohugo.io/getting-started/installing/)를 살펴봅니다. [`netlify.toml`](netlify.toml#L9) 파일에 있는 `HUGO_VERSION` 환경 변수에서 지정된 Hugo 버전이 설치되었는지를 확인합니다.
Hugo가 설치되었을 때 로컬에서 사이트를 실행하기 위해 (다음을 실행합니다):
```bash
make serve
```
이를 통해 로컬 Hugo 서버를 1313번 포트에 시작합니다. 브라우저에서 http://localhost:1313 를 열어 사이트를 살펴봅니다. 소 스 파일에 변경 사항이 있을 때, Hugo는 사이트를 업데이트하고 브라우저를 강제로 새로고침합니다.
## 감사합니다!
쿠버네티스는 커뮤니티 참여와 함께 생존하며, 우리는 사이트 및 문서화에 대한 여러분의 컨트리뷰션에 대해 정말 감사하게 생각합니다!
You can click the **Fork** button in the upper-right area of the screen to create a copy of this repository in your GitHub account called a *fork*. Make any changes you want in your fork, and when you are ready to send those changes to us, go to your fork and create a new pull request to let us know about it.
Welcome! This repository houses all of the assets required to build the [Kubernetes website and documentation](https://kubernetes.io/). We're very pleased that you want to contribute!
## Contributing to the docs
You can click the **Fork** button in the upper-right area of the screen to create a copy of this repository in your GitHub account. This copy is called a *fork*. Make any changes you want in your fork, and when you are ready to send those changes to us, go to your fork and create a new pull request to let us know about it.
Once your pull request is created, a Kubernetes reviewer will take responsibility for providing clear, actionable feedback. As the owner of the pull request, **it is your responsibility to modify your pull request to address the feedback that has been provided to you by the Kubernetes reviewer.** Also note that you may end up having more than one Kubernetes reviewer provide you feedback or you may end up getting feedback from a Kubernetes reviewer that is different than the one originally assigned to provide you feedback. Furthermore, in some cases, one of your reviewers might ask for a technical review from a [Kubernetes tech reviewer](https://github.com/kubernetes/website/wiki/Tech-reviewers) when needed. Reviewers will do their best to provide feedback in a timely fashion but response time can vary based on circumstances.
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/)
The recommended way to run the Kubernetes website locally is to run a specialized [Docker](https://docker.com) image that includes the [Hugo](https://gohugo.io) static site generator.
> If you are running on Windows, you'll need a few more tools which you can install with [Chocolatey](https://chocolatey.org). `choco install make`
> If you'd prefer to run the website locally without Docker, see [Running the site locally using Hugo](#running-the-site-locally-using-hugo) below.
If you have Docker [up and running](https://www.docker.com/get-started), build the `kubernetes-hugo` Docker image locally:
```bash
make docker-image
```
Once the image has been built, you can run the site locally:
```bash
make docker-serve
```
Open up your browser to http://localhost:1313 to view the site. As you make changes to the source files, Hugo updates the site and forces a browser refresh.
## Running the site locally using Hugo
See the [official Hugo documentation](https://gohugo.io/getting-started/installing/) for Hugo installation instructions. Make sure to install the Hugo version specified by the `HUGO_VERSION` environment variable in the [`netlify.toml`](netlify.toml#L9) file.
To run the site locally when you have Hugo installed:
```bash
make serve
```
This will start the local Hugo server on port 1313. Open up your browser to http://localhost:1313 to view the site. As you make changes to the source files, Hugo updates the site and forces a browser refresh.
## Community, discussion, contribution, and support
Learn how to engage with the Kubernetes community on the [community page](http://kubernetes.io/community/).
Required. One or two lines that provide a minimum definition. Do not repeat the term. Write about the plural of the term. Prefer fragments. Model after tooltips. End with a period.
long-description:|
Optional. Longer additional text to appear after (in conjunction with) short description. Provide where the short description is not sufficient as the intro paragraph to a topic. Write complete but concise sentences.
**See /_includes/templates/glossary/README.md for the official style guide.**
Manage the deployment and scaling of a set of Pods, *and provide guarantees about ordering*. They do so by maintaining a *unique*, sticky identity for each of their Pods.
long-description:|
Like Deployments, StatefulSets manage Pods that are based on an identical container spec. However, although their specs are the same, the Pods in a StatefulSet are not interchangeable. Each Pod has a persistent identifier that it maintains across any rescheduling.
StatefulSets also operate according to the Controller pattern. You define your desired state in a StatefulSet *object*, and the StatefulSet *controller* makes any necessary updates to the get there from the current state.
This feature is currently in a *beta* state, meaning:
* The version names contain beta (e.g. v2beta3).
* Code is well tested. Enabling the feature is considered safe. Enabled by default.
* Support for the overall feature will not be dropped, though details may change.
* The schema and/or semantics of objects may change in incompatible ways in a subsequent beta or stable release. When this happens, we will provide instructions for migrating to the next version. This may require deleting, editing, and re-creating API objects. The editing process may require some thought. This may require downtime for applications that rely on the feature.
* Recommended for only non-business-critical uses because of potential for incompatible changes in subsequent releases. If you have multiple clusters that can be upgraded independently, you may be able to relax this restriction.
* **Please do try our beta features and give feedback on them! After they exit beta, it may not be practical for us to make more changes.**
<!-- Commenting out AnswerDash for now; we need to work on our list of questions/answers/design first
<!-- Start of AnswerDash script <script>var AnswerDash;!function(e,t,n,s,a){if(!t.getElementById(s)){var i,r=t.createElement(n),c=t.getElementsByTagName(n)[0];e[a]||(i=e[a]=function(){i.__oninit.push(arguments)},i.__oninit=[]),r.type="text/javascript",r.async=!0,r.src="https://p1.answerdash.com/answerdash.min.js?siteid=756",r.setAttribute("id",s),c.parentNode.insertBefore(r,c)}}(window,document,"script","answerdash-script","AnswerDash");</script> <!-- End of AnswerDash script -->
<p>Ready to get your hands dirty? Build a simple Kubernetes cluster that runs "Hello World" for Node.js.</p>
</div>
<divclass="nav-box">
<h3><ahref="/docs/home/">Documentation</a></h3>
<p>Learn how to use Kubernetes with the use of walkthroughs, samples, and reference documentation. You can even <ahref="/editdocs/"data-auto-burger-exclude>help contribute to the docs</a>!</p>
</div>
<divclass="nav-box">
<h3><ahref="/community/">Community</a></h3>
<p>If you need help, you can connect with other Kubernetes users and the Kubernetes authors, attend community events, and watch video presentations from around the web.</p>
blurb:'Tectonic is the enterprise-ready Kubernetes product, by CoreOS. It adds key features to allow you to manage, update, and control clusters in production.'
},
{
type:2,
name:'StackPointCloud',
logo:'stackpoint',
link:'https://stackpoint.io',
blurb:'StackPointCloud builds Stackpoint.io, the universal control plane for Kubernetes Anywhere -- compose and build your own infrastructure as easily as a DigitalOcean droplet at any public cloud provider.'
blurb:'The Puppet module for Kubernetes makes it easy to manage Pods, Replication Controllers, Services and more in Kubernetes, and to build domain-specific interfaces to one\'s Kubernetes configuration.'
blurb:'AppFormix is a cloud infrastructure performance optimization service helping enterprise operators streamline their cloud operations on any Kubernetes cloud. '
blurb:'The Canonical Distribution of Kubernetes enables you to operate Kubernetes clusters on demand on any major public cloud and private infrastructure.'
},
{
type:0,
name:'Distelli',
logo:'distelli',
link:'https://www.distelli.com/',
blurb:'Pipelines from your source repositories to your Kubernetes Clusters on any cloud.'
blurb:'The Nuage SDN platform provides policy-based networking between Kubernetes Pods and non-Kubernetes environments with visibility and security monitoring.'
},
{
type:0,
name:'Sematext',
logo:'sematext',
link:'https://sematext.com/kubernetes/',
blurb:'Logging & Monitoring: Automatic collection and processing of Metrics, Events and Logs for auto-discovered pods and Kubernetes nodes.'
},
{
type:0,
name:'Diamanti',
logo:'diamanti',
link:'https://www.diamanti.com/products/',
blurb:'Diamanti deploys containers with guaranteed performance using Kubernetes in the first hyperconverged appliance purpose built for containerized applications.'
},
{
type:0,
name:'Apprenda',
logo:'apprenda',
link:'https://apprenda.com/kubernetes-support/',
blurb:'Apprenda creates and supports modern, enterprise-ready application platforms for both cloud native and traditional application workloads.'
},
{
type:0,
name:'Aporeto',
logo:'aporeto',
link:'https://aporeto.com/trireme',
blurb:'Aporeto makes cloud-native applications secure by default without impacting developer velocity and works at any scale, on any cloud.'
},
{
type:2,
name:'Giant Swarm',
logo:'giant_swarm',
link:'https://giantswarm.io',
blurb:'Giant Swarm provides fully-managed Kubernetes Clusters in your location of choice, so you can focus on your product.'
blurb:'Mirantis builds and manages private clouds with open source software such as OpenStack, deployed as containers orchestrated by Kubernetes.'
},
{
type:0,
name:'Kubernetic',
logo:'kubernetic',
link:'https://kubernetic.com/',
blurb:'Kubernetic is a Kubernetes Desktop client that simplifies and democratizes cluster management for DevOps.'
},
{
type:1,
name:'Apprenda',
logo:'apprenda',
link:'https://apprenda.com/kubernetes-support/',
blurb:'Apprenda offers flexible and wide range of support plans for pure play Kubernetes on your choice of infrastructure, cloud provider and operating system.'
},
{
type:1,
name:'Reactive Ops',
logo:'reactive_ops',
link:'https://www.reactiveops.com/kubernetes/',
blurb:'ReactiveOps has written automation on best practices for infrastructure as code on GCP & AWS using Kubernetes, helping you build and maintain a world-class infrastructure at a fraction of the price of an internal hire.'
blurb:'Samsung SDS’s Cloud Native Computing Team offers expert consulting across the range of technical aspects involved in building services targeted at a Kubernetes cluster.'
blurb:'Container Solutions is a premium software consultancy that focuses on programmable infrastructure, offering our expertise in software development, strategy and operations to help you innovate at speed and scale.'
},
{
type:2,
name:'Jetstack',
logo:'jetstack',
link:'https://www.jetstack.io/',
blurb:'Jetstack is an organisation focused entirely on Kubernetes. They will help you to get the most out of Kubernetes through expert professional services and open source tooling. Get in touch, and accelerate your project.'
blurb:'Tigera builds high performance, policy driven, cloud native networking solutions for Kubernetes.'
},
{
type:1,
name:'Skippbox',
logo:'skippbox',
link:'http://www.skippbox.com/services/',
blurb:'Skippbox brings its Kubernetes expertise to help companies embrace Kubernetes on their way to digital transformation. Skippbox offers both professional services and expert training.'
},
{
type:1,
name:'Harbur',
logo:'harbur',
link:'https://harbur.io/',
blurb:'Based in Barcelona, Harbur is a consulting firm that helps companies deploy self-healing solutions empowered by Container technologies'
blurb:'ETA helps companies architect, implement, and manage scalable applications using Kubernetes on on public or private cloud.'
},
{
type:0,
name:'CloudPlex.io',
logo:'cloudplex',
link:'http://www.cloudplex.io',
blurb:'CloudPlex enables operations teams to visually deploy, orchestrate, manage, and monitor infrastructure, applications, and services in public or private cloud.'
},
{
type:1,
name:'Kumina',
logo:'kumina',
link:'https://www.kumina.nl/managed_kubernetes',
blurb:'Kumina creates Kubernetes solutions on your choice of infrastructure with around-the-clock management and unlimited support.'
blurb:'SUSE delivers Kubernetes as part of SUSE CaaS Platform and SUSE OpenStack Cloud, for enterprises that want truly open, open source solutions for cloud-native applications.'
blurb:'IBM Container Service is a managed k8s environment with built-in cluster security and isolation while leveraging services including Watson, IoT, Weather, etc.'
},
{
type:1,
name:'Kenzan',
logo:'Kenzan',
link:'http://kenzan.com/?ref=kubernetes',
blurb:'Kenzan is a software engineering and full-service consulting firm that provides customized, end-to-end solutions that drive change through digital transformation.'
},
{
type:0,
name:'Kublr',
logo:'kublr',
link:'http://kublr.com',
blurb:'Simplify your Kubernetes experience with a fully production-ready, enterprise-grade cluster management platform.'
},
{
type:0,
name:'Endocode AG',
logo:'endocode',
link:'https://endocode.com/kubernetes/',
blurb:'Endocode practices and teaches the open source way. Kernel to cluster - Dev to Ops. We offer Kubernetes trainings, services and support.'
blurb:'Architecture, implementation and operation of world-class Kubernetes solutions for cloud-native clients.'
},
{
type:1,
name:'Biarca',
logo:'biarca',
link:'http://biarca.io/',
blurb:'Biarca is a cloud services provider and key focus areas Key areas of focus for Biarca include Cloud Adoption Services, Infrastructure Services, DevOps Services and Application Services. Biarca leverages Kubernetes to deliver containerized solutions.'
blurb:'Claranet helps people migrate to the cloud and take full advantage of the new world it offers. We consult, design, build and proactively manage the right infrastructure and automation tooling for clients to achieve this.'
},
{
type:1,
name:'CloudKite',
logo:'cloudkite',
link:'https://cloudkite.io/',
blurb:'CloudKite.io helps companies build and maintain highly automated, resilient, and impressively performing software on Kubernetes.'
blurb:'CloudOps gets you hands-on with the K8s ecosystem via workshop/lab. Get prod ready K8s in cloud(s) of your choice with our managed services.'
},
{
type:2,
name:'Ghostcloud',
logo:'ghostcloud',
link:'https://www.ghostcloud.cn/ecos-kubernetes',
blurb:'EcOS is an enterprise-grade PaaS / CaaS based on Docker and Kubernetes, which makes it easier to configure, deploy and manage containerized applications.'
},
{
type:2,
name:'Contino',
logo:'contino',
link:'https://www.contino.io/',
blurb:'We help enterprise organizations adopt DevOps, containers and cloud computing. Contino is a global consultancy that enables regulated organizations to accelerate innovation through the adoption of modern approaches to software delivery.'
},
{
type:2,
name:'Heptio',
logo:'heptio',
link:'http://heptio.com',
blurb:'Heptio helps businesses of all sizes get closer to the vibrant Kubernetes community.'
},
{
type:2,
name:'Booz Allen Hamilton',
logo:'boozallenhamilton',
link:'https://www.boozallen.com/',
blurb:'Booz Allen partners with public and private sector clients to solve their most difficult challenges through a combination of consulting, analytics, mission operations, technology, systems delivery, cybersecurity, engineering, and innovation expertise.'
},
{
type:0,
name:'Applatix',
logo:'applatix',
link:'https://applatix.com/applatix-product/',
blurb:'Applatix helps build and run containerized apps on public cloud using Docker and Kubernetes.'
{% if concept %}<!-- check for this before going any further; if not present, skip to else at bottom -->
# Overview of {{concept}}s
{% if what_is %}
### What is a {{ concept }}?
{{ what_is }}
{% else %}
{% include templates/_errorthrower.md missing_block='what_is' heading='What is a (Concept)?' purpose='explains what this concept is and its purpose.' %}
{% endif %}
{% if when_to_use %}
### When to use {{ concept }}s
{{ when_to_use }}
{% else %}
{% include templates/_errorthrower.md missing_block='when_to_use' heading='When to use (Concept)' purpose='explains when to use this object.' %}
{% endif %}
{% if when_not_to_use %}
### When not to use {{ concept }}s
{{ when_not_to_use }}
{% else %}
{% include templates/_errorthrower.md missing_block='when_not_to_use' heading='When not to use (Concept)' purpose='explains when not to use this object.' %}
{% endif %}
{% if status %}
### {{ concept }} status
{{ status }}
{% else %}
{% include templates/_errorthrower.md missing_block='status' heading='Retrieving status for a (Concept)' purpose='explains how to retrieve a status description for this object.' %}
{% endif %}
{% if usage %}
#### Usage
{{ usage }}
{% else %}
{% include templates/_errorthrower.md missing_block='usage' heading='Usage' purpose='shows the most basic, common use case for this object, in the form of a code sample, command, etc, using tabs to show multiple approaches' %}
{% endif %}
<!-- continuing the "if concept" if/then: -->
{% else %}
### ERROR: You must define a "concept" variable
{: style="color:red" }
This template requires a variable called `concept` that is simply the name of the
concept for which you are giving an overview. This will be displayed in the
headings for the document.
To get rid of this message and take advantage of this template, define `concept`:
```liquid
{% raw %}{% assign concept="Replication Controller" %}{% endraw %}
```
Complete this task, then we'll walk you through preparing the rest of the document.
To write a glossary snippet, start with a copy of the template, [`/_data/glossary/_example.yml`](/_data/glossary/_example.yml). Make sure to provide (or omit) values for the following fields:
* (Required) `id`.
* This field must match the name of the glossary file itself (without the `*.yml` extension). It is *not* intended to be displayed to users, and is only used programmatically.
* (Required) `name`.
* The name of the term.
* (Required) `tags`.
* Must be one of the tags listed in kubernetes.github.io/_data/canonical-terms-tags.yml.
* (Required) `short description`.
* Make sure to replace the instructional text in the template with your content.
* (Optional) `formerly` and `related`.
* If you do not provide these values, remove the fields.
* (Optional) `long description`.
* If you do not provide a long description, remove the field -- that is, the complete key-value pair.
The `_example.yml` template also contains basic information about how to write your snippet. For additional guidance, continue reading this readme.
## Glossary snippet style guide
This style guide supplements the guidance provided in the glossary template. It's intended to help you think about what and how to write glossary definitions. For more general guidance on style, consult [the core docs style guide](https://kubernetes.io/docs/home/contribute/style-guide/).
### Minimum viable snippet:
Every snippet must include at least the short description. The long description is optional, but should be provided for terms that need additional clarification. For consistency with existing *Concept* definitions, *write your definitions as if the term is plural*.
**short-description** (Required): One line (or two short lines) that provides a minimum definition. Do not repeat the term. Prefer fragments. Model after tooltips. End with a period.
**long-description** (Optional): Longer additional text to appear after (in conjunction with) short description. Provide in cases where the short description is not sufficient for the intro paragraph to a topic. Write complete but concise sentences.
### Examples
```yaml
- name:Pod
- tags:
- Fundamental
- Workload
- API Object
- short-description:The smallest and simplest Kubernetes objects. Represent a set of running processes on your cluster.
- long-description:Pods most often run only a single container, and are managed by a Deployment.
```
```yaml
- name:Deployment
- tags:
- Fundamental
- Workload
- API Object
- short-description:Controllers that provide declarative updates for Pods and ReplicaSets.
- long-description:Deployments are responsible for creating and updating instances of an application.
```
### Thinking about definitions
* **Think of the short description as it would appear in a tooltip.** Is it sufficient to get the reader started? Is it short enough to be read inside a small UI element?
*Tip*: look at the API reference doc content (for example, https://kubernetes.io/docs/api-reference/v1.7/). Note, however, that this content should be used with care. The concept docs for Pod, for example, are clearer than the reference docs.
* **The long description should follow the short description to make a complete introduction to a topic.** (This is the content that appears at the top of the content, before any generated TOC.) Does it provide information that's not already clear from the short description? Does it provide information that readers should have a general sense of before they dive into the details of the topic it helps introduce?
*Tip:* the long description does not need to be long; it's intended to extend but not replace the short description. Look through current related docs for ideas. (The Deployment long description is taken from a tutorial, for example.)
{% include templates/glossary/_error.md term=term_data.name missing_block='short-description' purpose='concisely describes the key term in 1-2 lines' %}
{% endif %}
{% if include.length == "long" %}
{% if term_data.long-description %}
{{ term_data.long-description | markdownify }}
{% else %}
{% include templates/glossary/_error.md term=term_data.name missing_block='long-description' purpose='describes the key term in greater depth, supplementing the short-description' %}
{% include templates/_errorthrower.md missing_block='command' heading='kubectl (command)' purpose='names the kubectl command, so that the appropriate YAML file (from _data/kubectl) can be transformed into a page.' %}
{% include templates/_errorthrower.md missing_block='overview' purpose='states, in one or two sentences, the purpose of this document' %}
{% endif %}
* TOC
{: toc}
{% if prerequisites %}
## Before you begin
{{ prerequisites }}
{% else %}
{% include templates/_errorthrower.md missing_block='prerequisites' heading='Before you begin' purpose='lists action prerequisites and knowledge prerequisites' %}
{% endif %}
{% if steps %}
{{ steps }}
{% else %}
{% include templates/_errorthrower.md missing_block='steps' purpose='lists a sequence of numbered steps that accomplish the task.' %}
{% include templates/_errorthrower.md missing_block='overview' purpose='states, in one or two sentences, the purpose of this document' %}
{% endif %}
* TOC
{: toc}
{% if objectives %}
## Objectives
{{ objectives }}
{% else %}
{% include templates/_errorthrower.md missing_block='objectives' heading='Objectives' purpose='lists the objectives for this tutorial.' %}
{% endif %}
{% if prerequisites %}
## Before you begin
{{ prerequisites }}
{% else %}
{% include templates/_errorthrower.md missing_block='prerequisites' heading='Before you begin' purpose='lists action prerequisites and knowledge prerequisites' %}
{% endif %}
{% if lessoncontent %}
{{ lessoncontent }}
{% else %}
{% include templates/_errorthrower.md missing_block='lessoncontent' purpose='provides the lesson content for this tutorial.' %}
<h1> CASE STUDY:<imgsrc="http://c.mfcreative.com/i/logo/ancestry-on-dark.svg"width="22%"style="margin-bottom:-12px;margin-left:3px;"><br><divclass="subhead">Digging Into the Past With New Technology</div></h1>
</div>
<divclass="details">
Company <b>Ancestry</b> Location <b>Lehi, Utah</b> Industry <b>Internet Company, Online Services</b>
</div>
<hr>
<sectionclass="section1">
<divclass="cols">
<divclass="col1">
<h2>Challenge</h2>
Ancestry, the global leader in family history and consumer genomics, uses sophisticated engineering and technology to help everyone, everywhere discover the story of what led to them. The company has spent more than 30 years innovating and building products and technologies that at their core, result in real and emotional human responses. <ahref="https://www.ancestry.com">Ancestry</a> currently serves more than 2.6 million paying subscribers, holds 20 billion historical records, 90 million family trees and more than four million people are in its AncestryDNA network, making it the largest consumer genomics DNA network in the world. The company's popular website, <ahref="https://www.ancestry.com">ancestry.com</a>, has been working with big data long before the term was popularized. The site was built on hundreds of services, technologies and a traditional deployment methodology. "It's worked well for us in the past," says Paul MacKay, software engineer and architect at Ancestry, "but had become quite cumbersome in its processing and is time-consuming. As a primarily online service, we are constantly looking for ways to accelerate to be more agile in delivering our solutions and our products."
<br>
</div>
<divclass="col2">
<h2>Solution</h2>
The company is transitioning to cloud native infrastructure, using <ahref="https://www.docker.com">Docker</a> containerization, <ahref="https://kubernetes.io">Kubernetes</a> orchestration and <ahref="https://prometheus.io">Prometheus</a> for cluster monitoring.<br>
<br>
<h2>Impact</h2>
"Every single product, every decision we make at Ancestry, focuses on delighting our customers with intimate, sometimes life-changing discoveries about themselves and their families," says MacKay. "As the company continues to grow, the increased productivity gains from using Kubernetes has helped Ancestry make customer discoveries faster. With the move to Dockerization for example, instead of taking between 20 to 50 minutes to deploy a new piece of code, we can now deploy in under a minute for much of our code. We’ve truly experienced significant time savings in addition to the various features and benefits from cloud native and Kubernetes-type technologies."
</div>
</div>
</section>
<divclass="banner2">
<divclass="banner2text">
"At a certain point, you have to step back if you're going to push a new technology and get key thought leaders with engineers within the organization to become your champions for new technology adoption. At training sessions, the development teams were always the ones that were saying, 'Kubernetes saved our time tremendously; it's an enabler. It really is incredible.'"<br><br><spanstyle="font-size:16px">- PAUL MACKAY, SOFTWARE ENGINEER AND ARCHITECT AT ANCESTRY</span>
</div>
</div>
<sectionclass="section2">
<divclass="fullcol">
<h2>It started with a Shaky Leaf.</h2>
Since its introduction a decade ago, the Shaky Leaf icon has become one of Ancestry's signature features, which signals to users that there's a helpful hint you can use to find out more about your family tree.<br><br>
So when the company decided to begin moving its infrastructure to cloud native technology, the first service that was launched on <ahref="https://kubernetes.io">Kubernetes</a>, the open source platform for managing application containers across clusters of hosts, was this hint system. Think of it as Amazon's recommended products, but instead of recommending products the company recommends records, stories, or familial connections. "It was a very important part of the site," says Ancestry software engineer and architect Paul MacKay, "but also small enough for a pilot project that we knew we could handle in a very appropriate, secure way."<br><br>
And when it went live smoothly in early 2016, "our deployment time for this service literally was cut down from 50 minutes to 2 or 5 minutes," MacKay adds. "The development team was just thrilled because we're focused on supplying a great experience for our customers. And that means features, it means stability, it means all those things that we need for a first-in-class type operation."<br><br>
The stability of that Shaky Leaf was a signal for MacKay and his team that their decision to embrace cloud native technologies was the right one for the company. With a private data center, Ancestry built its website (which launched in 1996) on hundreds of services and technologies and a traditional deployment methodology. "It worked well for us in the past, but the sum of the legacy systems became quite cumbersome in its processing and was time-consuming," says MacKay. "We were looking for other ways to accelerate, to be more agile in delivering our solutions and our products."
</div>
</section>
<divclass="banner3">
<divclass="banner3text">
"And when it [Kubernetes] went live smoothly in early 2016, 'our deployment time for this service literally was cut down from 50 minutes to 2 or 5 minutes,' MacKay adds. 'The development team was just thrilled because we're focused on supplying a great experience for our customers. And that means features, it means stability, it means all those things that we need for a first-in-class type operation.'"
</div>
</div>
<sectionclass="section3">
<divclass="fullcol">
That need led them in 2015 to explore containerization. Ancestry engineers had already been using technology like <ahref="https://www.java.com/en/">Java</a> and <ahref="https://www.python.org">Python</a> on Linux, so part of the decision was about making the infrastructure more Linux-friendly. They quickly decided that they wanted to go with Docker for containerization, "but it always comes down to the orchestration part of it to make it really work," says MacKay.<br><br>
His team looked at orchestration platforms offered by <ahref="https://docs.docker.com/compose/">Docker Compose</a>, <ahref="http://mesos.apache.org">Mesos</a> and <ahref="https://www.openstack.org/software/">OpenStack</a>, and even started to prototype some homegrown solutions. And then they started hearing rumblings of the imminent release of Kubernetes v1.0. "At the forefront, we were looking at the secret store, so we didn't have to manage that all ourselves, the config maps, the methodology of seamless deployment strategy," he says. "We found that how Kubernetes had done their resources, their types, their labels and just their interface was so much further advanced than the other things we had seen. It was a feature fit."<br><br>
<divclass="quote">
Plus, MacKay says, "I just believed in the confidence that comes with the history that Google has with containerization. So we started out right on the leading edge of it. And we haven't looked back since."</div><br>
Which is not to say that adopting a new technology hasn't come with some challenges. "Change is hard," says MacKay. "Not because the technology is hard or that the technology is not good. It's just that people like to do things like they had done [before]. You have the early adopters and you have those who are coming in later. It was a learning experience on both sides."<br><br>
Figuring out the best deployment operations for Ancestry was a big part of the work it took to adopt cloud native infrastructure. "We want to make sure the process is easy and also controlled in the manner that allows us the highest degree of security that we demand and our customers demand," says MacKay. "With Kubernetes and other products, there are some good solutions, but a little bit of glue is needed to bring it into corporate processes and governances. It's like having a set of gloves that are generic, but when you really do want to grab something you have to make it so it's customized to you. That's what we had to do."<br><br>
Their best practices include allowing their developers to deploy into development stage and production, but then controlling the aspects that need governance and auditing, such as secrets. They found that having one namespace per service is useful for achieving that containment of secrets and config maps. And for their needs, having one container per pod makes it easier to manage and to have a smaller unit of deployment.
<br><br>
</div>
</section>
<divclass="banner4">
<divclass="banner4text">
"The success of Ancestry's first deployment of the hint system on Kubernetes helped create momentum for greater adoption of the technology."
</div>
</div>
<sectionclass="section4">
<divclass="fullcol">
With that process established, the time spent on deployment was cut down to under a minute for some services. "As programmers, we have what's called REPL: read, evaluate, print, and loop, but with Kubernetes, we have CDEL: compile, deploy, execute, and loop," says MacKay. "It's a very quick loop back and a great benefit to understand that when our services are deployed in production, they're the same as what we tested in the pre-production environments. The approach of cloud native for Ancestry provides us a better ability to scale and to accommodate the business needs as work loads occur."<br><br>
The success of Ancestry's first deployment of the hint system on Kubernetes helped create momentum for greater adoption of the technology. "Engineers like to code, they like to do features, they don't like to sit around waiting for things to be deployed and worrying about scaling up and out and down," says MacKay. "After a while the engineers became our champions. At training sessions, the development teams were always the ones saying, 'Kubernetes saved our time tremendously; it's an enabler; it really is incredible.' Over time, we were able to convince our management that this was a transition that the industry is making and that we needed to be a part of it."<br><br>
A year later, Ancestry has transitioned a good number of applications to Kubernetes. "We have many different services that make up the rich environment that [the website] has from both the DNA side and the family history side," says MacKay. "We have front-end stacks, back-end stacks and back-end processing type stacks that are in the cluster."<br><br>
The company continues to weigh which services it will move forward to Kubernetes, which ones will be kept as is, and which will be replaced in the future and thus don't have to be moved over. MacKay estimates that the company is "approaching halfway on those features that are going forward. We don't have to do a lot of convincing anymore. It's more of an issue of timing with getting product management and engineering staff the knowledge and information that they need."
</div>
</section>
<divclass="banner5">
<divclass="banner5text">
"... 'I believe in Kubernetes. I believe in containerization. I think
if we can get there and establish ourselves in that world, we will be further along and far better off being agile and all the things we talk about,
and it'll go forward.'"
</div>
</div>
<sectionclass="section5">
<divclass="fullcol">
Looking ahead, MacKay sees Ancestry maximizing the benefits of Kubernetes in 2017. "We're very close to having everything that should be or could be in a Linux-friendly world in Kubernetes by the end of the year," he says, adding that he's looking forward to features such as federation and horizontal pod autoscaling that are currently in the works. "Kubernetes has been very wonderful for us and we continue to ride the wave."<br><br>
That wave, he points out, has everything to do with the vibrant Kubernetes community, which has grown by leaps and bounds since Ancestry joined it as an early adopter. "This is just a very rough way of judging it, but on Slack in June 2015, there were maybe 500 on there," MacKay says. "The last time I looked there were maybe 8,500 just on the Slack channel. There are so many major companies and different kinds of companies involved now. It's the variety of contributors, the number of contributors, the incredibly competent and friendly community."<br><br>
As much as he and his team at Ancestry have benefited from what he calls "the goodness and the technical abilities of many" in the community, they've also contributed information about best practices, logged bug issues and participated in the open source conversation. And they've been active in attending <ahref="https://www.meetup.com/Utah-Kubernetes-Meetup/">meetups</a> to help educate and give back to the local tech community in Utah. Says MacKay: "We're trying to give back as far as our experience goes, rather than just code."
<br><br>When he meets with companies considering adopting cloud native infrastructure, the best advice he has to give from Ancestry's Kubernetes journey is this: "Start small, but with hard problems," he says. And "you need a patron who understands the vision of containerization, to help you tackle the political as well as other technical roadblocks that can occur when change is needed."<br><br>
With the changes that MacKay's team has led over the past year and a half, cloud native will be part of Ancestry's technological genealogy for years to come. MacKay has been such a champion of the technology that he says people have jokingly accused him of having a Kubernetes tattoo.<br><br>
"I really don't," he says with a laugh. "But I'm passionate. I'm not exclusive to any technology; I use whatever I need that's out there that makes us great. If it's something else, I'll use it. But right now I believe in Kubernetes. I believe in containerization. I think if we can get there and establish ourselves in that world, we will be further along and far better off being agile and all the things we talk about, and it'll go forward."<br><br>
He pauses. "So, yeah, I guess you can say I'm an evangelist for Kubernetes," he says. "But I'm not getting a tattoo!"
Company <b>Box</b> Location <b>Redwood City, California</b> Industry <b>Technology</b>
</div>
<hr>
<sectionclass="section1">
<divclass="cols">
<divclass="col1">
<h2>Challenge</h2>
Founded in 2005, the enterprise content management company allows its more than 50 million users to manage content in the cloud. <ahref="https://www.box.com/home">Box</a> was built primarily with bare metal inside the company’s own data centers, with a monolithic PHP code base. As the company was expanding globally, it needed to focus on "how we run our workload across many different cloud infrastructures from bare metal to public cloud," says Sam Ghods, Cofounder and Services Architect of Box. "It’s been a huge challenge because of different clouds, especially bare metal, have very different interfaces."
<br>
</div>
<divclass="col2">
<h2>Solution</h2>
Over the past couple of years, Box has been decomposing its infrastructure into microservices, and became an early adopter of, as well as contributor to, <ahref="http://kubernetes.io/">Kubernetes</a> container orchestration. Kubernetes, Ghods says, has allowed Box’s developers to "target a universal set of concepts that are portable across all clouds."<br><br>
<h2>Impact</h2>
"Before Kubernetes," Ghods says, "our infrastructure was so antiquated it was taking us more than six months to deploy a new microservice. Today, a new microservice takes less than five days to deploy. And we’re working on getting it to an hour."
</div>
</div>
</section>
<divclass="banner2">
<divclass="banner2text">
"We looked at a lot of different options, but Kubernetes really stood out....the fact that on day one it was designed to run on bare metal just as well as Google Cloud meant that we could actually migrate to it inside of our data centers, and then use those same tools and concepts to run across public cloud providers as well."<br><br><spanstyle="font-size:15px;letter-spacing:0.08em">- SAM GHOUDS, CO-FOUNDER AND SERVICES ARCHITECT OF BOX</span>
</div>
</div>
<sectionclass="section2">
<divclass="fullcol">
<h2>In the summer of 2014, Box was feeling the pain of a decade’s worth of hardware and software infrastructure that wasn’t keeping up with the company’s needs.</h2>
A platform that allows its more than 50 million users (including governments and big businesses like <ahref="https://www.ge.com/">General Electric</a>) to manage and share content in the cloud, Box was originally a <ahref="http://php.net/">PHP</a> monolith of millions of lines of code built exclusively with bare metal inside of its own data centers. It had already begun to slowly chip away at the monolith, decomposing it into microservices. And "as we’ve been expanding into regions around the globe, and as the public cloud wars have been heating up, we’ve been focusing a lot more on figuring out how we run our workload across many different environments and many different cloud infrastructure providers," says Box Cofounder and Services Architect Sam Ghods. "It’s been a huge challenge thus far because of all these different providers, especially bare metal, have very different interfaces and ways in which you work with them."<br><br>
Box’s cloud native journey accelerated that June, when Ghods attended <ahref="https://www.docker.com/events/dockercon">DockerCon</a>. The company had come to the realization that it could no longer run its applications only off bare metal, and was researching containerizing with Docker, virtualizing with OpenStack, and supporting public cloud.<br><br>
At that conference, Google announced the release of its Kubernetes container management system, and Ghods was won over. "We looked at a lot of different options, but Kubernetes really stood out, especially because of the incredibly strong team of <ahref="https://research.google.com/pubs/pub43438.html">Borg</a> veterans and the vision of having a completely infrastructure-agnostic way of being able to run cloud software," he says, referencing Google’s internal container orchestrator Borg. "The fact that on day one it was designed to run on bare metal just as well as <ahref="https://cloud.google.com/">Google Cloud</a> meant that we could actually migrate to it inside of our data centers, and then use those same tools and concepts to run across public cloud providers as well."<br><br>
Another plus: Ghods liked that <ahref="https://kubernetes.io/">Kubernetes</a> has a universal set of API objects like pod, service, replica set and deployment object, which created a consistent surface to build tooling against. "Even PaaS layers like <ahref="https://www.openshift.com/">OpenShift</a> or <ahref="http://deis.io/">Deis</a> that build on top of Kubernetes still treat those objects as first-class principles," he says. "We were excited about having these abstractions shared across the entire ecosystem, which would result in a lot more momentum than we saw in other potential solutions."<br><br>
Box deployed Kubernetes in a cluster in a production data center just six months later. Kubernetes was then still pre-beta, on version 0.11. They started small: The very first thing Ghods’s team ran on Kubernetes was a Box API checker that confirms Box is up. "That was just to write and deploy some software to get the whole pipeline functioning," he says. Next came some daemons that process jobs, which was "nice and safe because if they experienced any interruptions, we wouldn’t fail synchronous incoming requests from customers."
</div>
</section>
<divclass="banner3">
<divclass="banner3text">
"As we’ve been expanding into regions around the globe, and as the public cloud wars have been heating up, we’ve been focusing a lot more on figuring out how we [can have Kubernetes help] run our workload across many different environments and many different cloud infrastructure providers."
</div>
</div>
<sectionclass="section3">
<divclass="fullcol">
The first live service, which the team could route to and ask for information, was launched a few months later. At that point, Ghods says, "We were comfortable with the stability of the Kubernetes cluster. We started to port some services over, then we would increase the cluster size and port a few more, and that’s ended up to about 100 servers in each data center that are dedicated purely to Kubernetes. And that’s going to be expanding a lot over the next 12 months, probably too many hundreds if not thousands."<br><br>
While observing teams who began to use Kubernetes for their microservices, "we immediately saw an uptick in the number of microservices being released," Ghods notes. "There was clearly a pent-up demand for a better way of building software through microservices, and the increase in agility helped our developers be more productive and make better architectural choices."
<br><br><divclass="quote">"There was clearly a pent-up demand for a better way of building software through microservices, and the increase in agility helped our developers be more productive and make better architectural choices."</div><br>
Ghods reflects that as early adopters, Box had a different journey from what companies experience now. "We were definitely lock step with waiting for certain things to stabilize or features to get released," he says. "In the early days we were doing a lot of contributions [to components such as kubectl apply] and waiting for Kubernetes to release each of them, and then we’d upgrade, contribute more, and go back and forth several times. The entire project took about 18 months from our first real deployment on Kubernetes to having general availability. If we did that exact same thing today, it would probably be no more than six."<br><br>
In any case, Box didn’t have to make too many modifications to Kubernetes for it to work for the company. "The vast majority of the work our team has done to implement Kubernetes at Box has been making it work inside of our existing (and often legacy) infrastructure," says Ghods, "such as upgrading our base operating system from RHEL6 to RHEL7 or integrating it into <ahref="https://www.nagios.org/">Nagios</a>, our monitoring infrastructure. But overall Kubernetes has been remarkably flexible with fitting into many of our constraints, and we’ve been running it very successfully on our bare metal infrastructure."<br><br>
Perhaps the bigger challenge for Box was a cultural one. "Kubernetes, and cloud native in general, represents a pretty big paradigm shift, and it’s not very incremental," Ghods says. "We’re essentially making this pitch that Kubernetes is going to solve everything because it does things the right way and everything is just suddenly better. But it’s important to keep in mind that it’s not nearly as proven as many other solutions out there. You can’t say how long this or that company took to do it because there just aren’t that many yet. Our team had to really fight for resources because our project was a bit of a moonshot."
</div>
</section>
<divclass="banner4">
<divclass="banner4text">
"The vast majority of the work our team has done to implement Kubernetes at Box has been making it work inside of our existing [and often legacy] infrastructure....overall Kubernetes has been remarkably flexible with fitting into many of our constraints, and we’ve been running it very successfully on our bare metal infrastructure."
</div>
</div>
<sectionclass="section4">
<divclass="fullcol">
Having learned from experience, Ghods offers these two pieces of advice for companies going through similar challenges:
<h2>1. Deliver early and often.</h2> Service discovery was a huge problem for Box, and the team had to decide whether to build an interim solution or wait for Kubernetes to natively satisfy Box’s unique requirements. After much debate, "we just started focusing on delivering something that works, and then dealing with potentially migrating to a more native solution later," Ghods says. "The above-all-else target for the team should always be to serve real production use cases on the infrastructure, no matter how trivial. This helps keep the momentum going both for the team itself and for the organizational perception of the project." </br></br>
<h2>2. Keep an open mind about what your company has to abstract away from developers and what it doesn’t.</h2> Early on, the team built an abstraction on top of Docker files to help ensure that images had the right security updates.
This turned out to be superfluous work, since container images are considered immutable and you can easily scan them post-build to ensure they do not contain vulnerabilities. Because managing infrastructure through containerization is such a discontinuous leap, it’s better to start by interacting directly with the native tools and learning their unique advantages and caveats. An abstraction should be built only after a practical need for it arises.</br></br>
In the end, the impact has been powerful. "Before Kubernetes," Ghods says, "our infrastructure was so antiquated it was taking us more than six months to deploy a new microservice. Now a new microservice takes less than five days to deploy. And we’re working on getting it to an hour. Granted, much of that six months was due to how broken our systems were, but bare metal is intrinsically a difficult platform to support unless you have a system like Kubernetes to help manage it."</br></br>
By Ghods’s estimate, Box is still several years away from his goal of being a 90-plus percent Kubernetes shop. "We’re very far along on having a mission-critical, stable Kubernetes deployment that provides a lot of value," he says. "Right now about five percent of all of our compute runs on Kubernetes, and I think in the next six months we’ll likely be between 20 to 50 percent. We’re working hard on enabling all stateless service use cases, and shift our focus to stateful services after that."
</div>
</section>
<divclass="banner5">
<divclass="banner5text">
"Ghods predicts that Kubernetes has the opportunity to be the new cloud platform. '...because it’s a never-before-seen level of automation and intelligence surrounding infrastructure that is portable and agnostic to every way you can run your infrastructure.'"
</div>
</div>
<sectionclass="section5">
<divclass="fullcol">
In fact, that’s what he envisions across the industry: Ghods predicts that Kubernetes has the opportunity to be the new cloud platform. Kubernetes provides an API consistent across different cloud platforms including bare metal, and "I don’t think people have seen the full potential of what’s possible when you can program against one single interface," he says. "The same way <ahref="https://aws.amazon.com/">AWS</a> changed infrastructure so that you don’t have to think about servers or cabinets or networking equipment anymore, Kubernetes enables you to focus exclusively on the containers that you’re running, which is pretty exciting. That’s the vision."</br></br>
Ghods points to projects that are already in development or recently released for Kubernetes as a cloud platform: cluster federation, the Dashboard UI, and <ahref="https://coreos.com/">CoreOS</a>’s etcd operator. "I honestly believe it’s the most exciting thing I’ve seen in cloud infrastructure," he says, "because it’s a never-before-seen level of automation and intelligence surrounding infrastructure that is portable and agnostic to every way you can run your infrastructure."</br></br>
Box, with its early decision to use bare metal, embarked on its Kubernetes journey out of necessity. But Ghods says that even if companies don’t have to be agnostic about cloud providers today, Kubernetes may soon become the industry standard, as more and more tooling and extensions are built around the API.</br></br>
"The same way it doesn’t make sense to deviate from Linux because it’s such a standard," Ghods says, "I think Kubernetes is going down the same path. It is still early days—the documentation still needs work and the user experience for writing and publishing specs to the Kubernetes clusters is still rough. When you’re on the cutting edge you can expect to bleed a little. But the bottom line is, this is where the industry is going. Three to five years from now it’s really going to be shocking if you run your infrastructure any other way."
<divclass="subhead">Making Deployments Easy for a Small, Distributed Team</div>
</h1>
</div>
<divclass="details">
Company <b>Buffer</b> Location <b>Around the World</b> Industry <b>Social Media Technology</b>
</div>
<hr>
<sectionclass="section1">
<divclass="cols">
<divclass="col1">
<h2>Challenge</h2>
With a small but fully distributed team of 80 working across almost a dozen time zones, Buffer—which offers social media management to agencies and marketers—was looking to solve its "classic monolithic code base problem," says Architect Dan Farrelly. "We wanted to have the kind of liquid infrastructure where a developer could create an app and deploy it and scale it horizontally as necessary."
</div>
<divclass="col2">
<h2>Solution</h2>
Embracing containerization, Buffer moved its infrastructure from Amazon Web Services’ Elastic Beanstalk to Docker on AWS, orchestrated with Kubernetes.
<br>
<br>
<h2>Impact</h2>
The new system "leveled up our ability with deployment and rolling out new changes," says Farrelly. "Building something on your computer and knowing that it’s going to work has shortened things up a lot. Our feedback cycles are a lot faster now too."
</div>
</div>
</section>
<divclass="banner2">
<divclass="banner2text">
"It’s amazing that we can use the Kubernetes solution off the shelf with our team. And it just keeps getting better. Before we even know that we need something, it’s there in the next release or it’s coming in the next few months."<br><br><spanstyle="font-size:16px;letter-spacing:2px;">- DAN FARRELLY, BUFFER ARCHITECT</span>
</div>
</div>
<sectionclass="section2">
<divclass="fullcol">
<h2>Dan Farrelly uses a carpentry analogy to explain the problem his company, <ahref="https://buffer.com">Buffer</a>, began having as its team of developers grew over the past few years.</h2>
"If you’re building a table by yourself, it’s fine," the company’s architect says. "If you bring in a second person to work on the table, maybe that person can start sanding the legs while you’re sanding the top. But when you bring a third or fourth person in, someone should probably work on a different table." Needing to work on more and more different tables led Buffer on a path toward microservices and containerization made possible by Kubernetes.<br><br>
Since around 2012, Buffer had already been using <ahref="https://aws.amazon.com/elasticbeanstalk/">Elastic Beanstalk</a>, the orchestration service for deploying infrastructure offered by <ahref="https://aws.amazon.com">Amazon Web Services</a>. "We were deploying a single monolithic <ahref="http://php.net/manual/en/intro-whatis.php">PHP</a> application, and it was the same application across five or six environments," says Farrelly. "We were very much a product-driven company. It was all about shipping new features quickly and getting things out the door, and if something was not broken, we didn’t spend too much time on it. If things were getting a little bit slow, we’d maybe use a faster server or just scale up one instance, and it would be good enough. We’d move on."<br><br>
But things came to a head in 2016. With the growing number of committers on staff, Farrelly and Buffer’s then-CTO, Sunil Sadasivan, decided it was time to re-architect and rethink their infrastructure. "It was a classic monolithic code base problem," says Farrelly.<br><br>Some of the company’s team was already successfully using <ahref="https://www.docker.com">Docker</a> in their development environment, but the only application running on Docker in production was a marketing website that didn’t see real user traffic. They wanted to go further with Docker, and the next step was looking at options for orchestration.
</div>
</section>
<divclass="banner3">
<divclass="banner3text">
And all the things Kubernetes did well suited Buffer’s needs. "We wanted to have the kind of liquid infrastructure where a developer could create an app and deploy it and scale it horizontally as necessary," says Farrelly. "We quickly used some scripts to set up a couple of test clusters, we built some small proof-of-concept applications in containers, and we deployed things within an hour. We had very little experience in running containers in production. It was amazing how quickly we could get a handle on it [Kubernetes]."
</div>
</div>
<sectionclass="section3">
<divclass="fullcol">
First they considered <ahref="https://mesosphere.com">Mesosphere</a>, <ahref="https://dcos.io">DC/OS</a> and <ahref="https://aws.amazon.com/ecs/">Amazon Elastic Container Service</a> (which their data systems team was already using for some data pipeline jobs). While they were impressed by these offerings, they ultimately went with Kubernetes. "We run on AWS still, so spinning up, creating services and creating load balancers on demand for us without having to configure them manually was a great way for our team to get into this," says Farrelly. "We didn’t need to figure out how to configure this or that, especially coming from a former Elastic Beanstalk environment that gave us an automatically-configured load balancer. I really liked Kubernetes’ controls of the command line. It just took care of ports. It was a lot more flexible. Kubernetes was designed for doing what it does, so it does it very well."<br><br>
And all the things Kubernetes did well suited Buffer’s needs. "We wanted to have the kind of liquid infrastructure where a developer could create an app and deploy it and scale it horizontally as necessary," says Farrelly. "We quickly used some scripts to set up a couple of test clusters, we built some small proof-of-concept applications in containers, and we deployed things within an hour. We had very little experience in running containers in production. It was amazing how quickly we could get a handle on it [Kubernetes]."<br><br>
Above all, it provided a powerful solution for one of the company’s most distinguishing characteristics: their remote team that’s spread across a dozen different time zones. "The people with deep knowledge of our infrastructure live in time zones different from our peak traffic time zones, and most of our product engineers live in other places," says Farrelly. "So we really wanted something where anybody could get a grasp of the system early on and utilize it, and not have to worry that the deploy engineer is asleep. Otherwise people would sit around for 12 to 24 hours for something. It’s been really cool to see people moving much faster."
<br><br>
With a relatively small engineering team—just 25 people, and only a handful working on infrastructure, with the majority front-end developers—Buffer needed "something robust for them to deploy whatever they wanted," says Farrelly. Before, "it was only a couple of people who knew how to set up everything in the old way. With this system, it was easy to review documentation and get something out extremely quickly. It lowers the bar for us to get everything in production. We don't have the big team to build all these tools or manage the infrastructure like other larger companies might."
</div>
</section>
<divclass="banner4">
<divclass="banner4text">
"In our old way of working, the feedback loop was a lot longer, and it was delicate because if you deployed something, the risk was high to potentially break something else," Farrelly says. "With the kind of deploys that we built around Kubernetes, we were able to detect bugs and fix them, and get them deployed super fast. The second someone is fixing [a bug], it’s out the door."
</div>
</div>
<sectionclass="section4">
<divclass="fullcol">
To help with this, Buffer developers wrote a deploy bot that wraps the Kubernetes deploy process and can be used by every team. "Before, our data analysts would update, say, a <ahref="https://www.python.org">Python</a> analysis script and have to wait for the lead on that team to click the button and deploy it," Farrelly explains. "Now our data analysts can make a change, enter a <ahref="https://slack.com">Slack</a> command, ‘/deploy,’ and it goes out instantly. They don’t need to wait on these slow turnaround times. They don’t even know where it’s running; it doesn’t matter."
<br><br>
One of the first applications the team built from scratch using Kubernetes was a new image resizing service. As a social media management tool that allows marketing teams to collaborate on posts and send updates across multiple social media profiles and networks, Buffer has to be able to resize photographs as needed to meet the varying limitations of size and format posed by different social networks. "We always had these hacked together solutions," says Farrelly.
<br><br>
To create this new service, one of the senior product engineers was assigned to learn Docker and Kubernetes, then build the service, test it, deploy it and monitor it—which he was able to do relatively quickly. "In our old way of working, the feedback loop was a lot longer, and it was delicate because if you deployed something, the risk was high to potentially break something else," Farrelly says. "With the kind of deploys that we built around Kubernetes, we were able to detect bugs and fix them, and get them deployed super fast. The second someone is fixing [a bug], it’s out the door."
<br><br>
Plus, unlike with their old system, they could scale things horizontally with one command. "As we rolled it out," Farrelly says, "we could anticipate and just click a button. This allowed us to deal with the demand that our users were placing on the system and easily scale it to handle it."
<br><br>
Another thing they weren’t able to do before was a canary deploy. This new capability "made us so much more confident in deploying big changes," says Farrelly. "Before, it took a lot of testing, which is still good, but it was also a lot of ‘fingers crossed.’ And this is something that gets run 800,000 times a day, the core of our business. If it doesn’t work, our business doesn’t work. In a Kubernetes world, I can do a canary deploy to test it for 1 percent and I can shut it down very quickly if it isn’t working. This has leveled up our ability to deploy and roll out new changes quickly while reducing risk."
</div>
</section>
<divclass="banner5">
<divclass="banner5text">
"If you want to run containers in production, with nearly the power that Google uses internally, this [Kubernetes] is a great way to do that," Farrelly says. "We’re a relatively small team that’s actually running Kubernetes, and we’ve never run anything like it before. So it’s more approachable than you might think. That’s the one big thing that I tell people who are experimenting with it. Pick a couple of things, roll it out, kick the tires on this for a couple of months and see how much it can handle. You start learning a lot this way."
</div>
</div>
<sectionclass="section5">
<divclass="fullcol">
By October 2016, 54 percent of Buffer’s traffic was going through their Kubernetes cluster. "There’s a lot of our legacy functionality that still runs alright, and those parts might move to Kubernetes or stay in our old setup forever," says Farrelly. But the company made the commitment at that time that going forward, "all new development, all new features, will be running on Kubernetes."
<br><br>
The plan for 2017 is to move all the legacy applications to a new Kubernetes cluster, and run everything they’ve pulled out of their old infrastructure, plus the new services they’re developing in Kubernetes, on another cluster. "I want to bring all the benefits that we’ve seen on our early services to everyone on the team," says Farrelly.
<br><br>
<h2>For Buffer’s engineers, it’s an exciting process. "Every time we’re deploying a new service, we need to figure out: OK, what’s the architecture? How do these services communicate? What’s the best way to build this service?" Farrelly says. "And then we use the different features that Kubernetes has to glue all the pieces together. It’s enabling us to experiment as we’re learning how to design a service-oriented architecture. Before, we just wouldn’t have been able to do it. This is actually giving us a blank white board so we can do whatever we want on it."
</h2>
Part of that blank slate is the flexibility that Kubernetes offers should the time come when Buffer may want or need to change its cloud. "It’s cloud agnostic so maybe one day we could switch to Google or somewhere else," Farrelly says. "We’re very deep in Amazon but it’s nice to know we could move away if we need to."
<br><br>
At this point, the team at Buffer can’t imagine running their infrastructure any other way—and they’re happy to spread the word. "If you want to run containers in production, with nearly the power that Google uses internally, this [Kubernetes] is a great way to do that," Farrelly says. "We’re a relatively small team that’s actually running Kubernetes, and we’ve never run anything like it before. So it’s more approachable than you might think. That’s the one big thing that I tell people who are experimenting with it. Pick a couple of things, roll it out, kick the tires on this for a couple of months and see how much it can handle. You start learning a lot this way."
<divclass="subhead">Saving Time and Money with Cloud Native Infrastructure</div>
</h1>
</div>
<divclass="details">
Company <b>GolfNow</b> Location <b>Orlando, Florida</b> Industry <b>Golf Industry Technology and Services Provider</b>
</div>
<hr>
<sectionclass="section1">
<divclass="cols">
<divclass="col1">
<h2>Challenge</h2>
A member of the <ahref="http://www.nbcunicareers.com/our-businesses/nbc-sports-group">NBC Sports Group</a>, <ahref="https://www.golfnow.com/">GolfNow</a> is the golf industry’s technology and services leader, managing 10 different products, as well as the largest e-commerce tee time marketplace in the world. As its business began expanding rapidly and globally, GolfNow’s monolithic application became problematic. "We kept growing our infrastructure vertically rather than horizontally, and the cost of doing business became problematic," says Sheriff Mohamed, GolfNow’s Director, Architecture. "We wanted the ability to more easily expand globally."
<br>
</div>
<divclass="col2">
<h2>Solution</h2>
Turning to microservices and containerization, GolfNow began moving its applications and databases from third-party services to its own clusters running on <ahref="https://www.docker.com/">Docker</a> and <ahref="http://kubernetes.io/">Kubernetes.</a><br><br>
<h2>Impact</h2>
The results were immediate. While maintaining the same capacity—and beyond, during peak periods—GolfNow saw its infrastructure costs for the first application virtually cut in half.
</div>
</div>
</section>
<divclass="banner2">
<divclass="banner2text">
"With our growth we obviously needed to expand our infrastructure, and we kept growing vertically rather than horizontally. We were basically wasting money and doubling the cost of our infrastructure."<br><br><spanstyle="font-size:15px;letter-spacing:0.08em">- SHERIFF MOHAMED, DIRECTOR, ARCHITECTURE AT GOLFNOW</span>
</div>
</div>
<sectionclass="section2">
<divclass="fullcol">
<h2>It’s not every day that you can say you’ve slashed an operating expense by half.</h2>
But Sheriff Mohamed and Josh Chandler did just that when they helped lead their company, <ahref="https://www.golfnow.com/">GolfNow</a>, on a journey from a monolithic to a containerized, cloud native infrastructure managed by Kubernetes.
<br><br>
A top-performing business within the NBC Sports Group, GolfNow is a technology and services company with the largest tee time marketplace in the world. GolfNow serves 5 million active golfers across 10 different products. In recent years, the business had grown so fast that the infrastructure supporting their giant monolithic application (written in C#.NET and backed by SQL Server database management system) could not keep up. "With our growth we obviously needed to expand our infrastructure, and we kept growing vertically rather than horizontally," says Sheriff, GolfNow’s Director, Architecture. "Our costs were growing exponentially. And on top of that, we had to build a Disaster Recovery (DR) environment, which then meant we’d have to copy exactly what we had in our original data center to another data center that was just the standby. We were basically wasting money and doubling the cost of our infrastructure."
<br><br>
In moving just the first of GolfNow’s important applications—a booking engine for golf courses and B2B marketing platform—from third-party services to their own Kubernetes environment, "our bill went down drastically," says Sheriff.
<br><br>
The path to those stellar results began in late 2014. In order to support GolfNow’s global growth, the team decided that the company needed to have multiple data centers and the ability to quickly and easily re-route traffic as needed. "From there we knew that we needed to go in a direction of breaking things apart, microservices, and containerization," says Sheriff. "At the time we were trying to get away from <ahref="https://www.microsoft.com/net">C#.NET</a> and <ahref="https://www.microsoft.com/en-cy/sql-server/sql-server-2016">SQL Server</a> since it didn’t run very well on Linux, where everything container was running smoothly."
<br><br>
To that end, the team shifted to working with <ahref="https://nodejs.org/">Node.js</a>, the open-source, cross-platform JavaScript runtime environment for developing tools and applications, and <ahref="https://www.mongodb.com/">MongoDB</a>, the open-source database program. At the time, <ahref="https://www.docker.com/">Docker</a>, the platform for deploying applications in containers, was still new. But once the team began experimenting with it, Sheriff says, "we realized that was the way we wanted to go, especially since that’s the way the industry is heading."
</div>
</section>
<divclass="banner3">
<divclass="banner3text">
"The team migrated the rest of the application into their Kubernetes cluster. And the impact was immediate: On top of cutting monthly costs by a large percentage, says Sheriff, 'Running at the same capacity and during our peak time, we were able to horizontally grow. Since we were using our VMs more efficiently with containers, we didn’t have to pay extra money at all.'"
</div>
</div>
<sectionclass="section3">
<divclass="fullcol">
GolfNow’s dev team ran an "internal, low-key" proof of concept and were won over. "We really liked how easy it was to be able to pass containers around to each other and have them up and running in no time, exactly the way it was running on my machine," says Sheriff. "Because that is always the biggest gripe that Ops has with developers, right? ‘It worked on my machine!’ But then we started getting to the point of, ‘How do we make sure that these things stay up and running?’" <br><br>
That led the team on a quest to find the right orchestration system for the company’s needs. Sheriff says the first few options they tried were either too heavy or "didn’t feel quite right." In late summer 2015, they discovered the just-released <ahref="http://kubernetes.io/">Kubernetes</a>, which Sheriff immediately liked for its ease of use. "We did another proof of concept," he says, "and Kubernetes won because of the fact that the community backing was there, built on top of what Google had already done."
<br><br>
But before they could go with Kubernetes, <ahref="http://www.nbc.com/">NBC</a>, GolfNow’s parent company, also asked them to comparison shop with another company. Sheriff and his team liked the competing company’s platform user interface, but didn’t like that its platform would not allow containers to run natively on Docker. With no clear decision in sight, Sheriff’s VP at GolfNow, Steve McElwee, set up a three-month trial during which a GolfNow team (consisting of Sheriff and Josh, who’s now Lead Architect, Open Platforms) would build out a Kubernetes environment, and a large NBC team would build out one with the other company’s platform.
<br><br>
"We spun up the cluster and we tried to get everything to run the way we wanted it to run," Sheriff says. "The biggest thing that we took away from it is that not only did we want our applications to run within Kubernetes and Docker, we also wanted our databases to run there. We literally wanted our entire infrastructure to run within Kubernetes."
<br><br>
At the time there was nothing in the community to help them get Kafka and MongoDB clusters running within a Kubernetes and Docker environment, so Sheriff and Josh figured it out on their own, taking a full month to get it right. "Everything started rolling from there," Sheriff says. "We were able to get all our applications connected, and we finished our side of the proof of concept a month in advance. My VP was like, ‘Alright, it’s over. Kubernetes wins.’"
<br><br>
The next step, beginning in January 2016, was getting everything working in production. The team focused first on one application that was already written in Node.js and MongoDB. A booking engine for golf courses and B2B marketing platform, the application was already going in the microservice direction but wasn’t quite finished yet. At the time, it was running in <ahref="https://devcenter.heroku.com/articles/mongohq">Heroku Compose</a> and other third-party services—resulting in a large monthly bill.
</div>
</section>
<divclass="banner4">
<divclass="banner4text">
"'The time I spent actually moving the applications was under 30 seconds! We can move data centers in just incredible amounts of time. If you haven’t come from the Kubernetes world you wouldn’t believe me.' Sheriff puts it in these terms: 'Before Kubernetes I wasn’t sleeping at night, literally. I was woken up all the time, because things were down. After Kubernetes, I’ve been sleeping at night.'"
</div>
</div>
<sectionclass="section4">
<divclass="fullcol">
"The goal was to take all of that out and put it within this new platform we’ve created with Kubernetes on <ahref="https://cloud.google.com/compute/">Google Compute Engine (GCE)</a>," says Sheriff. "So we ended up building piece by piece, in parallel, what was out in Heroku and Compose, in our Kubernetes cluster. Then, literally, just switched configs in the background. So in Heroku we had the app running hitting a Compose database. We’d take the config, change it and make it hit the database that was running in our cluster."
<br><br>
Using this procedure, they were able to migrate piecemeal, without any downtime. The first migration was done during off hours, but to test the limits, the team migrated the second database in the middle of the day, when lots of users were running the application. "We did it," Sheriff says, "and again it was successful. Nobody noticed."
<br><br>
After three weeks of monitoring to make sure everything was running stable, the team migrated the rest of the application into their Kubernetes cluster. And the impact was immediate: On top of cutting monthly costs by a large percentage, says Sheriff, "Running at the same capacity and during our peak time, we were able to horizontally grow. Since we were using our VMs more efficiently with containers, we didn’t have to pay extra money at all."
<br><br>
Not only were they saving money, but they were also saving time. "I had a meeting this morning about migrating some applications from one cluster to another," says Josh. "I spent about 2 hours explaining the process. The time I spent actually moving the applications was under 30 seconds! We can move data centers in just incredible amounts of time. If you haven’t come from the Kubernetes world you wouldn’t believe me." Sheriff puts it in these terms: "Before Kubernetes I wasn’t sleeping at night, literally. I was woken up all the time, because things were down. After Kubernetes, I’ve been sleeping at night."
<br><br>
A small percentage of the applications on GolfNow have been migrated over to the Kubernetes environment. "Our Core Team is rewriting a lot of the .NET applications into <ahref="https://www.microsoft.com/net/core">.NET Core</a> [which is compatible with Linux and Docker] so that we can run them within containers," says Sheriff.
<br><br>
Looking ahead, Sheriff and his team want to spend 2017 continuing to build a whole platform around Kubernetes with <ahref="https://github.com/drone/drone">Drone</a>, an open-source continuous delivery platform, to make it more developer-centric. "Now they’re able to manage configuration, they’re able to manage their deployments and things like that, making all these subteams that are now creating all these microservices, be self sufficient," he says. "So it can pull us away from applications and allow us to just make sure the cluster is running and healthy, and then actually migrate that over to our Ops team."
</div>
</section>
<divclass="banner5">
<divclass="banner5text">
"Having gone from complete newbies to production-ready in three months, the GolfNow team is eager to encourage other companies to follow their lead. 'This is The Six Million Dollar Man of the cloud right now,' adds Josh. 'Just try it out, watch it happen. I feel like the proof is in the pudding when you look at these kinds of application stacks. They’re faster, they’re more resilient.'"
</div>
</div>
<sectionclass="section5">
<divclass="fullcol">
And long-term, Sheriff has an even bigger goal for getting more people into the Kubernetes fold. "We’re actually trying to make this platform generic enough so that any of our sister companies can use it if they wish," he says. "Most definitely I think it can be used as a model. I think the way we migrated into it, the way we built it out, are all ways that I think other companies can learn from, and should not be afraid of."
<br><br>
The GolfNow team is also giving back to the Kubernetes community by open-sourcing a bot framework that Josh built. "We noticed that the dashboard user interface is actually moving a lot faster than when we started," says Sheriff. "However we realized what we needed was something that’s more of a bot that really helps us administer Kubernetes as a whole through Slack." Josh explains: "With the Kubernetes-Slack integration, you can essentially hook into a cluster and the issue commands and edit configurations. We’ve tried to simplify the security configuration as much as possible. We hope this will be our major thank you to Kubernetes, for everything you’ve given us."
<br><br>
Having gone from complete newbies to production-ready in three months, the GolfNow team is eager to encourage other companies to follow their lead. The lessons they’ve learned: "You’ve got to have buy-in from your boss," says Sheriff. "Another big deal is having two to three people dedicated to this type of endeavor. You can’t have people who are half in, half out." And if you don’t have buy-in from the get go, proving it out will get you there.
<br><br>
"This is The Six Million Dollar Man of the cloud right now," adds Josh. "Just try it out, watch it happen. I feel like the proof is in the pudding when you look at these kinds of application stacks. They’re faster, they’re more resilient."
<pclass="quote">"Kubernetes saved our time tremendously; it’s an enabler. It really is incredible."</p>
<!--<p class="attrib">— Paul MacKay, Software Engineer and Architect at Ancestry</p>-->
<ahref="/case-studies/ancestry/">Read about Ancestry.com</a>
</div>
</div>
</div>
</main>
</section>
<sectionid="video">
<main>
<!--<div><button onclick="kub.showVideo()"><img src="/images/case_studies/video_thumb.jpg" alt="Zulily video"><h6>Kubernetes at zulily</h6></button></div>-->
<div>
<!--<h3>Box</h3>-->
<h4><i>"Kubernetes has the opportunity to be the new cloud platform. The amount of innovation that's going to come from being able to standardize on Kubernetes as a platform is incredibly exciting - more exciting than anything I've seen in the last 10 years of working on the cloud."</i></h4>
<divstyle="padding-left: 40px;"><buttononclick="kub.showVideo()"><imgsrc="/images/case_studies/Video-Clip-Box.png"alt="Box video"><h6>Kubernetes at Box</h6></button></div>
<atarget="_blank"href="https://docs.google.com/a/google.com/forms/d/e/1FAIpQLScuI7Ye3VQHQTwBASrgkjQDSS5TP0g3AXfFhwSM9YpHgxRKFA/viewform"class="tell-your-story"><imgsrc="/images/case_studies/story.png"alt="Tell your story"></a>
<h1> CASE STUDY:<imgsrc="/images/peardeck_logo.png"width="22%"style="margin-bottom:-0px"><br><divclass="subhead">Infrastructure for a Growing EdTech Startup</div></h1>
</div>
<divclass="details">
Company <b>Pear Deck</b> Location <b>Iowa City, Iowa</b> Industry <b>Educational Software</b>
</div>
<hr>
<sectionclass="section1">
<divclass="cols">
<divclass="col1">
<h2>Challenge</h2>
The three-year-old startup provides a web app for teachers to interact with their students in the classroom. The JavaScript app was built on Google’s web app development platform <ahref="https://firebase.google.com/">Firebase</a>, using <ahref="https://www.heroku.com/">Heroku</a>. As the user base steadily grew, so did the development team. "We outgrew Heroku when we started wanting to have multiple services, and the deploying story got pretty horrendous. We were frustrated that we couldn’t have the developers quickly stage a version," says CEO Riley Eynon-Lynch. "Tracing and monitoring became basically impossible." On top of that, many of Pear Deck’s customers are behind government firewalls and connect through Firebase, not Pear Deck’s servers, making troubleshooting even more difficult.
</div>
<divclass="col2">
<h2>Solution</h2>
In 2016, the company began moving their code from Heroku to <ahref="https://www.docker.com/">Docker</a> containers running on <ahref="https://cloud.google.com/container-engine/">Google Container Engine</a>, orchestrated by <ahref="http://kubernetes.io/">Kubernetes</a> and monitored with <ahref="https://prometheus.io/">Prometheus</a>.
<br>
<br>
<h2>Impact</h2>
The new cloud native stack immediately improved the development workflow, speeding up deployments. Prometheus gave Pear Deck "a lot of confidence, knowing that people are still logging into the app and using it all the time," says Eynon-Lynch. "The biggest impact is being able to work as a team on the configuration in git in a pull request, and the biggest confidence comes from the solidity of the abstractions and the trust that we have in Kubernetes actually making our yaml files a reality."
</div>
</div>
</section>
<divclass="banner2">
<divclass="banner2text">
"We didn’t even realize how stressed out we were about our lack of insight into what was happening with the app. I’m really excited and have more and more confidence in the actual state of our application for our actual users, and not just what the CPU graphs are saying, because of Prometheus and Kubernetes."<br><br><spanstyle="font-size:16px;letter-spacing:2px;">– RILEY EYNON-LYNCH, CEO OF PEAR DECK</span>
</div>
</div>
<sectionclass="section2">
<divclass="fullcol">
<h2>With the speed befitting a startup, Pear Deck delivered its first prototype to customers within three months of incorporating.</h2>
As a former high school math teacher, CEO Riley Eynon-Lynch felt an urgency to provide a tech solution to classes where instructors struggle to interact with every student in a short amount of time. "Pear Deck is an app that students can use to interact with the teacher all at once," he says. "When the teacher asks a question, instead of just the kid at the front of the room answering again, everybody can answer every single question. It’s a huge fundamental shift in the messaging to the students about how much we care about them and how much they are a part of the classroom."<br><br>
Eynon-Lynch and his partners quickly built a JavaScript web app on Google’s web app development platform <ahref="https://firebase.google.com/">Firebase</a>, and launched the minimum viable product [MVP] on <ahref="https://www.heroku.com/">Heroku</a> "because it was fast and easy," he says. "We made everything as easy as we could."
<br><br>
But once it launched, the user base began growing steadily at a rate of 30 percent a month. "Our Heroku bill was getting totally insane," Eynon-Lynch says. But even more crucially, as the company hired more developers to keep pace, "we outgrew Heroku. We wanted to have multiple services and the deploying story got pretty horrendous. We were frustrated that we couldn’t have the developers quickly stage a version. Tracing and monitoring became basically impossible."
<br><br>
On top of that, many of Pear Deck’s customers are behind government firewalls and connect through Firebase, not Pear Deck’s servers, making troubleshooting even more difficult.
<br><br>
The team began looking around for another solution, and finally decided in early 2016 to start moving the app from Heroku to <ahref="https://www.docker.com/">Docker</a> containers running on <ahref="https://cloud.google.com/container-engine/">Google Container Engine</a>, orchestrated by <ahref="http://kubernetes.io/">Kubernetes</a> and monitored with <ahref="https://prometheus.io/">Prometheus</a>.
</div>
</section>
<divclass="banner3">
<divclass="banner3text">
"When it became clear that Google Container Engine was going to have a lot of support from Google and be a fully-managed Kubernetes platform, it seemed very obvious to us that was the way to go," says Eynon-Lynch.
</div>
</div>
<sectionclass="section3">
<divclass="fullcol">
They had considered other options like Google’s App Engine (which they were already using for one service) and Amazon’s <ahref="https://aws.amazon.com/ec2/">Elastic Compute Cloud</a> (EC2), while experimenting with running one small service that wasn’t accessible to the Internet in Kubernetes. "When it became clear that Google Container Engine was going to have a lot of support from Google and be a fully-managed Kubernetes platform, it seemed very obvious to us that was the way to go," says Eynon-Lynch. "We didn’t really consider Terraform and the other competitors because the abstractions offered by Kubernetes just jumped off the page to us."<br><br>
Once the team started porting its Heroku apps into Kubernetes, which was "super easy," he says, the impact was immediate. "Before, to make a new version of the app meant going to Heroku and reconfiguring 10 new services, so basically no one was willing to do it, and we never staged things," he says. "Now we can deploy our exact same configuration in lots of different clusters in 30 seconds. We have a full set up that’s always running, and then any of our developers or designers can stage new versions with one command, including their recent changes. We stage all the time now, and everyone stopped talking about how cool it is because it’s become invisible how great it is."
<br><br>
Along with Kubernetes came Prometheus. "Until pretty recently we didn’t have any kind of visibility into aggregate server metrics or performance," says Eynon-Lynch. The team had tried to use GKE’s <ahref="https://cloud.google.com/stackdriver/">Stackdriver</a> monitoring, but had problems making it work, and considered <ahref="https://newrelic.com/">New Relic</a>. When they started looking at Prometheus in the fall of 2016, "the fit between the abstractions in Prometheus and the way we think about how our system works, was so clear and obvious," he says.<br><br>
The integration with Kubernetes made set-up easy. Once Helm installed Prometheus, "We started getting a graph of the health of all our Kubernetes nodes and pods immediately. I think we were pretty hooked at that point," Eynon-Lynch says. "Then we got our own custom instrumentation working in 15 minutes, and had an actively updated count of requests that we could do, rate on and get a sense of how many users are connected at a given point. And then it was another hour before we had alarms automatically showing up in our Slack channel. All that was in one afternoon. And it was an afternoon of gasping with delight, basically!"
</div>
</section>
<divclass="banner4">
<divclass="banner4text">
"We started getting a graph of the health of all our Kubernetes nodes and pods immediately. I think we were pretty hooked at that point," Eynon-Lynch says. "Then we got our own custom instrumentation working in 15 minutes, and had an actively updated count of requests that we could do, rate on and get a sense of how many users are connected at a given point. And then it was another hour before we had alarms automatically showing up in our Slack channel. All that was in one afternoon. And it was an afternoon of gasping with delight, basically!"
</div>
</div>
<sectionclass="section4">
<divclass="fullcol">
With Pear Deck’s specific challenges—traffic through Firebase as well as government firewalls—Prometheus was a game-changer. "We didn’t even realize how stressed out we were about our lack of insight into what was happening with the app," Eynon-Lynch says. Before, when a customer would report that the app wasn’t working, the team had to manually investigate the problem without knowing whether customers were affected all over the world, or whether Firebase was down, and where.<br><br>
To help solve that problem, the team wrote a script that pings Firebase from several different geographical locations, and then reports the responses to Prometheus in a histogram. "A huge impact that Prometheus had on us was just an amazing sigh of relief, of feeling like we knew what was happening," he says. "It took 45 minutes to implement [the Firebase alarm] because we knew that we had this trustworthy metrics platform in Prometheus. We weren’t going to have to figure out, ‘Where do we send these metrics? How do we aggregate the metrics? How do we understand them?’"<br><br>
Plus, Prometheus has allowed Pear Deck to build alarms for business goals. One measures the rate of successful app loads and goes off if the day’s loads are less than 90 percent of the loads from seven days before. "We run a JavaScript app behind ridiculous firewalls and all kinds of crazy browser extensions messing with it—Chrome will push a feature that breaks some CSS that we’re using," Eynon-Lynch says. "So that gives us a lot of confidence, and we at least know that people are still logging into the app and using it all the time."<br><br>
Now, when a customer complains, and none of the alarms have gone off, the team can feel confident that it’s not a widespread problem. "Just to be sure, we can go and double check the graphs and say, ‘Yep, there’s currently 10,000 people connected to that Firebase node. It’s definitely working. Let’s investigate your network settings, customer,’" he says. "And we can pass that back off to our support reps instead of the whole development team freaking out that Firebase is down."<br><br>
Pear Deck is also giving back to the community, building and open-sourcing a <ahref="https://github.com/peardeck/prometheus-user-metrics">metrics aggregator</a> that enables end-user monitoring in Prometheus. "We can measure, for example, the time to interactive-dom on the web clients," he says. "The users all report that to our aggregator, then the aggregator reports to Prometheus. So we can set an alarm for some client side errors."<br><br>
Most of Pear Deck’s services have now been moved onto Kubernetes. And all of the team’s new code is going on Kubernetes. "Kubernetes lets us experiment with service configurations and stage them on a staging cluster all at once, and test different scenarios and talk about them as a development team looking at code, not just talking about the steps we would eventually take as humans," says Eynon-Lynch.
</div>
</section>
<divclass="banner5">
<divclass="banner5text">
"A huge impact that Prometheus had on us was just an amazing sigh of relief, of feeling like we knew what was happening. It took 45 minutes to implement [the Firebase alarm] because we knew that we had this trustworthy metrics platform in Prometheus...in terms of the cloud, Kubernetes and Prometheus have so much to offer," he says.
</div>
</div>
<sectionclass="section5">
<divclass="fullcol">
Looking ahead, the team is planning to explore autoscaling on Kubernetes. With users all over the world but mostly in the United States, there are peaks and valleys in the traffic. One service that’s still on App Engine can get as many as 10,000 requests a second during the day but far less at night. "We pay for the same servers at night, so I understand there’s autoscaling that we can be taking advantage of," he says. "Implementing it is a big worry, exposing the rest of our Kubernetes cluster to us and maybe messing that up. But it’s definitely our intention to move everything over, because now none of the developers want to work on that app anymore because it’s such a pain to deploy it."
<br><br>
They’re also eager to explore the work that Kubernetes is doing with stateful sets. "Right now all of the services we run in Kubernetes are stateless, and Google basically runs our databases for us and manages backups," Eynon-Lynch says. "But we’re interested in building our own web-socket solution that doesn’t have to be super stateful but will have maybe an hour’s worth of state on it."
<br><br>
That project will also involve Prometheus, for a dark launch of web socket connections. "We don’t know how reliable web socket connections behind all these horrible firewalls will be to our servers," he says. "We don’t know what work Firebase has done to make them more reliable. So I’m really looking forward to trying to get persistent connections with web sockets to our clients and have optional tools to understand if it’s working. That’s our next new adventure, into stateful servers."
<br><br>
As for Prometheus, Eynon-Lynch thinks the company has only gotten started. "We haven’t instrumented all our important features, especially those that depend on third parties," he says. "We have to wait for those third parties to tell us they’re down, which sometimes they don’t do for a long time. So I’m really excited and have more and more confidence in the actual state of our application for our actual users, and not just what the CPU graphs are saying, because of Prometheus and Kubernetes."
<br><br>
For a spry startup that’s continuing to grow rapidly—and yes, they’re <ahref="https://www.peardeck.com/careers/">hiring</a>!—Pear Deck is notably satisfied with how its infrastructure has evolved in the cloud native ecosystem. "Usually I have some angsty thing where I want to get to the new, better technology," says Eynon-Lynch, "but in terms of the cloud, Kubernetes and Prometheus have so much to offer."
<h3id="caseStudyTitle">Using Kubernetes to reinvent the world's largest educational company</h3>
<p>
Pearson, the world's education company, serving 75 million learners worldwide, set a goal to more than double that number to 200 million by 2025. A key part of this growth is in digital learning experiences, and that requires an infrastructure platform that is able to scale quickly and deliver products to market faster. So Pearson's Cloud Technology team chose Kubernetes to help build a platform to meet the business requirements. </p>
"To transform our infrastructure, we had to think beyond simply enabling automated provisioning, we realized we had to build a platform that would allow Pearson developers to build manage and deploy applications in a completely different way. We chose Kubernetes because of its flexibility, ease of management and the way it would improve our engineers' productivity." </p>
<pclass="attrib">— Chris Jackson, Director for Cloud Product Engineering, Pearson</p>
</div>
</div>
</main>
</section>
<sectionclass="bullets">
<main>
<divclass="content">
<divclass="bullet">
<h4>Challenges:</h4>
<ul>
<li>Pearson had difficulty in scaling and adapting to the growing online audience. They wanted to build and deliver content primarily over the web.</li>
</ul>
</div>
<divclass="bullet">
<h4>Why Kubernetes:</h4>
<ul>
<li>Kubernetes will allow Pearson's teams to develop their apps in a consistent manner, saving time and minimizing complexity.</li>
</ul>
</div>
<divclass="bullet">
<h4>Approach:</h4>
<ul>
<li>Build a centralized platform for use across the entire enterprise</li>
<li>Use container technology as the core of the platform</li>
<li>Deploy Kubernetes to manage the platform</li>
</ul>
</div>
<divclass="bullet">
<h4>Results:</h4>
<ul>
<li>Pearson is building an enterprise-wide platform for delivering innovative, web-based educational content. They expect engineers' productivity to increase by up to 20 percent.</li>
</ul>
</div>
</div>
</main>
</section>
<sectionclass="details">
<main>
<divclass="content">
<h4>Kubernetes powers a comprehensive developer experience</h4>
<p>Pearson wanted to use as much open source technology as possible for the platform given that it provides both technical and commercial benefits over the duration of the project. Jackson says, "Building an infrastructure platform based on open source technology in Pearson was a no-brainer, the sharing of technical challenges and advanced use cases in a community of people with talent far beyond what we could hire independently allows us to innovate at a level we could not reach on our own. Our engineers enjoy returning code to the community and participating in talks, blogs and meetings, it's a great way for us to allow our team to express themselves and share the pride they have in their work."</p>
<p>It also wanted to use a container-focused platform. Pearson has 400 development groups and diverse brands with varying business and technical needs. With containers, each brand could experiment with building new types of content using their preferred technologies, and then deliver it using containers. Pearson chose Kubernetes because it believes that is the best technology for managing containers, has the widest community support and offers the most flexible and powerful tools."</p>
<p>Kubernetes is at the core of the platform we've built for developers. After we get our big spike in back-to-school in traffic, much of Pearson's traffic will interact with Kubernetes. It is proving to be as effective as we had hoped," Jackson says.</p>
<p>With the new platform, Pearson will increase stability and performance, and to bring products to market more quickly. The company says its engineers will also get a productivity boost because they won't spend time managing infrastructure. Jackson estimates 15 to 20 percent in productivity savings.</p>
<p>Beyond that, Pearson says the platform will encourage innovation because of the ease with which new applications can be developed, and because applications will be deployed far more quickly than in the past. It expects that will help the company meet its goal of reaching 200 million learners within the next 10 years.</p>
<p>"We're already seeing tremendous benefits with Kubernetes — improved engineering productivity, faster delivery of applications and a simplified infrastructure. But this is just the beginning. Kubernetes will help transform the way that educational content is delivered online," says Jackson.</p>
<h3id="caseStudyTitle">Using Kubernetes to Build Tools to Improve the World's Wikis</h3>
<p>
The non-profit Wikimedia Foundation operates some of the largest collaboratively edited reference projects in the world, including Wikipedia. To help users maintain and use wikis, it runs Wikimedia Tool Labs, a hosting environment for community developers working on tools and bots to help editors and other volunteers do their work, including reducing vandalism. The community around Wikimedia Tool Labs began forming nearly 10 years ago.
"Wikimedia Tool Labs is vital for making sure wikis all around the world work as well as they possibly can. Because it's grown organically for almost 10 years, it has become an extremely challenging environment and difficult to maintain. It's like a big ball of mud — you really can't see through it. With Kubernetes, we're simplifying the environment and making it easier for developers to build the tools that make wikis run better."
</p>
<pclass="attrib">— Yuvi Panda, operations engineer at Wikimedia Foundation and Wikimedia Tool Labs</p>
</div>
</div>
</main>
</section>
<sectionclass="bullets">
<main>
<divclass="content">
<divclass="bullet">
<h4>Challenges:</h4>
<ul>
<li>Simplify a complex, difficult-to-manage infrastructure</li>
<li>Allow developers to continue writing tools and bots using existing techniques</li>
</ul>
</div>
<divclass="bullet">
<h4>Why Kubernetes:</h4>
<ul>
<li>Wikimedia Tool Labs chose Kubernetes because it can mimic existing workflows, while reducing complexity</li>
</ul>
</div>
<divclass="bullet">
<h4>Approach:</h4>
<ul>
<li>Migrate old systems and a complex infrastructure to Kubernetes</li>
</ul>
</div>
<divclass="bullet">
<h4>Results:</h4>
<ul>
<li>20 percent of web tools that account for more than 40 percent of web traffic now run on Kubernetes</li>
<li>A 25-node cluster that keeps up with each new Kubernetes release</li>
<li>Thousands of lines of old code have been deleted, thanks to Kubernetes</li>
</ul>
</div>
</div>
</main>
</section>
<sectionclass="details">
<main>
<divclass="content">
<h4>Using Kubernetes to provide tools for maintaining wikis</h4>
<p>
Wikimedia Tool Labs is run by a staff of four-and-a-half paid employees and two volunteers. The infrastructure didn't make it easy or intuitive for developers to build bots and other tools to make wikis work more easily. Yuvi says, "It's incredibly chaotic. We have lots of Perl and Bash duct tape on top of it. Everything is super fragile."
</p>
<p>
To solve the problem, Wikimedia Tool Labs migrated parts of its infrastructure to Kubernetes, in preparation for eventually moving its entire system. Yuvi said Kubernetes greatly simplifies maintenance. The goal is to allow developers creating bots and other tools to use whatever development methods they want, but make it easier for the Wikimedia Tool Labs to maintain the required infrastructure for hosting and sharing them.
</p>
<p>
"With Kubernetes, I've been able to remove a lot of our custom-made code, which makes everything easier to maintain. Our users' code also runs in a more stable way than previously," says Yuvi.
</p>
</div>
</main>
</section>
<sectionclass="details">
<main>
<divclass="content">
<h4>Simplifying infrastructure and keeping wikis running better</h4>
<p>
Wikimedia Tool Labs has seen great success with the initial Kubernetes deployment. Old code is being simplified and eliminated, contributing developers don't have to change the way they write their tools and bots, and those tools and bots run in a more stable fashion than they have in the past. The paid staff and volunteers are able to better keep up with fixing issues.
</p>
<p>
In the future, with a more complete migration to Kubernetes, Wikimedia Tool Labs expects to make it even easier to host and maintain the bots and tools that help run wikis across the world. The tool labs already host approximately 1,300 tools and bots from 800 volunteers, with many more being submitted every day. Twenty percent of the tool labs' web tools that account for more than 60 percent of web traffic now run on Kubernetes. The tool labs has a 25-node cluster that keeps up with each new Kubernetes release. Many existing web tools are migrating to Kubernetes.
</p>
<p>
"Our goal is to make sure that people all over the world can share knowledge as easily as possible. Kubernetes helps with that, by making it easier for wikis everywhere to have the tools they need to thrive," says Yuvi.
<divclass="subhead">Cloud-Native Infrastructure Keeps Your Smart Home Connected</div>
</h1>
</div>
<divclass="details">
Company <b>Wink</b> Location <b>New York, N.Y.</b> Industry <b>Internet of Things Platform</b>
</div>
<hr>
<sectionclass="section1">
<divclass="cols">
<divclass="col1">
<h2>Challenge</h2>
Building a low-latency, highly reliable infrastructure to serve communications between millions of connected smart-home devices and the company’s consumer hubs and mobile app, with an emphasis on horizontal scalability, the ability to encrypt everything quickly and connections that could be easily brought back up if anything went wrong.
<br><br>
<h2>Solution</h2>
Across-the-board use of a Kubernetes-Docker-CoreOS Container Linux stack.<br><br>
</div>
<divclass="col2">
<h2>Impact</h2>
"Two of the biggest American retailers [Home Depot and Walmart] are carrying and promoting the brand and the hardware,” Wink Head of Engineering Kit Klein says proudly – though he adds that "it really comes with a lot of pressure. It’s not a retail situation where you have a lot of tech enthusiasts. These are everyday people who want something that works and have no tolerance for technical excuses.” And that’s further testament to how much faith Klein has in the infrastructure that the Wink team has built. With 80 percent of Wink’s workload running on a unified stack of Kubernetes-Docker-CoreOS, the company has put itself in a position to continually innovate and improve its products and services. Committing to this technology, says Klein, "makes building on top of the infrastructure relatively easy.”
</div>
</div>
</section>
<divclass="banner2">
<divclass="banner2text">
"It’s not proprietary, it’s totally open, it’s really portable. You can run all the workloads across different cloud providers. You can easily run a hybrid AWS or even bring in your own data center. That’s the benefit of having everything unified on one open source Kubernetes-Docker-CoreOS Container Linux stack. There are massive security benefits if you only have one Linux distro/machine image to validate. The benefits are enormous because you save money, and you save time.”<br><br><spanstyle="font-size:15px;letter-spacing:0.08em">- KIT KLEIN, HEAD OF ENGINEERING, WINK</span>
</div>
</div>
<sectionclass="section2">
<divclass="fullcol">
<h2>How many people does it take to turn on a light bulb?</h2>
Kit Klein whips out his phone to demonstrate. With a few swipes, the head of engineering at Wink pulls up the smart-home app created by the New York City-based company and taps the light button. "Honestly when you’re holding the phone and you’re hitting the light,” he says, "by the time you feel the pressure of your finger on the screen, it’s on. It takes as long as the signal to travel to your brain.”<br><br>
Sure, it takes just one finger and less than 200 milliseconds to turn on the light – or lock a door or change a thermostat. But what allows Wink to help consumers manage their connected smart-home products with such speed and ease is a sophisticated, cloud native infrastructure that Klein and his team built and continue to develop using a unified stack of CoreOS, the open-source operating system designed for clustered deployments, and Kubernetes, an open-source platform for automating deployment, scaling, and operations of application containers across clusters of hosts, providing container-centric infrastructure. "When you have a big, complex network of interdependent microservices that need to be able to discover each other, and need to be horizontally scalable and tolerant to failure, that’s what this is really optimized for,” says Klein. "A lot of people end up relying on proprietary services [offered by some big cloud providers] to do some of this stuff, but what you get by adopting CoreOS/Kubernetes is portability, to not be locked in to anyone. You can really make your own fate.”<br><br>
Indeed, Wink did. The company’s mission statement is to make the connected home accessible – that is, user-friendly for non-technical owners, affordable and perhaps most importantly, reliable. "If you can’t trust that when you hit the switch, you know a light is going to go on, or if you’re remote and you’re checking on your house and that information isn’t accurate, then the convenience of the system is lost,” says Klein. "So that’s where the infrastructure comes in.”<br><br>
Wink was incubated within Quirky, a company that developed crowd-sourced inventions. The Wink app was first introduced in 2013, and at the time, it controlled only a few consumer products such as the PivotPower Strip that Quirky produced in collaboration with GE. As smart-home products proliferated, Wink was launched in 2014 in Home Depot stores nationwide. Its first project: a hub that could integrate with smart products from about a dozen brands like Honeywell and Chamberlain. The biggest challenge would be to build the infrastructure to serve all those communications between the hub and the products, with a focus on maximizing reliability and minimizing latency.<br><br>
"When we originally started out, we were moving very fast trying to get the first product to market, the minimum viable product,” says Klein. "Lots of times you go down a path and end up having to backtrack and try different things. But in this particular case, we did a lot of the work up front, which led to us making a really sound decision to deploy it on CoreOS Container Linux. And that was very early in the life of it.”
</div>
</section>
<divclass="banner3">
<divclass="banner3text">
"...what you get by adopting CoreOS/Kubernetes is portability, to not be locked in to anyone. You can really make your own fate.”
</div>
</div>
<sectionclass="section3">
<divclass="fullcol">
Concern number one: Wink’s products need to connect to consumer devices in people’s homes, behind a firewall. "You don’t have an end point like a URL, and you don’t even know what ports are open behind that firewall,” Klein explains. "So you essentially need to have this thing wake up and talk to your system and then open real-time, bidirectional communication between the cloud and the device. And it’s really, really important that it’s persistent because you want to decrease as much as possible the overhead of sending a message – you never know when someone is going to turn on the lights.”<br><br>
With the earliest version of the Wink Hub, when you decided to turn your lights on or off, the request would be sent to the cloud and then executed. Subsequent updates to Wink’s software enabled local control, cutting latency down to about 10 milliseconds for many devices. But with the need for cloud-enabled integrations of an ever-growing ecosystem of smart home products, low-latency internet connectivity is still a critical consideration.
<br><br>
<h2>"You essentially need to have this thing wake up and talk to your system and then open real-time, bidirectional communication between the cloud and the device. And it’s really, really important that it’s persistent...you never know when someone is going to turn on the lights.”</h2>
In addition, Wink had other requirements: horizontal scalability, the ability to encrypt everything quickly, connections that could be easily brought back up if something went wrong. "Looking at this whole structure we started, we decided to make a secure socket-based service,” says Klein. "We’ve always used, I would say, some sort of clustering technology to deploy our services and so the decision we came to was, this thing is going to be containerized, running on Docker.”<br><br>
At the time – just over two years ago – Docker wasn’t yet widely used, but as Klein points out, "it was certainly understood by the people who were on the frontier of technology. We started looking at potential technologies that existed. One of the limiting factors was that we needed to deploy multi-port non-http/https services. It wasn’t really appropriate for some of the early cluster technology. We liked the project a lot and we ended up using it on other stuff for a while, but initially it was too targeted toward http workloads.”<br><br>
Once Wink’s backend engineering team decided on a Dockerized workload, they had to make decisions about the OS and the container orchestration platform. "Obviously you can’t just start the containers and hope everything goes well,” Klein says with a laugh. "You need to have a system that is helpful [in order] to manage where the workloads are being distributed out to. And when the container inevitably dies or something like that, to restart it, you have a load balancer. All sorts of housekeeping work is needed to have a robust infrastructure.”
</div>
</section>
<divclass="banner4">
<divclass="banner4text">
"Obviously you can’t just start the containers and hope everything goes well,” Klein says with a laugh. "You need to have a system that is helpful [in order] to manage where the workloads are being distributed out to. And when the container inevitably dies or something like that, to restart it, you have a load balancer. All sorts of housekeeping work is needed to have a robust infrastructure.”
</div>
</div>
<sectionclass="section4">
<divclass="fullcol">
Wink considered building directly on a general purpose Linux distro like Ubuntu (which would have required installing tools to run a containerized workload) and cluster management systems like Mesos (which was targeted toward enterprises with larger teams/workloads), but ultimately set their sights on CoreOS Container Linux. "A container-optimized Linux distribution system was exactly what we needed,” he says. "We didn’t have to futz around with trying to take something like a Linux distro and install everything. It’s got a built-in container orchestration system, which is Fleet, and an easy-to-use API. It’s not as feature-rich as some of the heavier solutions, but we realized that, at that moment, it was exactly what we needed.”<br><br>
Wink’s hub (along with a revamped app) was introduced in July 2014 with a short-term deployment, and within the first month, they had moved the service to the Dockerized CoreOS deployment. Since then, they’ve moved almost every other piece of their infrastructure – from third-party cloud-to-cloud integrations to their customer service and payment portals – onto CoreOS Container Linux clusters. <br><br>
Using this setup did require some customization. "Fleet is really nice as a basic container orchestration system, but it doesn’t take care of routing, sharing configurations, secrets, et cetera, among instances of a service,” Klein says. "All of those layers of functionality can be implemented, of course, but if you don’t want to spend a lot of time writing unit files manually – which of course nobody does – you need to create a tool to automate some of that, which we did.”<br><br>
Wink quickly embraced the Kubernetes container cluster manager when it was launched in 2015 and integrated with CoreOS core technology, and as promised, it ended up providing the features Wink wanted and had planned to build. "If not for Kubernetes, we likely would have taken the logic and library we implemented for the automation tool that we created, and would have used it in a higher level abstraction and tool that could be used by non-DevOps engineers from the command line to create and manage clusters,” Klein says. "But Kubernetes made that totally unnecessary – and is written and maintained by people with a lot more experience in cluster management than us, so all the better.” Now, an estimated 80 percent of Wink’s workload is run on Kubernetes on top of CoreOS Container Linux.
</div>
</section>
<divclass="banner5">
<divclass="banner5text">
"Stay close to the development. Understand why decisions are being made. If you understand the intent behind the project, from the technological intent to a certain philosophical intent, then it helps you understand how to build your system in harmony with those systems as opposed to trying to work against it.”
</div>
</div>
<sectionclass="section5">
<divclass="fullcol">
Wink’s reasons for going all in are clear: "It’s not proprietary, it’s totally open, it’s really portable,” Klein says. "You can run all the workloads across different cloud providers. You can easily run a hybrid AWS or even bring in your own data center. That’s the benefit of having everything unified on one Kubernetes-Docker-CoreOS Container Linux stack. There are massive security benefits if you only have one Linux distro to try to validate. The benefits are enormous because you save money, you save time.”<br><br>
Klein concedes that there are tradeoffs in every technology decision. "Cutting-edge technology is going to be scary for some people,” he says. "In order to take advantage of this, you really have to keep up with the technology. You can’t treat it like it’s a black box. Stay close to the development. Understand why decisions are being made. If you understand the intent behind the project, from the technological intent to a certain philosophical intent, then it helps you understand how to build your system in harmony with those systems as opposed to trying to work against it.”<br><br>
Wink, which was acquired by Flex in 2015, now controls 2.3 million connected devices in households all over the country. What’s next for the company? A new version of the hub - Wink Hub 2 - hit shelves last November – and is being offered for the first time at Walmart stores in addition to Home Depot. "Two of the biggest American retailers are carrying and promoting the brand and the hardware,” Klein says proudly – though he adds that "it really comes with a lot of pressure. It’s not a retail situation where you have a lot of tech enthusiasts. These are everyday people who want something that works and have no tolerance for technical excuses.” And that’s further testament to how much faith Klein has in the infrastructure that the Wink team has have built.<br><br>
Wink’s engineering team has grown exponentially since its early days, and behind the scenes, Klein is most excited about the machine learning Wink is using. "We built [a system of] containerized small sections of the data pipeline that feed each other and can have multiple outputs,” he says. "It’s like data pipelines as microservices.” Again, Klein points to having a unified stack running on CoreOS Container Linux and Kubernetes as the primary driver for the innovations to come. "You’re not reinventing the wheel every time,” he says. "You can just get down to work.” </div>
* **API request verb** - API 动词 `get`,`list`,`create`,`update`,`patch`,`watch`,`proxy`,`redirect`,`delete`和`deletecollection`用于资源请求。要确定资源 API 端点的请求动词,请参阅**确定下面的请求动词**.
A kubelet's HTTPS endpoint exposes APIs which give access to data of varying sensitivity,
and allow you to perform operations with varying levels of power on the node and within containers.
This document describes how to authenticate and authorize access to the kubelet's HTTPS endpoint.
## Kubelet authentication
By default, requests to the kubelet's HTTPS endpoint that are not rejected by other configured
authentication methods are treated as anonymous requests, and given a username of `system:anonymous`
and a group of `system:unauthenticated`.
To disable anonymous access and send `401 Unauthorized` responses to unauthenticated requests:
* start the kubelet with the `--anonymous-auth=false` flag
To enable X509 client certificate authentication to the kubelet's HTTPS endpoint:
* start the kubelet with the `--client-ca-file` flag, providing a CA bundle to verify client certificates with
* start the apiserver with `--kubelet-client-certificate` and `--kubelet-client-key` flags
* see the [apiserver authentication documentation](/docs/admin/authentication/#x509-client-certs) for more details
To enable API bearer tokens (including service account tokens) to be used to authenticate to the kubelet's HTTPS endpoint:
* ensure the `authentication.k8s.io/v1beta1` API group is enabled in the API server
* start the kubelet with the `--authentication-token-webhook`, `--kubeconfig`, and `--require-kubeconfig` flags
* the kubelet calls the `TokenReview` API on the configured API server to determine user information from bearer tokens
## Kubelet authorization
Any request that is successfully authenticated (including an anonymous request) is then authorized. The default authorization mode is `AlwaysAllow`, which allows all requests.
There are many possible reasons to subdivide access to the kubelet API:
* anonymous auth is enabled, but anonymous users' ability to call the kubelet API should be limited
* bearer token auth is enabled, but arbitrary API users' (like service accounts) ability to call the kubelet API should be limited
* client certificate auth is enabled, but only some of the client certificates signed by the configured CA should be allowed to use the kubelet API
To subdivide access to the kubelet API, delegate authorization to the API server:
* ensure the `authorization.k8s.io/v1beta1` API group is enabled in the API server
* start the kubelet with the `--authorization-mode=Webhook`, `--kubeconfig`, and `--require-kubeconfig` flags
* the kubelet calls the `SubjectAccessReview` API on the configured API server to determine whether each request is authorized
The kubelet authorizes API requests using the same [request attributes](/docs/admin/authorization/#request-attributes) approach as the apiserver.
The verb is determined from the incoming request's HTTP verb:
HTTP verb | request verb
----------|---------------
POST | create
GET, HEAD | get
PUT | update
PATCH | patch
DELETE | delete
The resource and subresource is determined from the incoming request's path:
Kubelet API | resource | subresource
-------------|----------|------------
/stats/\* | nodes | stats
/metrics/\* | nodes | metrics
/logs/\* | nodes | log
/spec/\* | nodes | spec
*all others* | nodes | proxy
The namespace and API group attributes are always an empty string, and
the resource name is always the name of the kubelet's `Node` API object.
When running in this mode, ensure the user identified by the `--kubelet-client-certificate` and `--kubelet-client-key`
flags passed to the apiserver is authorized for the following attributes:
This document describes how to set up TLS client certificate bootstrapping for kubelets.
Kubernetes 1.4 introduced an API for requesting certificates from a cluster-level Certificate Authority (CA). The original intent of this API is to enable provisioning of TLS client certificates for kubelets. The proposal can be found [here](https://github.com/kubernetes/kubernetes/pull/20439)
and progress on the feature is being tracked as [feature #43](https://github.com/kubernetes/features/issues/43).
## kube-apiserver configuration
The API server should be configured with an [authenticator](/docs/admin/authentication/) that can authenticate tokens as a user in the `system:bootstrappers` group.
This group will later be used in the controller-manager configuration to scope approvals in the default approval
controller. As this feature matures, you should ensure tokens are bound to a Role-Based Access Control (RBAC) policy which limits requests
(using the bootstrap token) strictly to client requests related to certificate provisioning. With RBAC in place, scoping the tokens to a group allows for great flexibility (e.g. you could disable a particular bootstrap group's access when you are done provisioning the nodes).
While any authentication strategy can be used for the kubelet's initial bootstrap credentials, the following two authenticators are recommended for ease of provisioning.
Add the `--token-auth-file=FILENAME` flag to the kube-apiserver command (in your systemd unit file perhaps) to enable the token file.
See docs [here](/docs/admin/authentication/#static-token-file) for further details.
### Client certificate CA bundle
Add the `--client-ca-file=FILENAME` flag to the kube-apiserver command to enable client certificate authentication,
referencing a certificate authority bundle containing the signing certificate (e.g. `--client-ca-file=/var/lib/kubernetes/ca.pem`).
## kube-controller-manager configuration
The API for requesting certificates adds a certificate-issuing control loop to the Kubernetes Controller Manager. This takes the form of a
[cfssl](https://blog.cloudflare.com/introducing-cfssl/) local signer using assets on disk. Currently, all certificates issued have one year validity and a default set of key usages.
### Signing assets
You must provide a Certificate Authority in order to provide the cryptographic materials necessary to issue certificates.
This CA should be trusted by kube-apiserver for authentication with the `--client-ca-file=FILENAME` flag. The management
of the CA is beyond the scope of this document but it is recommended that you generate a dedicated CA for Kubernetes.
Both certificate and key are assumed to be PEM-encoded.
An admin would create a `ClusterRoleBinding` targeting that group.
```yml
# Approve all CSRs for the group "system:bootstrappers"
kind:ClusterRoleBinding
apiVersion:rbac.authorization.k8s.io/v1beta1
metadata:
name:auto-approve-csrs-for-group
subjects:
- kind:Group
name:system:bootstrappers
apiGroup:rbac.authorization.k8s.io
roleRef:
kind:ClusterRole
name:approve-node-client-csr
apiGroup:rbac.authorization.k8s.io
```
To let a node renew its own credentials, an admin can construct a `ClusterRoleBinding` targeting
that node's credentials:
```yml
kind:ClusterRoleBinding
apiVersion:rbac.authorization.k8s.io/v1beta1
metadata:
name:node1-client-cert-renewal
subjects:
- kind:User
name:system:node:node-1# Let "node-1" renew its client certificate.
apiGroup:rbac.authorization.k8s.io
roleRef:
kind:ClusterRole
name:approve-node-client-renewal-csr
apiGroup:rbac.authorization.k8s.io
```
Deleting the binding will prevent the node from renewing its client credentials, effectively
removing it from the cluster once its certificate expires.
## kubelet configuration
To request a client certificate from kube-apiserver, the kubelet first needs a path to a kubeconfig file that contains the
bootstrap authentication token. You can use `kubectl config set-cluster`, `set-credentials`, and `set-context` to build this kubeconfig. Provide the name `kubelet-bootstrap` to `kubectl config set-credentials` and include `--token=<token-value>` as follows:
When starting the kubelet, if the file specified by `--kubeconfig` does not exist, the bootstrap kubeconfig is used to request a client certificate from the API server. On approval of the certificate request and receipt back by the kubelet, a kubeconfig file referencing the generated key and obtained certificate is written to the path specified by `--kubeconfig`. The certificate and key file will be placed in the directory specified by `--cert-dir`.
**Note:** The following flags are required to enable this bootstrapping when starting the kubelet:
`RotateKubeletClientCertificate` causes the kubelet to rotate its client certificates by creating new CSRs as its existing
credentials expire. `RotateKubeletServerCertificate` causes the kubelet to both request a serving certificate after
bootstrapping its client credentials and rotate the certificate. The serving cert currently does not request DNS or IP
SANs.
## kubectl approval
The signing controller does not immediately sign all certificate requests. Instead, it waits until they have been flagged with an
"Approved" status by an appropriately-privileged user. This is intended to eventually be an automated process handled by an external
approval controller, but for the alpha version of the API it can be done manually by a cluster administrator using kubectl.
An administrator can list CSRs with `kubectl get csr` and describe one in detail with `kubectl describe csr <name>`. Before the 1.6 release there were
[no direct approve/deny commands](https://github.com/kubernetes/kubernetes/issues/30163) so an approver had to update
the Status field directly ([rough how-to](https://github.com/gtank/csrctl)). Later versions of Kubernetes offer `kubectl certificate approve <name>` and `kubectl certificate deny <name>` commands.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.