Compare commits

...

1142 Commits

Author SHA1 Message Date
Andrew Chen e5238e8a92 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Fix a couple of typos in tasks/debug-application-cluster/audit.md
  Add an explanation of how the kubeadm kubelet dropin file works and a note about cAdvisor
  All files for both new case study pages (#4235)
  Add empty layout template
2017-06-30 17:58:32 -07:00
Andrew Chen b82ec67530 Merge pull request #4244 from mattmoyer/patch-1
Fix a couple of typos in tasks/debug-application-cluster/audit.md
2017-06-30 17:57:49 -07:00
Andrew Chen d99ba502ae Merge pull request #4239 from CaoShuFeng/invalid_audit_example
Use the new right link for audit policy example
2017-06-30 17:57:19 -07:00
Andrew Chen 89e1dd5043 Merge pull request #4238 from ahmetb/netpolicy-apigroup
Use correct apigroup for NetworkPolicy
2017-06-30 17:55:02 -07:00
Matt Moyer ea504e9353 Fix a couple of typos in tasks/debug-application-cluster/audit.md 2017-06-30 09:27:05 -05:00
Lucas Käldström b9f0a5d0f4 Add an explanation of how the kubeadm kubelet dropin file works and a note about cAdvisor 2017-06-30 01:19:35 -07:00
Alex Contini 826ca8d51f All files for both new case study pages (#4235)
* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* fix layout and logo

* fix golfnow layout and logo

* fix golfnow link
2017-06-30 01:06:36 -07:00
Andrew Chen 3f70472680 Merge pull request #4243 from kubernetes/chenopis-4235-prepatch
Add empty layout template
2017-06-30 00:47:56 -07:00
Andrew Chen 1056438310 Add empty layout template 2017-06-30 00:40:33 -07:00
Andrew Chen 06a58cd1b5 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  v1.7 patch 01
  kubernetes-cn-translation-update (#4182)
2017-06-30 00:09:22 -07:00
Andrew Chen 3cb315606c v1.7 patch 01 2017-06-30 00:02:17 -07:00
Dragons c7b1119a98 kubernetes-cn-translation-update (#4182)
* what-is-kubernetes-pr

* kubernetes-basics-pr

* kubernetes-basics-cluster-pr

* kubernetes-basics-deploy-pr

* kubernetes-basics/explore-pr

* kubernetes-basics-expose-pr

* kubernetes-basics-scale-pr

* kuberntes-basics-update-pr

* tutorials-object-management-kubectl-object-management-pr

* tutorials-object-management-kubectl-imperative-object-management-command-pr

* xingzhou-fix-pr
2017-06-29 23:37:40 -07:00
Andrew Chen 8d806d89de Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Release 1.7 (#4094)
2017-06-29 22:56:19 -07:00
Cao Shufeng 2ea2b8a24c Use the new right link for audit policy example
v1.7.0-rc.1 tag doesn't contain this pr:
https://github.com/kubernetes/kubernetes/pull/48086
so, it's a wrong example for users.
Uese the new v1.7.0 tag instead.
2017-06-30 13:40:04 +08:00
zhangchaolei aae3bfaf3e Release 1.7 (#4094)
* Minor fixes in the Deployment doc

Signed-off-by: Michail Kargakis <mkargaki@redhat.com>

* add NodeRestriction to admission-controllers (#3842)

* Admins Can Configure Zones in Storage Class

The PR #38505 (https://github.com/kubernetes/kubernetes/pull/38505) added zones optional parameter to Storage Class for AWS and GCE provisioners.

That's why documentation needs to be updated accordingly.

* document custom resource definitions

* add host paths to psp (#3971)

* add host paths to psp

* add italics

* Update ConfigMap doc to explain TTL-based cache updates (#3989)

* Update ConfigMap doc to explain TTL-based cache updates

* swap word order

Change "When a ConfigMap being already consumed..." to "When a ConfigMap already being consumed..."

* Update NetworkPolicy docs for v1

* StorageOS Volume plugin

* Update GPU docs

* docs: HPA autoscaling/v2alpha1 status conditions

This commit documents the new status conditions feature for HPA
autoscaling/v2alpha1.  It demonstrates how to get the status conditions
using `kubectl describe`, and how to interpret them.

* Update description about NodeRestriction

kubelet node can alse create mirror pods for their own static pods.

* adding storage as a supported resource to node allocatable

Signed-off-by: Vishnu kannan <vishnuk@google.com>

* Add documentation for podpreset opt-out annotation

This adds the annotation for having the podpreset admission controller
to skip (opt-out) manipulating the pod spec.

Also, the annotation format for what presets have acted on a pod has
been modified to add a prefix of "podpreset-". The new naming makes it such
that there is no chance of collision with the newly introduced opt-out
annotation (or future ones yet to be added).

Opt-out annotation PR:
kubernetes/kubernetes#44965

* Update PDB documentation to explain new field (#3885)

* update-docs-pdb

* Addressed erictune@'s comments

* Fix title and add a TOC to the logging concept page

* Patch #4118 for typos

* Describe setting coredns server in nameserver resolv chain

* Address comments in PR #3997.

Comment is in
https://github.com/kubernetes/kubernetes.github.io/pull/3997/files/f6eb59c67e28efc298c87b1ef49a96bc6adacd1e#diff-7a14981f3dd8eb203f897ce6c11d9828

* Update task for DaemonSet history and rollback (#4098)

* Update task for DaemonSet history and rollback

Also remove mentions of templateGeneration field because it's deprecated

* Address comments

* removed lt and gt as operators (#4152)

* removed lt and gt as operators

* replace lt and gt for node-affinfity

* updated based on bsalamat review

* Initial draft of upgrade guide for kubeadm clusters.

In-place upgrades are supported between 1.6 and 1.7 releases. Rollback
instructions to come in a separate commit.

Fixes https://github.com/kubernetes/kubeadm/issues/278

* Add local volume documentation (#4050)

* Add local volume documentation

* Add PV local volume example

* Patch PR #3999

* Add documentation for Stackdriver event exporter

* Add documentation about controller metrics

* Federation: Add task for setting up placement policies (#4075)

* Add task for setting up placement policies

* Update version of management sidecar in policy engine deployment

* Address @nikhiljindal's comments

- Lower case filenames
- Comments in policy
- Typo fixes
- Removed type LoadBalancer from OPA Service

* Add example that sets cluster selector

Per-@nikhiljindal's suggestion

* Fix wording and templating per @chenopis

* PodDisruptionBudget documentation Improvements (#4140)

* Changes from #3885

Title: Update PDB documentation to explain new field
Author: foxish

* Added Placeholder Disruptions Concept Guide

New file: docs/concepts/workloads/pods/disruptions.md
Intented contents: concept for Pod Disruption Budget,
 cross reference to Eviction and Preemption docs.
Linked from: concepts > workloads > pods

* Added placeholder Configuring PDB Task

New file: docs/tasks/run-application/configure-pdb.md
Intented contents: task for writing a Pod Disruption Budget.
Linked from: tasks > configuring-applications > configure pdb.

* Add refs to the "drain a node" task.

* Refactor PDB docs.

Move the "Requesting an eviction" section from:
docs/tasks/administer-cluster/configure-pod-disruption-budget.md
-- which is going away -- to:
docs/tasks/administer-cluster/safely-drain-node.md

The move is verbatim, except for an introductory sentence.

Also added assignees.

* Refactor of PDB docs

Moved the section:
Specifying a PodDisruptionBudget
from:
docs/tasks/administer-cluster/configure-pod-disruption-budget.md
to:
docs/tasks/run-application/configure-pdb.md
because that former file is going away.
Move is verbatim.

* Explain how Eviction tools should handle failures

* Refactor PDB docs

Move text from:
docs/tasks/administer-cluster/configure-pod-disruption-budget.md
to:
docs/concepts/workloads/pods/disruptions.md

Delete the now empty:
docs/tasks/administer-cluster/configure-pod-disruption-budget.md

Added a redirects_from section to the new doc, containing the path
of the now-deleted doc, plus all the redirects from the deleted
doc.

* Expand PDB Concept guide

Building on a little content from the old task,
greatly expanded the Disruptions concept
guide, including an abstract example.

* Update creating a pdb Task.

* Address review comments.

* Fixed for all cody-clark's review comments

* Address review comments from mml

* Address review comments from maisem

* Fix missing backtick

* Api and Kubectl reference docs updates for 1.7 (#4193)

* Fix includes groups

* Generated kubectl docs for 1.7

* Generated references docs for 1.7 api

* Document node authorization mode

* API Aggregator (#4173)

* API Aggregator

* Additional bullet points

* incorporated feedback for apiserver-aggregation.md

* split setup-api-aggregator.md into two docs and address feedback

* fix link

* addressed docs feedback

* incorporate feedback

* integrate feedback

* Add documentation for DNS stub domains (#4063)

* Add documentation for DNS stub domains

* add additional prereq

* fix image path

* review feedback

* minor grammar and style nits

* documentation for using hostAliases to manage hosts file (#4080)

* documentation for using hostAliases to manage hosts file

* add to table of contents

* review comments

* update the right command to see hosts file

* reformat doc based on suggestion and change some wording

* Fix typo for #4080

* Patch PR #4063

* Fix wording in placement policy task introduction

* Add update to statefulset concepts and basic tutorial (#4174)

* Add update to statefulset concpets and basic tutorial

* Address tech comments.

* Update ESIPP docs for new added API fields

* Custom resource docs

* update audit document with advanced audit features added in 1.7

* kubeadm v1.7 documentation updates (#4018)

* v1.7 updates for kubeadm

* Address review comments

* Address Luke's comments

* Encrypting secrets at rest and cluster security guide

* Edits for Custom DNS Documentation (#4207)

* reorganize custom dns doc

* format fixes

* Update version numbers to 1.7

* Patch PR #4140 (#4215)

* Patch PR #4140

* fix link and typos

* Update PR template

* Update TLS bootstrapping with 1.7 features

This includes documenting the new CSR approver built into the
controller manager and the kubelet alpha features for certificate
rotation.

Since the CSR approver changed over the 1.7 release cycle we need
to call out the migration steps for those using the alpha feature.
This document as a whole could probably use some updates, but the
main focus of this PR is just to get these features minimally
documented before the release.

* Federated ClusterSelector

formatting updates from review

* complete PR #4181 (#4223)

* complete PR #4181

* fix security link

* Extensible admission controller (#4092)

* extensible-admission-controllers

* Update extensible-admission-controllers.md

* more on initializers

* fixes

* Expand external admission webhooks documentation

* wrap at 80 chars

* more

* add reference

* Use correct apigroup for network policy

* Docs changes to PR #4092 (#4224)

* Docs changes to PR #4092

* address feedback

* add doc for --as-group in cli

Add doc for this pr:
https://github.com/kubernetes/kubernetes/pull/43696
2017-06-29 22:39:40 -07:00
Ahmet Alp Balkan 1f6a98d134 Use correct apigroup for NetworkPolicy
Follow-up to #4225. networking -> networking.k8s.io.

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-06-29 21:49:53 -07:00
Andrew Chen ac5c52f860 Merge branches 'release-1.7' and 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'release-1.7' of https://github.com/kubernetes/kubernetes.github.io:
  add doc for --as-group in cli

* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  cassandra.md: Fix Liquid syntax warning
2017-06-29 16:03:38 -07:00
Andrew Chen c606bbdc31 Merge pull request #4226 from CaoShuFeng/as-group
add doc for --as-group in cli
2017-06-29 15:59:44 -07:00
Ahmet Alp Balkan cbdb17706f cassandra.md: Fix Liquid syntax warning
Fixes #4198

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-06-29 15:58:48 -07:00
Cao Shufeng 181bdba067 add doc for --as-group in cli
Add doc for this pr:
https://github.com/kubernetes/kubernetes/pull/43696
2017-06-29 15:51:40 +08:00
Andrew Chen d74dbcc7d5 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  add small blurb about reclaim policies and SCs
2017-06-28 23:51:53 -07:00
Patrick Christopher 46be5c6bc7 add small blurb about reclaim policies and SCs 2017-06-28 23:27:17 -07:00
Andrew Chen b40d09fe77 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Update links to proper repos

# Conflicts:
#	docs/admin/kubeadm.md
#	docs/concepts/overview/kubernetes-api.md
#	docs/reference/api-overview.md
#	docs/setup/independent/create-cluster-kubeadm.md
#	docs/tasks/administer-cluster/configure-pod-disruption-budget.md
2017-06-28 22:29:21 -07:00
Christoph Blecker 2e192598a0 Update links to proper repos 2017-06-28 22:08:36 -07:00
Andrew Chen 26e3c39204 Merge pull request #4225 from thockin/release-1.7
Use correct apigroup for network policy
2017-06-28 22:04:40 -07:00
Andrew Chen 61892b82ec Docs changes to PR #4092 (#4224)
* Docs changes to PR #4092

* address feedback
2017-06-28 22:03:44 -07:00
Tim Hockin 472eccc83c Use correct apigroup for network policy 2017-06-28 17:25:22 -07:00
Andrew Chen b9593e8e1d Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Add no_proxy settings to use minikube and kubectl (#4108)
  Fix installing autocompletion documentation (#4189)
  Set storageClassName to match earlier manual disk creation
2017-06-28 16:39:36 -07:00
Chao Xu 19b386d06e Extensible admission controller (#4092)
* extensible-admission-controllers

* Update extensible-admission-controllers.md

* more on initializers

* fixes

* Expand external admission webhooks documentation

* wrap at 80 chars

* more

* add reference
2017-06-28 16:38:44 -07:00
Andrew Chen 7df02064bd complete PR #4181 (#4223)
* complete PR #4181

* fix security link
2017-06-28 16:37:32 -07:00
emaildanwilson ad48f6720f Federated ClusterSelector
formatting updates from review
2017-06-28 13:29:07 -07:00
Andrew Chen 93861d8371 Merge pull request #4208 from ericchiang/tls-boostrapping-17
Update TLS bootstrapping with 1.7 features
2017-06-28 12:02:42 -07:00
Eric Chiang fbb1904823 Update TLS bootstrapping with 1.7 features
This includes documenting the new CSR approver built into the
controller manager and the kubelet alpha features for certificate
rotation.

Since the CSR approver changed over the 1.7 release cycle we need
to call out the migration steps for those using the alpha feature.
This document as a whole could probably use some updates, but the
main focus of this PR is just to get these features minimally
documented before the release.
2017-06-28 11:56:49 -07:00
Yohann B 206a264c0e Add no_proxy settings to use minikube and kubectl (#4108)
* Add no_proxy settings one might need to use minikube and kubectl behind a proxy.

* add extra line before shell block for formatting

* include suggestions from chenopis
2017-06-28 11:51:25 -07:00
Bastian Klein 00df48fb9c Fix installing autocompletion documentation (#4189)
* Fix installing autocompletion documentation

The written solution did not work for me with the error `-bash: __git_ps1: command not found`. Since the auto-completion is already installed you can simply add the Kubernetes autocompletion to it.

* Remove sourcing bash-completion in .bash_profile
2017-06-28 11:49:52 -07:00
Andrew Chen ad23d013d7 Merge pull request #4219 from chaintng/master
Set storageClassName to match earlier manual disk creation
2017-06-28 11:49:11 -07:00
Andrew Chen 7b069cf1d5 Merge pull request #4181 from smarterclayton/secrets
Encrypting secrets at rest and cluster security guide
2017-06-28 10:02:31 -07:00
Chainarong Tangsurakit c6d4695cb8 Set storageClassName to match earlier manual disk creation
https://github.com/kubernetes/kubernetes.github.io/issues/4218
2017-06-28 14:02:28 +07:00
Andrew Chen de56f68c61 Merge pull request #4217 from kubernetes/chenopis-pr-template-patch
Update PR template
2017-06-27 22:45:41 -07:00
Andrew Chen 6d1139912b Update PR template 2017-06-27 22:34:51 -07:00
Andrew Chen 7b5394e725 Patch PR #4140 (#4215)
* Patch PR #4140

* fix link and typos
2017-06-27 21:42:07 -07:00
Andrew Chen 7d9ceddf7b Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  outdate link (#4199)
2017-06-27 21:10:46 -07:00
jianglingxia 68b4abc1f4 outdate link (#4199)
* outdate link

* resubmit the outdate link
2017-06-27 21:08:02 -07:00
Andrew Chen a424a4785b Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Removed -fs from troubleshooting command (#4177)
2017-06-27 16:48:26 -07:00
Andrew Chen d918cc9ba7 Merge pull request #4210 from kubernetes/chenopis-update-ver
Update version numbers to 1.7
2017-06-27 16:42:49 -07:00
Zachary Corleissen 37311bc0d8 Removed -fs from troubleshooting command (#4177)
* Removed -fs from troubleshooting command

* Add YAML file for configmaps in concepts

* Add new topic for configmaps in concepts

* Add configuration entry for understanding configmaps

* Move Understanding Configmaps to a separate concept file

* Revert "Move Understanding Configmaps to a separate concept file"

This reverts commit 71bd80d7bccd090d0aa1829ae9e4db6cc4dc590c.

* Revert "Add configuration entry for understanding configmaps"

This reverts commit c27fc13f56453dff6e6b8b8f1f9641cbad8ace53.

* Revert "Add new topic for configmaps in concepts"

This reverts commit 3d535f59170a4b5cb290975871f167217484e7ab.

* Revert "Add YAML file for configmaps in concepts"

This reverts commit 8ecabd6d106647631819441be8bf7e834f0dbb54.
2017-06-27 16:41:01 -07:00
Andrew Chen a1ed636b58 Update version numbers to 1.7 2017-06-27 16:34:04 -07:00
Jessica Yao a18484cad2 Edits for Custom DNS Documentation (#4207)
* reorganize custom dns doc

* format fixes
2017-06-27 16:26:46 -07:00
Andrew Chen 3e5b11f901 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Update definitions for Task and Tutorial. (#4206)
2017-06-27 16:11:48 -07:00
Steve Perry 2727003775 Update definitions for Task and Tutorial. (#4206)
* Update definitions for Task and Tutorial.

* Fix broken links.

* Still fixing broken links.
2017-06-27 15:26:50 -07:00
Clayton Coleman f8f3ec1ca4 Encrypting secrets at rest and cluster security guide 2017-06-27 15:41:39 -04:00
Andrew Chen 7152ca37f8 Merge pull request #4101 from ericchiang/advanced-audit-logging
update audit document with advanced audit features added in 1.7
2017-06-27 11:37:18 -07:00
Lucas Käldström 0391995573 kubeadm v1.7 documentation updates (#4018)
* v1.7 updates for kubeadm

* Address review comments

* Address Luke's comments
2017-06-27 11:32:54 -07:00
Eric Chiang 3ea952f04c update audit document with advanced audit features added in 1.7 2017-06-27 11:11:02 -07:00
Anthony Yeh 171a5aeddf Custom resource docs 2017-06-27 10:27:51 -07:00
Andrew Chen d8f5b4f8a4 Merge pull request #4093 from MrHohn/release-1.7-esipp-ga
Update ESIPP documentation to reflect new fields
2017-06-27 10:24:19 -07:00
Zihong Zheng 48caf205e9 Update ESIPP docs for new added API fields 2017-06-27 10:03:13 -07:00
Andrew Chen 2f4c251a9f Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Update script.js
2017-06-27 10:01:56 -07:00
Andrew Chen 55d63bb3ea Merge pull request #4204 from tsandall/patch-1
Fix wording in placement policy task introduction
2017-06-27 09:48:19 -07:00
Kenneth Owens 4641b51e1b Add update to statefulset concepts and basic tutorial (#4174)
* Add update to statefulset concpets and basic tutorial

* Address tech comments.
2017-06-27 09:46:39 -07:00
Andrew Chen 329aa4672f Merge pull request #4203 from kubernetes/chenopis-4063-patch
Patch PR #4063
2017-06-27 09:43:38 -07:00
Andrew Chen 3d5e8086b6 Merge pull request #4201 from kubernetes/ryanmcginnis-patch-1-1
Prevents sweetAlert in copyCode function from being cut off on page
2017-06-27 09:42:45 -07:00
Torin Sandall 34dfba7d56 Fix wording in placement policy task introduction 2017-06-27 09:42:19 -07:00
Andrew Chen 8df3312cdc Patch PR #4063 2017-06-27 09:33:50 -07:00
Andrew Chen 0e08493616 Merge pull request #4202 from kubernetes/chenopis-4080-patch
Fix typo for PR #4080
2017-06-27 09:31:24 -07:00
Andrew Chen a3b46cfcdf Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Replace remaining kargo usages to kubespray
  update example templates
  redirect fix for meanstack article
2017-06-27 09:23:04 -07:00
Andrew Chen b2161bcc6a Fix typo for #4080 2017-06-27 09:21:29 -07:00
Ricky Pai 79754a0ffa documentation for using hostAliases to manage hosts file (#4080)
* documentation for using hostAliases to manage hosts file

* add to table of contents

* review comments

* update the right command to see hosts file

* reformat doc based on suggestion and change some wording
2017-06-27 09:19:41 -07:00
Ryan McGinnis f0c445980d Update script.js
In copyCode function, removes target.value from if (succeed) sweetAlert function. 

Sometimes target.value is too long, which causes the sweetAlert box to be cut off from the page. The confirmation button also gets cut off, which means that the user can't close the box, which means they need to refresh the page to continue.

Instead, the alert tells the user which file was copied.
2017-06-27 08:58:02 -07:00
Dan Kohn 67e4f54aaa Replace remaining kargo usages to kubespray 2017-06-27 08:49:03 -07:00
Andrew Chen 97e1775cc2 Merge pull request #4077 from liggitt/node-authz
Document node authorization mode
2017-06-27 00:45:55 -07:00
Bowei Du c3ebbbe00f Add documentation for DNS stub domains (#4063)
* Add documentation for DNS stub domains

* add additional prereq

* fix image path

* review feedback

* minor grammar and style nits
2017-06-27 00:38:14 -07:00
Andrew Chen 025f2faff4 API Aggregator (#4173)
* API Aggregator

* Additional bullet points

* incorporated feedback for apiserver-aggregation.md

* split setup-api-aggregator.md into two docs and address feedback

* fix link

* addressed docs feedback

* incorporate feedback

* integrate feedback
2017-06-27 00:22:47 -07:00
Jordan Liggitt 91e90da99f Document node authorization mode 2017-06-27 02:07:30 -04:00
Andrew Chen 56ae8bf3f7 Merge pull request #4197 from kubernetes/chenopis-task-template-patch
update example templates
2017-06-26 16:33:52 -07:00
Andrew Chen 4d3a7a315d update example templates 2017-06-26 16:12:21 -07:00
Andrew Chen d8a8d8d718 Merge pull request #4195 from ahmetb/meanstack-fix
redirect fix for meanstack article
2017-06-26 15:51:48 -07:00
Ahmet Alp Balkan d94196e14f redirect fix for meanstack article
Linking to the correct article.

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-06-26 15:41:17 -07:00
Phillip Wittrock 57a769f506 Api and Kubectl reference docs updates for 1.7 (#4193)
* Fix includes groups

* Generated kubectl docs for 1.7

* Generated references docs for 1.7 api
2017-06-26 15:37:56 -07:00
Eric Tune 4ff5587583 PodDisruptionBudget documentation Improvements (#4140)
* Changes from #3885

Title: Update PDB documentation to explain new field
Author: foxish

* Added Placeholder Disruptions Concept Guide

New file: docs/concepts/workloads/pods/disruptions.md
Intented contents: concept for Pod Disruption Budget,
 cross reference to Eviction and Preemption docs.
Linked from: concepts > workloads > pods

* Added placeholder Configuring PDB Task

New file: docs/tasks/run-application/configure-pdb.md
Intented contents: task for writing a Pod Disruption Budget.
Linked from: tasks > configuring-applications > configure pdb.

* Add refs to the "drain a node" task.

* Refactor PDB docs.

Move the "Requesting an eviction" section from:
docs/tasks/administer-cluster/configure-pod-disruption-budget.md
-- which is going away -- to:
docs/tasks/administer-cluster/safely-drain-node.md

The move is verbatim, except for an introductory sentence.

Also added assignees.

* Refactor of PDB docs

Moved the section:
Specifying a PodDisruptionBudget
from:
docs/tasks/administer-cluster/configure-pod-disruption-budget.md
to:
docs/tasks/run-application/configure-pdb.md
because that former file is going away.
Move is verbatim.

* Explain how Eviction tools should handle failures

* Refactor PDB docs

Move text from:
docs/tasks/administer-cluster/configure-pod-disruption-budget.md
to:
docs/concepts/workloads/pods/disruptions.md

Delete the now empty:
docs/tasks/administer-cluster/configure-pod-disruption-budget.md

Added a redirects_from section to the new doc, containing the path
of the now-deleted doc, plus all the redirects from the deleted
doc.

* Expand PDB Concept guide

Building on a little content from the old task,
greatly expanded the Disruptions concept
guide, including an abstract example.

* Update creating a pdb Task.

* Address review comments.

* Fixed for all cody-clark's review comments

* Address review comments from mml

* Address review comments from maisem

* Fix missing backtick
2017-06-26 13:54:25 -07:00
Andrew Chen 098b4a84ef Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  /docs/samples revamp: move examples to /tutorials
  Copy-to-clipboard fix (#4190)
2017-06-26 11:54:33 -07:00
Ahmet Alp Balkan 9ec9c73466 /docs/samples revamp: move examples to /tutorials
Addresses the work described at #4134.

- Remove /docs/samples page: This page mostly had links to examples on
  kubernetes/kubernetes (examples dir) which is now at kubernetes/examples
  repository. It was linking to README.md files for tutorials. Now removing
  this page as we are moving tutorials from kubernetes/examples to here:

  - Create redirects from /docs/samples/ to /docs/tutorials/ (both JS and
    redirect_from).
  - Deprecate "MEAN Stack" tutorial: This tutorial overlaps quite a bit with
    existing "maintained" examples and has been out-of-date for a while.
    Creating an external redirect to its original and more up-to-date location:
    https://medium.com/google-cloud/running-a-mean-stack-on-google-cloud-platform-with-app-engine-and-mongolab-4bbd2040ea75

- Import README.md files of maintained examples (guestbook, wordpress+mysql and
  cassandra) to this repository and serve them under /docs/tutorial.

- Update /docs/tutorials ToC:
  - Link to imported tutorials.
  - Fix missing articles on sidebar (_data/tutorials.yml) and make the tutorials
    listed on tutorials/index.md available on the sidebar (closes #4007).

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-06-26 11:22:35 -07:00
Torin Sandall 5825ea1af0 Federation: Add task for setting up placement policies (#4075)
* Add task for setting up placement policies

* Update version of management sidecar in policy engine deployment

* Address @nikhiljindal's comments

- Lower case filenames
- Comments in policy
- Typo fixes
- Removed type LoadBalancer from OPA Service

* Add example that sets cluster selector

Per-@nikhiljindal's suggestion

* Fix wording and templating per @chenopis
2017-06-26 11:13:43 -07:00
Andrew Chen 3d417575df Merge pull request #4138 from gnufied/controller-metrics
Add documentation about controller metrics
2017-06-26 11:12:43 -07:00
Ahmet Alp Balkan d33222a6c3 Copy-to-clipboard fix (#4190)
* Copy-to-clipboard fix

target.setSelectionRange(0, target.value.length); does not always seem to be
working. It doesn't work once the text is unselected. Using textarea.select()
function: https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/select

Fixes #3965.

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

* Empty commit

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-06-26 11:12:14 -07:00
Andrew Chen fbbd8922a4 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Document kubeadm KUBELET_DNS_ARGS issue
  CronJobs aren't enabled in 1.6 by default
  Fix typo
  Document pod-template-hash label
  Rename last remaining reference of kargo to kubespray
2017-06-26 10:58:27 -07:00
Hemant Kumar 99ff364e61 Add documentation about controller metrics 2017-06-26 13:16:54 -04:00
Andrew Chen d7aeb5cf41 Merge pull request #4132 from CaoShuFeng/NodeRestriction
Update description about NodeRestriction
2017-06-26 09:22:29 -07:00
Jamie Hannaford ddb6636f2c Document kubeadm KUBELET_DNS_ARGS issue 2017-06-26 09:00:20 -07:00
Denis Gladkikh 8716e152b3 CronJobs aren't enabled in 1.6 by default 2017-06-26 08:56:03 -07:00
hanks 386a2a0982 Fix typo
trivial update `kublet` to `kubelet`
2017-06-26 08:46:54 -07:00
Andrew Chen c2bc54a4db Merge pull request #4155 from crassirostris/add-event-exporter-doc-page
Add documentation for Stackdriver event exporter
2017-06-26 08:45:47 -07:00
Michail Kargakis 8c414800a0 Document pod-template-hash label
Signed-off-by: Michail Kargakis <mkargaki@redhat.com>
2017-06-25 20:42:50 -07:00
Andrew Chen 25b8f9a799 Merge pull request #4187 from Starefossen/patch-1
Rename last remaining reference of kargo to kubespray
2017-06-25 14:35:09 -07:00
Hans Kristian Flaatten 9794339d2a Rename last remaining reference of kargo to kubespray 2017-06-25 22:46:02 +02:00
Andrew Chen 9e283a542a Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  fixed loopback plugin link
2017-06-25 12:29:05 -07:00
Matej Baćo 9347a503c8 fixed loopback plugin link 2017-06-25 12:23:10 -07:00
Andrew Chen 5882ed2963 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Document how to use custom certs with kubeadm (#4113)
  Document product_uuid and MAC reqs
2017-06-25 11:52:29 -07:00
Jamie Hannaford 686b7aef38 Document how to use custom certs with kubeadm (#4113) 2017-06-25 11:44:44 -07:00
Jamie Hannaford fac7653113 Document product_uuid and MAC reqs 2017-06-25 11:43:49 -07:00
Andrew Chen cec3167df2 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  fixed #3968 (#4105)
2017-06-23 14:05:27 -07:00
Vincent 80c90ba8fb fixed #3968 (#4105)
* fixed #3968

* advise from @chenopis
2017-06-23 14:03:07 -07:00
Andrew Chen b5eb6b6b85 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Add documentation for ip-masq-agent.
  Update installation instructions with snap (#4171)
  Update scratch.md: include download binary tarball (#3933)
  Typo in authentication.md
2017-06-23 11:58:31 -07:00
Mikhail Vyatskov 4c219641f0 Add documentation for Stackdriver event exporter 2017-06-23 11:31:18 +02:00
Daniel Nardo 79eca9b815 Add documentation for ip-masq-agent. 2017-06-23 01:29:35 -07:00
Ihor Dvoretskyi 24820772e5 Update installation instructions with snap (#4171)
* Update installation instructions with snap

Update installation instructions with snap - the package manager for Ubuntu and other Linux distributions.

* fix md formatting

* fix shell formating

* fix shell block

* fix shell for Check the kubectl configuration

* switch to full width shell
2017-06-23 01:22:08 -07:00
xinsnake dc4819e3ff Update scratch.md: include download binary tarball (#3933)
* Update scratch.md: include download binary tarball

As `kubernetes-server-linux-amd64.tar.gz` is not provided with the tarball now, an extra step is required.

* Updated scratch.md to follow review comments
2017-06-23 01:03:52 -07:00
Selvi K 0b5ff11185 Typo in authentication.md 2017-06-23 00:49:31 -07:00
Andrew Chen 7d4f4b1402 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Fix broken links to client samples. (#4139)
2017-06-23 00:39:11 -07:00
jlewi e74ec1f2a9 Fix broken links to client samples. (#4139)
* Remove code snippets since they will just get out of sync with the samples.
2017-06-22 17:57:17 -07:00
Andrew Chen 5bd740ef7e Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Edits for clarity, concision, style, formatting, (#4160)
2017-06-22 15:43:48 -07:00
Andrew Chen 82e049dc6e Merge pull request #4170 from kubernetes/chenopis-3999-patch
Patch PR #3999
2017-06-22 15:43:06 -07:00
cody-clark e32c0aea6e Edits for clarity, concision, style, formatting, (#4160)
and according to the getting started project.
2017-06-22 15:23:27 -07:00
Andrew Chen 2ce3742278 Patch PR #3999 2017-06-22 15:19:48 -07:00
Andrew Chen e2b6349a11 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  rename kargo to kubespray in getting started docs (#4119)
2017-06-22 15:09:23 -07:00
Andrew Chen 38812baf2a Merge pull request #3999 from pipejakob/kubeadm-upgrades
Initial draft of upgrade guide for kubeadm clusters.
2017-06-22 15:08:45 -07:00
Michelle Au 034c7929e2 Add local volume documentation (#4050)
* Add local volume documentation

* Add PV local volume example
2017-06-22 15:06:05 -07:00
Spencer Smith 60054a2f04 rename kargo to kubespray in getting started docs (#4119)
* rename kargo to kubespray in getting started docs

* remove old kargo guide, update link to kubespray doc

* update setup.yml with new kubespray pointer
2017-06-22 14:56:19 -07:00
Jacob Beacham 5946f21e99 Initial draft of upgrade guide for kubeadm clusters.
In-place upgrades are supported between 1.6 and 1.7 releases. Rollback
instructions to come in a separate commit.

Fixes https://github.com/kubernetes/kubeadm/issues/278
2017-06-22 14:45:06 -07:00
Andrew Chen 6b3c84602d Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  whatisk8s - Chinese version (#3243)
  split rows and nest to stack columns (#4129)
  Updates to docs/admin/kubelet-tls-bootstrapping (#3617)
  Replace "Pod Injection Policy" with "Pod Preset" (#3667)
  Change example PersistentVolumeClaim
  add PodNodeSelector to admission-controllers (#3691)
  Get pods using a label selector instead of hardcoded indexes. Use JsonPath instead of go-template.
  correct_init_container_state (#3972)
  kubernetes.github.io/docs/tasks/administer-cluster: operating etcd clusters
  Remove --no-check-certificate flag in bare_metal_offline.md
2017-06-22 14:43:14 -07:00
Dragons 0dbeb6d1bf whatisk8s - Chinese version (#3243)
* whatisk8s

* kubernetes-basics tutorials

* Update whatisk8s.md

* Update what-is-kubernetes.md
2017-06-22 14:39:41 -07:00
Peter d092214f84 split rows and nest to stack columns (#4129)
* split rows and nest to stack columns

* fix order
2017-06-22 14:24:48 -07:00
Murad Korejo bbffb34c6c Updates to docs/admin/kubelet-tls-bootstrapping (#3617)
* update TLS bootstrapping doc

* formatting edits on top of prev edits

* revert to lowercase b in title
2017-06-22 14:22:20 -07:00
Nail Islamov 6283e51faa Replace "Pod Injection Policy" with "Pod Preset" (#3667)
* Replace "Pod Injection Policy" with "Pod Preset"

There are some leftovers of the old term, fixing it.

* Extra typos fix, line breaks
2017-06-22 14:21:14 -07:00
Remi Rampin 1984b52e7a Change example PersistentVolumeClaim
If a default storage class exists, it is going to create a new persistent volume to bind to that claim instead of using our example one, which will make the tutorial fail. In particular, this happens on minikube.

Specifying an empty storageClassName will prevent the storage class to be used, and force our volume to be selected.
2017-06-22 14:20:27 -07:00
Charlie R.C 4edbe7449d add PodNodeSelector to admission-controllers (#3691) 2017-06-22 14:19:28 -07:00
Jonas Kongslund f2f0842e1f Get pods using a label selector instead of hardcoded indexes. Use JsonPath instead of go-template. 2017-06-22 14:14:47 -07:00
Weihua Meng 4d89c1421b correct_init_container_state (#3972) 2017-06-22 14:14:12 -07:00
Radhika Puthiyetath a5a898347a kubernetes.github.io/docs/tasks/administer-cluster: operating etcd clusters 2017-06-22 14:07:53 -07:00
Jeremy Visser 14a39dfcb5 Remove --no-check-certificate flag in bare_metal_offline.md
Using `--no-check-certificate` is, frankly, dangerous and we shouldn't be recommending that users use it. Not without a good reason, anyway.

If a user's system is sufficiently broken that they are getting certificate validation problems during this step, I fail to see how it is our problem to tell the user to overcome that. Let's focus on installing Kubernetes here.
2017-06-22 14:02:43 -07:00
Andrew Chen 64531da47d Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Document the use of verb if set resourceNames
2017-06-22 13:40:42 -07:00
Charlie R.C 4ac5baaf51 Document the use of verb if set resourceNames
ref to https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/rbac/helpers.go#L225
2017-06-22 13:29:30 -07:00
Michael Burke 83474c06d6 removed lt and gt as operators (#4152)
* removed lt and gt as operators

* replace lt and gt for node-affinfity

* updated based on bsalamat review
2017-06-22 13:28:12 -07:00
Andrew Chen f4dcee7526 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  networkpolicies.md --> network-policies.md for SEO
  Added link (#4161)
  Use "sudo -i" instead of "sudo su -"
  Create a section for kubeadm topics
  Consolidate SecurityContext topics. (#4005)
  Typo fix in "Adding ConfigMap data to a Volume" section (#3966)
2017-06-22 10:57:56 -07:00
Janet Kuo 9f6d8f4788 Update task for DaemonSet history and rollback (#4098)
* Update task for DaemonSet history and rollback

Also remove mentions of templateGeneration field because it's deprecated

* Address comments
2017-06-22 10:56:52 -07:00
Andrew Chen 43b9e97774 Merge pull request #4151 from crassirostris/fix-logging-concept-page
Fix title and add a TOC to the logging concept page
2017-06-22 10:51:32 -07:00
Ahmet Alp Balkan e883a27f3b networkpolicies.md --> network-policies.md for SEO
Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-06-22 10:47:34 -07:00
cody-clark 71ed960d75 Added link (#4161) 2017-06-22 10:37:05 -07:00
Andrew Chen b6cc04ed74 Merge pull request #4116 from feiskyer/gpu
Update GPU docs
2017-06-22 10:35:56 -07:00
Jeremy Visser a877e63b8b Use "sudo -i" instead of "sudo su -"
`sudo su -` is redundant, as you are asking the system to elevate you after you have already elevated.

If what you actually want is to get a login environment, the `sudo -i` flag is designed exactly for that.
2017-06-22 10:27:59 -07:00
Ahmet Alp Balkan 01b9cf25f3 Create a section for kubeadm topics
This helps group kubeadm-related Setup topics together.

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-06-22 10:26:24 -07:00
Steve Perry 9da5890274 Consolidate SecurityContext topics. (#4005) 2017-06-21 18:12:44 -07:00
Mitsuhiro Tanino 0c6b381b7c Typo fix in "Adding ConfigMap data to a Volume" section (#3966) 2017-06-21 16:56:38 -07:00
Andrew Chen e8660d307a Merge pull request #4157 from madhusudancs/coredns
Address comments in PR #3997.
2017-06-21 16:55:31 -07:00
Madhusudan.C.S 553cf9ff8b Address comments in PR #3997.
Comment is in
https://github.com/kubernetes/kubernetes.github.io/pull/3997/files/f6eb59c67e28efc298c87b1ef49a96bc6adacd1e#diff-7a14981f3dd8eb203f897ce6c11d9828
2017-06-21 16:39:29 -07:00
shashidharatd 4ed792d343 Describe setting coredns server in nameserver resolv chain 2017-06-21 15:58:32 -07:00
Andrew Chen ad9c138f72 Merge pull request #4156 from kubernetes/chenopis-4118-patch
Patch #4118 for typos
2017-06-21 14:56:45 -07:00
Andrew Chen 692d9a42b4 Patch #4118 for typos 2017-06-21 14:50:54 -07:00
Andrew Chen 0ac6a9546a Merge pull request #4118 from DirectXMan12/feature/hpa-status-conditions
HPA autoscaling/v2alpha1 status conditions
2017-06-21 14:46:47 -07:00
Andrew Chen c8f3f8f19f Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  bump openstack cli tools versions to working values
  fix header size for sub-sections under Services
  Finish #4036
  Be more specific about cpu-shares passed to Docker (#4016)
  Clarify the required uniqueness of Label Key
  Add --show-all to documentation
  docs(service): remove invalid `,` from example
  Add  "remove" example for kubectl patch (#4042)
  Fix wrong link to create a ConfigMap
  Fix a typo in the High Availability docs (#4048)
  Remove ports from ExternalName Service example
  remove extra that
  update kops installation instructions
2017-06-21 14:43:13 -07:00
Mikhail Vyatskov fe903aaae3 Fix title and add a TOC to the logging concept page 2017-06-21 17:32:49 +02:00
Anirudh Ramanathan 09bf855b76 Update PDB documentation to explain new field (#3885)
* update-docs-pdb

* Addressed erictune@'s comments
2017-06-20 16:33:44 -07:00
Federico Gimenez 0b5d13704a bump openstack cli tools versions to working values 2017-06-20 16:31:22 -07:00
Andrew Chen 76cb30a271 Merge pull request #4095 from croomes/storageos
Storageos Volume Plugin
2017-06-20 16:27:10 -07:00
Andrew Chen e0ad6ebf6b Merge pull request #4145 from vishh/document-storage-allocatable
Adding storage as a supported resource to node allocatable
2017-06-20 16:18:53 -07:00
Ricky Pai cdf729e223 fix header size for sub-sections under Services 2017-06-20 16:14:09 -07:00
Andrew Chen d2cecced7e Merge pull request #4148 from kubernetes/chenopis-4036-patch
Finish #4036
2017-06-20 16:12:57 -07:00
Andrew Chen f81a6fc682 Finish #4036 2017-06-20 16:07:42 -07:00
Eric Mountain @ Amadeus e53bdeb5d0 Be more specific about cpu-shares passed to Docker (#4016)
Docker documentation (https://docs.docker.com/engine/reference/run/) reads:
  
"To modify the proportion from the default of 1024, use the -c or --cpu-shares flag to set the weighting to 2 or higher. If 0 is set, the system will ignore the value and use the default of 1024."

So the Kubernetes documentation gives the impression that if requests.cpu is zero, Docker would end up applying a value of 1024, which isn't the case.

This change makes the explanation more precise, hopefully without making it much more difficult to read.
2017-06-20 16:01:16 -07:00
Sahdev P. Zala 82449c5dcf Clarify the required uniqueness of Label Key
fixes #16812

https://github.com/kubernetes/kubernetes/issues/16812

The issue was opened year back against Kubernetes, not moving it to k8s.
github.io issues but I will close the issue once these changes merge.
2017-06-20 15:58:26 -07:00
Tommy Falgout fb2ba2d962 Add --show-all to documentation
`kubectl get pods -l jobgroup=jobexample --show-all -o name`
will not show the completed jobs.  This caught me when running through the steps myself.
2017-06-20 15:56:50 -07:00
Ross Guarino 2d159b86f6 docs(service): remove invalid , from example
Remove invalid `,` from the ExternalIP example YAML.
2017-06-20 15:49:20 -07:00
Jorge Bianquetti bed2527af1 Add "remove" example for kubectl patch (#4042) 2017-06-20 15:47:42 -07:00
Tomas Pizarro 63687c5ace Fix wrong link to create a ConfigMap 2017-06-20 15:30:03 -07:00
Jonathan MacMillan daca587c77 Fix a typo in the High Availability docs (#4048) 2017-06-20 15:19:04 -07:00
Mark Petrovic 8e06188af4 Remove ports from ExternalName Service example
The text of this document says Services of type ExternalName do not define ports.  This PR removes the port definition from the example.
2017-06-20 15:08:41 -07:00
Pooya Sanooei f58cc22a20 remove extra that 2017-06-20 14:27:10 -07:00
Eren Güven 582f6f5bd3 update kops installation instructions
* change version v1.4.1 -> 1.6.1
* add note about Homebrew
2017-06-20 14:26:35 -07:00
Andrew Chen 91ecf67ad4 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  fixes typos and corrects links in the minikube guide (#4051)
  Use native patch functionality instead of JQ
  add the introduce of using wildcard '*' in nonResourceURL
  Rephrase doc about Deployment .spec.rollbackTo field
  create-cluster-kubeadm: add ToC using task template
  install-kubeadm: fix What's Next link text
2017-06-20 14:23:19 -07:00
Sameer Naik 7047cdefbf fixes typos and corrects links in the minikube guide (#4051) 2017-06-20 14:14:37 -07:00
Jeff Peeler c1c6faf59b Add documentation for podpreset opt-out annotation
This adds the annotation for having the podpreset admission controller
to skip (opt-out) manipulating the pod spec.

Also, the annotation format for what presets have acted on a pod has
been modified to add a prefix of "podpreset-". The new naming makes it such
that there is no chance of collision with the newly introduced opt-out
annotation (or future ones yet to be added).

Opt-out annotation PR:
kubernetes/kubernetes#44965
2017-06-20 14:10:34 -07:00
Elliot Anderson 6ce8d8e475 Use native patch functionality instead of JQ 2017-06-20 13:48:44 -07:00
Vishnu kannan 33a3638d5b adding storage as a supported resource to node allocatable
Signed-off-by: Vishnu kannan <vishnuk@google.com>
2017-06-20 13:21:28 -07:00
xilabao f527759087 add the introduce of using wildcard '*' in nonResourceURL 2017-06-20 13:17:05 -07:00
Janet Kuo fcbef29da7 Rephrase doc about Deployment .spec.rollbackTo field 2017-06-20 11:09:34 -07:00
Ahmet Alp Balkan 3c84f8180a create-cluster-kubeadm: add ToC using task template
Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-06-20 11:03:08 -07:00
Ahmet Alp Balkan 553e091742 install-kubeadm: fix What's Next link text
Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-06-20 11:01:39 -07:00
Andrew Chen bea52c8e5c Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  info about cron jobs updated (#4110)
  fix example in configure-pod-configmap.md
  Remove extraneous files from autogeneration of ref pages. (#4044)
  Add notes for file/flag precedence
  Removed "networked" from PersistentVolume (PV) definition. (#4121)
  Fix syntax err in example
2017-06-20 10:52:58 -07:00
Jorge Bianquetti eb3f374d37 info about cron jobs updated (#4110) 2017-06-20 10:33:22 -07:00
Charlie R.C a9863612bc fix example in configure-pod-configmap.md 2017-06-20 10:26:55 -07:00
Steve Perry 57a3ad4544 Remove extraneous files from autogeneration of ref pages. (#4044)
* Remove extraneous files from autogeneration of ref pages.

* Revert "Remove extraneous files from autogeneration of ref pages."

This reverts commit 39ec47ee44354c96070f89064374eb729d6da5ec.
2017-06-20 09:17:07 -07:00
Jamie Hannaford 0ef468e48b Add notes for file/flag precedence 2017-06-19 16:53:02 -07:00
ianchakeres b4b64e9dc2 Removed "networked" from PersistentVolume (PV) definition. (#4121) 2017-06-19 16:31:08 -07:00
Andrew Chen 5bf06f9e4e Merge pull request #4130 from jerairrest/patch-1
Fix documentation syntax err in Persistent Volume example
2017-06-19 16:23:56 -07:00
Andrew Chen 628e88ecc6 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Fix typo 'bash' -> 'brew'
  update pod persistent volume example storage class (#3979)
  Change Task titles to imperative: Admin. (#4033)
  Change Task titles to imperative: Daemons, GPUs. (#4032)
  Change Task titles to imperative: Federation. (#4031)
  Change Task titles to imperative: TLS. (#4030)
  Change Task titles to imperative: Access Extend. (#4029)
  Change Task titles to imperative: Monitor. (#4028)
  Change Task titles to imperative: Access Apps. (#4027)
  Change Task title to imperative: Run Job. (#4026)
  Change Task titles to imperative: Run Apps. (#4025)
  Change Task titles to imperative: Inject. (#4024)
  Change Task titles to imperative: Tools. (#4023)
  Change Task titles to imperative. (#4022)
  Fix typo in update-imported-docs.sh
  Add internal provisioner support matrix (#4009)

# Conflicts:
#	docs/tasks/administer-cluster/declare-network-policy.md
2017-06-19 10:15:52 -07:00
Cao Shufeng 4bd94ec393 Update description about NodeRestriction
kubelet node can alse create mirror pods for their own static pods.
2017-06-19 11:35:25 +08:00
Jeremy Ayerst a988182a96 Fix syntax err in example
Missing " made example unusable
2017-06-18 09:44:13 -05:00
Ahmet Alp Balkan ce4fe04bb3 Merge pull request #4122 from xLegoz/patch-1
Fix documentation typo: 'bash' -> 'brew'
2017-06-16 22:06:52 -07:00
Joey Pereira 951a3211a3 Fix typo 'bash' -> 'brew' 2017-06-16 18:53:30 -04:00
Solly Ross 7023dc32c5 docs: HPA autoscaling/v2alpha1 status conditions
This commit documents the new status conditions feature for HPA
autoscaling/v2alpha1.  It demonstrates how to get the status conditions
using `kubectl describe`, and how to interpret them.
2017-06-16 14:30:51 -04:00
Pengfei Ni a0ffa2569c Update GPU docs 2017-06-16 21:15:28 +08:00
Simon Croome 69cebea16b StorageOS Volume plugin 2017-06-15 16:56:42 +01:00
Adnan Abdulhussein 1088bca024 update pod persistent volume example storage class (#3979)
* update pod persistent volume example storage class

When binding to a manually created PersistentVolume, the claim must
disable dynamic provisioning by specifying an empty storage class.

Fixes #2803

* use specific storageclass

* revert gibibytes -> gigabytes change
2017-06-13 23:55:58 -07:00
Phillip Wittrock eb71492f88 Merge pull request #4014 from irfanurrehman/patch-1
Fix typo in update-imported-docs.sh
2017-06-13 09:31:47 -07:00
Steve Perry e2a898ad41 Change Task titles to imperative: Admin. (#4033) 2017-06-08 15:13:29 -07:00
Steve Perry 6c99bbb509 Change Task titles to imperative: Daemons, GPUs. (#4032) 2017-06-08 14:48:46 -07:00
Steve Perry 54eb7d2449 Change Task titles to imperative: Federation. (#4031) 2017-06-08 14:42:56 -07:00
Steve Perry 2167367a6a Change Task titles to imperative: TLS. (#4030) 2017-06-08 14:34:34 -07:00
Steve Perry fbf7782ebf Change Task titles to imperative: Access Extend. (#4029) 2017-06-08 13:47:48 -07:00
Steve Perry 423884e8b7 Change Task titles to imperative: Monitor. (#4028) 2017-06-08 13:41:57 -07:00
Steve Perry c59b2b6935 Change Task titles to imperative: Access Apps. (#4027) 2017-06-08 13:29:52 -07:00
Steve Perry 63c282927c Change Task title to imperative: Run Job. (#4026) 2017-06-08 13:21:07 -07:00
Steve Perry 10cd61bc62 Change Task titles to imperative: Run Apps. (#4025) 2017-06-08 13:15:43 -07:00
Steve Perry 962989b443 Change Task titles to imperative: Inject. (#4024) 2017-06-08 12:12:52 -07:00
Steve Perry e1e00561f3 Change Task titles to imperative: Tools. (#4023) 2017-06-08 11:58:27 -07:00
Steve Perry adf00a04a2 Change Task titles to imperative. (#4022) 2017-06-08 11:48:28 -07:00
irfanurrehman 7d06b71131 Fix typo in update-imported-docs.sh 2017-06-08 11:26:21 +05:30
Mitsuhiro Tanino 67ece8bc15 Add internal provisioner support matrix (#4009)
* Add internal provisioner support matrix

* Change links and add example of NFS plugin

* Remove usages related to hostpath
2017-06-07 14:12:59 -07:00
Andrew Chen ccd2b46864 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  fixed the line giving the template for creating configmap, should include the word configmap as part of the creation process.
  Fixes issue #3939
  Add CRI runtime support
2017-06-07 10:23:36 -07:00
Alejandro Escobar ffc4769285 fixed the line giving the template for creating configmap, should include the word configmap as part of the creation process. 2017-06-07 10:22:26 -07:00
Dan Winship 4b6b970d51 Update NetworkPolicy docs for v1 2017-06-07 10:21:23 -07:00
Karthik Gaekwad 1808475968 Fixes issue #3939
Adds comment for per issue #3939
2017-06-07 10:20:31 -07:00
Harry Zhang ed00765f3c Add CRI runtime support 2017-06-07 10:05:06 -07:00
Andrew Chen 23175c12e0 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Updaated install-kubeadm.md, removed redundant kubectl installation (#4006)
  Add Chocolatey Package Manager for Windows (#4000)
2017-06-07 09:56:43 -07:00
Michal Cwienczek 9305c4a9aa Updaated install-kubeadm.md, removed redundant kubectl installation (#4006) 2017-06-06 15:53:20 -07:00
Onuralp Taner 783de986d9 Add Chocolatey Package Manager for Windows (#4000)
* Add Chocolatey Package Manager for Windows

* Small grammar changes
2017-06-06 13:17:33 -07:00
Andrew Chen be02ca1705 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Make issue title automatically a link
  Update directions for macOS bash completion
2017-06-06 09:24:27 -07:00
Ahmet Alp Balkan bec1399cc1 Make issue title automatically a link
e.g. "Issue with k8s.io/docs/getting-started-guides/kubeadm/" when people
open issues on the repo. This way we can just select the text, right-click
and say Go to Link.

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-06-06 09:21:38 -07:00
Andrew Chen 3824fdf5c7 Merge pull request #3737 from cblecker/update-mac-bash
Update directions for macOS bash completion
2017-06-06 09:02:44 -07:00
Christoph Blecker 1bb02c055e Update directions for macOS bash completion 2017-06-05 21:52:25 -07:00
Andrew Chen 0b15bf57e8 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Add TCP socket health check example (#3977)
  Update networking.md (#3950)
  [authorization] fix invalid href for webhook
2017-06-05 14:06:37 -07:00
tompizmor 9f2ecee260 Add TCP socket health check example (#3977)
* Add TCP socket health check example

* Add test case for pod-with-tcp-socket-healthcheck
2017-06-05 13:50:29 -07:00
Shyam JVS f21480504d Update ConfigMap doc to explain TTL-based cache updates (#3989)
* Update ConfigMap doc to explain TTL-based cache updates

* swap word order

Change "When a ConfigMap being already consumed..." to "When a ConfigMap already being consumed..."
2017-06-05 11:24:49 -07:00
kshafiee 8d20ed8580 Update networking.md (#3950)
* Update networking.md

Added CNI-Genie as one of the many options

* Update networking.md

Addressed!

* Update networking.md
2017-06-05 11:04:45 -07:00
Andrew Chen b5c0e0603e Merge pull request #3985 from CaoShuFeng/webhook
[authorization] Fix invalid url for webhook
2017-06-05 10:48:44 -07:00
Andrew Chen 36b472183b Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Remove self-referential link
  Add fibre channel volume explanation (#3967)
2017-06-05 10:41:54 -07:00
Cao Shufeng 8dd901ee98 [authorization] fix invalid href for webhook 2017-06-05 11:42:13 +08:00
Andrew Chen bec79028f5 Merge pull request #3980 from kubernetes/ryanmcginnis-patch-1
Remove self-referential link
2017-06-02 15:06:47 -07:00
Ryan McGinnis 8117b56cc6 Remove self-referential link
The second link in the "What's next" section redirects the reader to this doc. This PR removes this link.
2017-06-02 15:01:05 -07:00
Mitsuhiro Tanino 1cec609586 Add fibre channel volume explanation (#3967)
* Add fibre channel volume explanation

This patch adds explanation of fibre channel volume including
usage of multiple WWNs.

Fix #33602

* Fix typos
2017-06-02 14:53:19 -07:00
Andrew Chen 92e31296ff Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Improve RBAC doc (#3951)
  Clarify CNI acronym
  Fix 404 to kubectl install link
  install-kubectl.md: Fix Windows texts, link to latest macOS binaries
2017-06-02 14:28:50 -07:00
Jordan Liggitt 2841f6dabe Improve RBAC doc (#3951)
* Remove spurious cluster-status role description

* Indicate controller-manager must be granted controller roles when not run with --use-service-account-credentials
2017-06-02 14:26:39 -07:00
Kevin Kirsche a6f31d4896 Clarify CNI acronym
Fixes kubernetes/kubernetes.github.io#3964
2017-06-02 14:14:21 -07:00
Charlie R.C 952e5b4497 add host paths to psp (#3971)
* add host paths to psp

* add italics
2017-06-02 14:11:38 -07:00
Kyle Gordon 71c7f9efc4 Fix 404 to kubectl install link 2017-06-02 14:03:10 -07:00
Andrew Chen 1946b06070 Merge pull request #3969 from techtonik/patch-1
install-kubectl.md: Fix Windows texts, link to latest macOS binaries
2017-06-02 13:16:43 -07:00
deads2k 6cbd6bda67 document custom resource definitions 2017-06-02 13:12:02 -07:00
Andrew Chen 846cf73860 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Create Installing kubeadm topic. (#3709)
2017-06-02 13:11:42 -07:00
anatoly techtonik 12ad70a8ca install-kubectl.md: Fix Windows texts, link to latest macOS binaries
Fixes https://github.com/kubernetes/kubernetes.github.io/pull/3859#issuecomment-305710498
2017-06-02 10:32:19 +03:00
Steve Perry 57385e8d86 Create Installing kubeadm topic. (#3709)
* Create Installing kubeadm topic.

* Put kubeadm installation under Setup.

* Move topics to setup directory.

* Move topics to setup directory.

* Add redirects.
2017-06-01 18:03:47 -07:00
Andrew Chen de0f19682a Merge branches 'master' and 'release-1.7' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Fix example in the "Adding ConfigMap data to a Volume" section
  Update ExternalName example
  Completes PR #3325

* 'release-1.7' of https://github.com/kubernetes/kubernetes.github.io:
2017-06-01 16:20:18 -07:00
Kenny Lee Sin Cheong d41dbfcf14 Fix example in the "Adding ConfigMap data to a Volume" section
"special.key" does not exist in the given ConfigMap example. It should
be "special.level" instead.
2017-06-01 16:18:38 -07:00
Andrew Martin 35f6ce8b6f Update ExternalName example
As per design proposal: https://github.com/kubernetes/community/blob/master/contributors/design-proposals/service-external-name.md

The existing example is not validated by Kubernetes 1.6.3
2017-06-01 15:12:07 -07:00
Andrew Chen d55efd0da0 Merge pull request #3963 from kubernetes/chenopis-3325-patch
Completes PR #3325
2017-06-01 15:09:50 -07:00
Andrew Chen a9b880d5f4 Completes PR #3325 2017-06-01 15:02:14 -07:00
Andrew Chen 983d10efee Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Changes "Mac OS" to macOS, "bootcamp" to tutorial (#3955)
  Remove apply/edit warning now that edit is fixed
  Two minor fixes
  Cleanup robots.txt
  Readability: Split first paragraph into two (#3957)
2017-06-01 14:57:12 -07:00
Ryan McGinnis e67aabccae Changes "Mac OS" to macOS, "bootcamp" to tutorial (#3955)
* Changes "Mac OS" to macOS, "bootcamp" to tutorial

* fix typo
2017-06-01 14:51:05 -07:00
Phillip Wittrock b481798d43 Remove apply/edit warning now that edit is fixed 2017-06-01 14:40:41 -07:00
Ryan McGinnis 9e282d2d9f Two minor fixes 2017-06-01 14:38:13 -07:00
Andrew Chen 0c535464c8 Cleanup robots.txt 2017-06-01 14:37:00 -07:00
Ryan McGinnis 80ea9193ae Readability: Split first paragraph into two (#3957) 2017-06-01 14:31:41 -07:00
Andrew Chen 52f362ebad Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Update golang version to 1.8.1
2017-06-01 14:27:42 -07:00
Anirudh Ramanathan 2f82ff8a96 Update golang version to 1.8.1 2017-06-01 13:51:12 -07:00
Andrew Chen 0adc65a2b2 Merge branches 'release-1.7' and 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'release-1.7' of https://github.com/kubernetes/kubernetes.github.io:

* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Implement PR #3859 with tabs
2017-06-01 13:32:07 -07:00
pospispa d448129de9 Admins Can Configure Zones in Storage Class
The PR #38505 (https://github.com/kubernetes/kubernetes/pull/38505) added zones optional parameter to Storage Class for AWS and GCE provisioners.

That's why documentation needs to be updated accordingly.
2017-06-01 13:25:43 -07:00
Andrew Chen 8ad0302646 Implement PR #3859 with tabs 2017-06-01 10:08:51 -07:00
Andrew Chen f905c8e843 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Templates (#3949)
  Revised IBM Bluemix Container Service description
2017-05-31 23:20:19 -07:00
Steve Perry ab310e21cd Templates (#3949)
* Update page-templates.md

* Update page-templates.md

* Update page-templates.md

* Update page-templates.md

* Update page-templates.md

* Update page-templates.md

* Update page-templates.md

* Update page-templates.md
2017-05-31 15:53:04 -07:00
Andrew Chen 8604566e8b Merge pull request #3947 from kKronstainBrown/patch-1
Revised IBM Bluemix Container Service description
2017-05-31 15:15:18 -07:00
Andrew Chen 7f9eec2b61 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  networking.md: Add reference to the Cilium network plugin
  Fix typo in cluster api docs
  [Kubeadm] bugfix in the index listing
2017-05-31 12:49:02 -07:00
kKronstainBrown e3ac0f1a6b Revised IBM Bluemix Container Service description 2017-05-31 14:01:47 -04:00
Thomas Graf 42f0b93b68 networking.md: Add reference to the Cilium network plugin
Signed-off-by: Thomas Graf <tgraf@suug.ch>
2017-05-31 11:00:58 -07:00
Kenny Lee Sin Cheong 5372429718 Fix typo in cluster api docs
Fix type in https://kubernetes.io/docs/tasks/administer-cluster/access-cluster-api/
2017-05-31 10:59:38 -07:00
Andrew Chen 5e0fbc3ce6 Merge pull request #3946 from irfanurrehman/kubeadm-bugfix
[Kubeadm] bugfix in the index listing
2017-05-31 10:58:26 -07:00
Irfan Ur Rehman 6892014792 [Kubeadm] bugfix in the index listing 2017-05-31 23:23:29 +05:30
Andrew Chen b695c0f78b Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Fix log rotation description in the logging doc (#3918)
  Add colon to #3897
  add prompt about KUBE_REPO_PREFIX (#3597)
  Warn against managing ReplicaSets owned by Deployments
  Update small typo in components page (#3930)
  change the service name to pod ip (#3926)
2017-05-31 10:52:49 -07:00
Mik Vyatskov f4fd9e79ed Fix log rotation description in the logging doc (#3918)
* Fix log rotation description in the logging doc

* Review comments

* Address review comments

* Address review comments
2017-05-31 10:50:04 -07:00
Andrew Chen 5b26c42be5 Add colon to #3897 2017-05-31 10:47:02 -07:00
Charlie R.C 75303cfee4 add prompt about KUBE_REPO_PREFIX (#3597)
* add prompt about KUBE_REPO_PREFIX

* add period
2017-05-31 10:45:55 -07:00
Michail Kargakis 4471d3dbf0 Warn against managing ReplicaSets owned by Deployments
Signed-off-by: Michail Kargakis <mkargaki@redhat.com>
2017-05-31 10:37:40 -07:00
Swapnil Kulkarni 71177ff37a Update small typo in components page (#3930)
[1] page has a typo in Master Components section.
Updated the document.

[1] https://kubernetes.io/docs/concepts/overview/components/
2017-05-31 10:34:51 -07:00
jianglingxia 5483b4a126 change the service name to pod ip (#3926)
* change the service name to pod ip

* update the outdate link
2017-05-31 10:33:27 -07:00
Andrew Chen b1ee47f7d5 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Reimplement #2756 (#3935)
2017-05-30 16:31:02 -07:00
Andrew Chen e0a852eb28 Reimplement #2756 (#3935) 2017-05-30 16:30:02 -07:00
Charlie R.C 827d53e363 add NodeRestriction to admission-controllers (#3842) 2017-05-30 15:56:27 -07:00
Andrew Chen b56358283a Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Fixed a minor mistake
  docs/concepts/policy/pod-security-policy.md: add projected to list of allowed types.
  Init container exists beta in 1.6.
2017-05-30 15:52:35 -07:00
roshandawrani c7ba600025 Fixed a minor mistake
The word "creating" seemed missing. global allocation map should have an entry for an IP address that the service gets while it's created, right?
2017-05-30 14:34:44 -07:00
Slava Semushin 1bed34e5c9 docs/concepts/policy/pod-security-policy.md: add projected to list of allowed types. 2017-05-30 14:20:39 -07:00
Guangya Liu 8c881a35cd Init container exists beta in 1.6. 2017-05-30 12:03:52 -07:00
Andrew Chen cca652bf00 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  fix typo (#3895)
  add unit of --ttl duration (#3915)
  Fixes broken links
  Prototype of custom description meta tags. (#3928)
  Site URL for canonical URLs. (#3927)
  Warn about implications on selector updates
  grammar patch to #3922 (#3923)
  add calico to the table of solution
  Minor grammatical change
2017-05-30 11:59:54 -07:00
wangxunbo ee92eafd82 fix typo (#3895)
I Created a  deployment yaml file tomcatdp.yaml, and did not set the .spec.strategy,then run 
kubectl create -f tomcatdp.yaml,
and then run 
kubectl get deployment tomcat-deployment -o yaml,
the tomcat-deployment is the name of the deployment,found that the MaxUnavailable and MaxSurge default value is 25%
2017-05-30 11:47:18 -07:00
Tuna d905c3838f add unit of --ttl duration (#3915)
* add unit of --ttl duration

fix #3890

* fix typo
2017-05-30 11:41:16 -07:00
Karthik Gaekwad 2660141c20 Fixes broken links 2017-05-30 11:40:29 -07:00
Steve Perry 46e745a81a Prototype of custom description meta tags. (#3928)
* Prototype of custom description meta tags.

* Put desc on one line.
2017-05-27 14:38:24 -07:00
Steve Perry 37976e6c74 Site URL for canonical URLs. (#3927) 2017-05-27 13:05:17 -07:00
Michail Kargakis 8a27d982e6 Warn about implications on selector updates
Signed-off-by: Michail Kargakis <mkargaki@redhat.com>
2017-05-26 18:31:12 -07:00
Andrew Chen 328b62a34a grammar patch to #3922 (#3923)
* grammar patch to #3922

* change copy to make broader
2017-05-26 17:56:12 -07:00
Tuna 669f11db9c add calico to the table of solution
fix issue #3892
2017-05-26 17:16:23 -07:00
roshandawrani 02f1800bbd Minor grammatical change 2017-05-26 17:14:57 -07:00
Andrew Chen 726b147b72 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Add deprecation tag (#3922)
2017-05-26 17:00:22 -07:00
Andrew Chen 4ca2f4e738 Add deprecation tag (#3922)
* Add deprecation tag

* match docsContent styling in dialog
2017-05-26 16:59:29 -07:00
Andrew Chen 0702830cde Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Fix sentence
  Minor grammatical correction
  Remove beta as K8s support on Bluemix Container Service is live
  Fix some output
  replace REASON with STATUS
  column IP is missed
  replace kubectl.sh with kubectl
  replace KUBECTL with kubectl
  fix the command output
  fix the command output
  fix the command output
  Correcting the typo in init-container's name
  fix typo
  fix typo
  fix typo
  fix typo
  fix typo
  Update pod-overview.md (#3881)
  apps/v1beta1 is not valid (#3814)
  Get access to search console. (#3901)
2017-05-26 13:39:26 -07:00
Kevin J. Qiu fd4ce1860a Fix sentence 2017-05-26 10:44:37 -07:00
Luke Stutters 6f401ab0d2 Minor grammatical correction
If the Volume is created from the ConfigMap, the files in the Volume are representatives of the Config map, not the other way round.
2017-05-26 10:43:33 -07:00
Sahdev P. Zala 2fc7ec0b6d Remove beta as K8s support on Bluemix Container Service is live
The Kubernetes support in Bluemix Container Service is now live and so we should
remove reference of beta.
2017-05-26 10:41:50 -07:00
Xiaoyu Zhang 295e262775 Fix some output
Fix some output
2017-05-26 10:41:06 -07:00
chenhuan12 1406756b8a replace REASON with STATUS
replace REASON with STATUS
2017-05-26 10:40:07 -07:00
chenhuan12 940335cd67 column IP is missed
column IP is missed
2017-05-26 10:39:40 -07:00
chenhuan12 61c39cf9df replace kubectl.sh with kubectl
replace kubectl.sh with kubectl
2017-05-26 10:39:24 -07:00
chenhuan12 8b745c2e9e replace KUBECTL with kubectl
replace KUBECTL with kubectl
2017-05-26 10:34:13 -07:00
chenhuan12 7d4f3c5587 fix the command output
fix the command output
2017-05-26 10:33:50 -07:00
chenhuan12 f5d455edee fix the command output
fix the command output
2017-05-26 10:33:31 -07:00
chenhuan12 9ab964f4c7 fix the command output
fix the command output
2017-05-26 10:33:05 -07:00
roshandawrani ffaafb2276 Correcting the typo in init-container's name 2017-05-26 10:31:20 -07:00
chenhuan12 de17826af0 fix typo
fix typo
2017-05-26 10:30:40 -07:00
chenhuan12 9dc7cfbebb fix typo
fix typo
2017-05-26 10:30:08 -07:00
chenhuan12 6ab0577e3e fix typo
fix typo
2017-05-26 10:29:43 -07:00
chenhuan12 b8b60ebe05 fix typo
fix typo
2017-05-26 10:29:05 -07:00
Peter Lee 80bf5cb316 fix typo 2017-05-26 10:27:32 -07:00
Selvi K d86f9ec781 Update pod-overview.md (#3881)
Fixed some typos
2017-05-26 10:27:09 -07:00
Francesc Campoy 35e959df7b apps/v1beta1 is not valid (#3814)
* apps/v1beta1 is not valid

Replacing it with extensions/v1beta1 which actually works

* Add note for versions before 1.6.0
2017-05-25 23:56:42 -07:00
Steve Perry 71aebd79ca Get access to search console. (#3901) 2017-05-25 14:21:16 -07:00
Andrew Chen 64a7d876f0 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Remove instructions to stage from <username>github.io. (#3893)
  Add drop-in templates
2017-05-25 12:31:24 -07:00
Steve Perry 64c9d1788d Remove instructions to stage from <username>github.io. (#3893) 2017-05-24 17:06:17 -07:00
Andrew Chen 4d6a452b9f Merge pull request #3891 from kubernetes/chenopis-example-templates
Add drop-in templates
2017-05-24 14:54:08 -07:00
Andrew Chen 7091925c9f Add drop-in templates 2017-05-24 14:48:20 -07:00
Andrew Chen 2cfb675a41 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Add GPU mountpath warning
2017-05-23 23:11:23 -07:00
Christopher M. Luciano ae5df6944d Add GPU mountpath warning
The GPU path is not permissive by default and requires a bit of
additional setup if the operator does not allow for privileged
containers.

Related kubernetes/kubernetes#46007

Signed-off-by: Christopher M. Luciano <cmluciano@us.ibm.com>
2017-05-23 22:39:56 -07:00
Andrew Chen cd54a86f81 Merge branch 'release-1.7' of https://github.com/kubernetes/kubernetes.github.io into release-1.7
* 'release-1.7' of https://github.com/kubernetes/kubernetes.github.io:
  Minor fixes in the Deployment doc
2017-05-23 22:38:33 -07:00
Henrique Truta fbcc2e9fde Add cluster resource federation page
Adds a page in Federation resources list describing
clusters.
2017-05-23 22:37:34 -07:00
Charlie R.C b545d393b6 update recommend admission control plug-ins 2017-05-23 22:28:36 -07:00
Andrew Chen d0bfe261f3 Merge pull request #3862 from kargakis/minor-deployment-fixes
Minor fixes in the Deployment doc
2017-05-23 22:21:25 -07:00
Andrew Chen 4b5780c3e3 Merge pull request #3886 from kubernetes/chenopis-3783-patch
Reimplement #3783
2017-05-23 14:30:35 -07:00
Andrew Chen 9ea89e011e Reimplement #3783 2017-05-23 14:21:56 -07:00
Andrew Chen 5d1cc3a987 Merge pull request #3884 from kubernetes/chenopis-3770-patch
Reimplement #3770
2017-05-23 14:17:29 -07:00
Andrew Chen 3c1b0df482 Reimplement #3770 2017-05-23 14:10:17 -07:00
Andrew Chen 1f9b8ea169 Merge pull request #3883 from kubernetes/chenopis-3767-patch
Reimplement #3767
2017-05-23 14:04:25 -07:00
Andrew Chen fcfc676786 Reimplement #3767 2017-05-23 13:56:57 -07:00
Andrew Chen b87cc6e2b5 Merge pull request #3882 from kubernetes/chenopis-sitemap-patch2
Remove aux sitemap
2017-05-23 13:50:07 -07:00
Andrew Chen 1cb24df4d6 Remove aux sitemap 2017-05-23 13:21:15 -07:00
Michail Kargakis 1d12a4bc89 Minor fixes in the Deployment doc
Signed-off-by: Michail Kargakis <mkargaki@redhat.com>
2017-05-23 10:51:06 +02:00
Andrew Chen e99e8aa2cc Merge pull request #3874 from jimrollenhagen/carabou
Trivial typo fix
2017-05-22 15:16:48 -07:00
Jim Rollenhagen 1a1afdf162 Trivial typo fix
s/Carabou/Caribou/ in the API access docs.
2017-05-22 18:12:42 -04:00
John Shanahan 4e28d9b8af Fixed typo under the Supervisord section 2017-05-22 14:15:06 -07:00
kshafiee 729e4b6897 Update addons.md (#3857)
* Update addons.md

Added CNI-Genie as another addon, i.e., CNI alternative.

* Update addons.md

Addressed the comment!
2017-05-22 14:12:15 -07:00
Josh Curl 50f2daa8d8 Fix indentation in ConfigMap usage example (#3867)
* Fix indentation in ConfigMap usage example

* Fix other example
2017-05-22 13:41:18 -07:00
Itamar Ostricher cd5e98a2dc Fix configMapRef indentation in envFrom clause
Fixes invalid YAML in example
2017-05-22 13:39:29 -07:00
Rick Sostheim 4bacc2419c trivial markdown changes to cleanup page rendering
inserted json body pretty printed for further clarity.
2017-05-22 13:38:59 -07:00
Roman S cdd28dd7f3 Adds GiantSwarm to solutions page (#3843)
* Adds GiantSwarm to solutions page

* Minor Giant Swarm related changes
2017-05-22 13:05:05 -07:00
anatoly techtonik 4af0bcd52e Update PULL_REQUEST_TEMPLATE.md
make delimiters fit issue width,
see https://github.com/kubernetes/kubernetes.github.io/pull/3859
2017-05-22 12:40:54 -07:00
Dan Winship a58afb2a2e Revert NetworkPolicy v1 docs (#3849)
* Revert "Update configure-namespace-isolation.md (#3758)"

This reverts commit a712b13a3b.

* Revert "Add Configure Namespace Isolation task"

This reverts commit f050c4cc57.

* Revert "Update networkpolicies.md (#3755)"

This reverts commit 15ca8f0b2f.

* Revert "Update NetworkPolicy docs for v1"

This reverts commit 3a158ecf296e3009db1284d69849e7e24479245a.
2017-05-22 11:54:57 -07:00
Michail Kargakis 71ff265e47 Remove stray prompt from deployment docs
Signed-off-by: Michail Kargakis <mkargaki@redhat.com>
2017-05-22 11:23:51 -07:00
Jesse Seldess 3a8a465028 WTD: Projected volumes (#3856)
* Update projected volume task

- Rename file
- Build out steps
- Create separate yaml file for pod configuration
- Add new page to the sidenav

* Add projected volume type to volumes concept page
2017-05-22 10:57:42 -07:00
Steve Perry f58b3d11d9 Remove and redirect: user-guide/application-trouble. (#3855) 2017-05-19 13:02:31 -07:00
Steve Perry 3149946d6a Remove and redirect: getting-started-guides/docker. (#3854) 2017-05-19 12:00:35 -07:00
Steve Perry d4cbd968fd Remove and redirect: getting-started/...cloud-controller. (#3853) 2017-05-19 11:42:31 -07:00
Steve Perry 10434a0484 Remove and redirect: user-guide/application-introspection (#3848)
* Remove and redirect: user-guide/application-introspection

* Remove and redirect: user-guide/debugging-services.
2017-05-19 10:40:38 -07:00
Steve Perry a02a577082 Remove and redirect: admin/cluster-trouble. (#3839) 2017-05-18 22:29:20 -07:00
Steve Perry e2bc3491a0 Remove and redirect: api. (#3838) 2017-05-18 19:11:28 -07:00
Steve Perry 4a6cd30b2a Remove and redirect: Debugging Pods and Replication Controllers. (#3837) 2017-05-18 19:03:19 -07:00
Steve Perry 76976b2976 Remove and redirect: prereqs. (#3836) 2017-05-18 18:55:14 -07:00
Steve Perry 18ccf43021 Update link: user-guide/application-troubleshooting. (#3834) 2017-05-18 18:16:31 -07:00
Andrew Chen 6a7c312867 Update links in home, header, footer, whatisk8s (#3833)
* home page, header, footer

* docs/whatisk8s

* /docs/user-guide/compute-resources/

* /docs/concepts/overview/what-is-kubernetes.md
2017-05-18 16:50:06 -07:00
craigbox ec4bb7ecef Change header order to "Concepts, Tasks, Tutorials"
https://kubernetes.io/docs/home/ suggests:

Concepts, Tasks, and Tutorials

> The Kubernetes documentation contains a number of resources to help you understand and work with Kubernetes.
> Concepts provide a deep understanding of how Kubernetes works.
> Tasks contain step-by-step instructions for common Kubernetes tasks.
> Tutorials contain detailed walkthroughs of the Kubernetes workflow.

This is a logical order and I've rearranged the header to match.
2017-05-18 14:50:06 -07:00
Andrzej Wasylkowski 46133af83f Added a note about the need to have a cluster set-up to Kubernetes 201. 2017-05-18 14:49:20 -07:00
Stevo Slavić e1229f1230 Update link to Headless Services concept 2017-05-18 14:48:12 -07:00
Xiaoyu Zhang 9e6df026c4 Delete a meaningless link
The link direct to its own section. There is not meaningful.
2017-05-18 14:47:03 -07:00
nique905 95e12c8c07 Update pick-right-solution.md (#3821)
Adding new Local-machine Solution - IBM Spectrum Conductor for Containers
2017-05-18 14:27:44 -07:00
Andrew Chen 7e23e44038 Address Issue #3827: break out Configuring Redis using a ConfigMap tutorial (#3829)
* Address Issue #3827: break out Configuring Redis using a ConfigMap tutorial

* format tweaks
2017-05-18 13:56:29 -07:00
devin-donnelly 6e4661f264 Merge pull request #3822 from philips/no-https-create
*: don't apply or create -f from http endpoints!
2017-05-18 12:38:28 -07:00
Brandon Philips 56ffe1644c *: don't apply -f from http endpoints!
k8s.io didn't always have https. But, now we do. We should fix this
immediately.
2017-05-17 20:15:28 -07:00
Brandon Philips 3b5bdc3f00 *: don't create -f from http endpoints!
k8s.io didn't always have https. But, now we do. We should fix this
immediatly.
2017-05-17 20:14:09 -07:00
Dan Winship 411ecca94d Clarify NetworkPolicy's "destination" podSelector a bit 2017-05-17 14:38:52 -07:00
Ahmet Alp Balkan 8b11f9ac40 secret.md: add base64 risk (#3791)
* secret.md: add base64 risk

Solves #3681.

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

* Update secret.md
2017-05-17 13:34:29 -07:00
Andrzej Wasylkowski 7e128d31cf Fixed Kubernetes 101 documentation
to mention that it is necessary to have the cluster setup first.
2017-05-17 13:29:02 -07:00
foxish 7669c9edac Long term fix for travis 2017-05-17 12:52:04 -07:00
Jordan Liggitt 8d597e8e23 Clarify when RBAC reconciliation is active 2017-05-17 11:41:58 -07:00
Jodie Putrino 145f4e64c7 Write the Docs: add doc for using configmap data in pods (#3780)
* new doc - using configmaps in pods

* fix style violation - remove command prompt

* Update configure-pod-configmap.md

Fixed the endcapture tag
2017-05-16 10:00:16 -07:00
Andrew Chen 72513483fa Add confirmation file 2017-05-15 22:08:33 -07:00
Kale Blankenship 79e0e594e6 Remove repeated words from configmap.md 2017-05-15 22:07:07 -07:00
Jesse Kinkead 16b331ae20 Remove beta warning about Jobs. 2017-05-15 22:06:30 -07:00
Andrew Chen cd3b5b30c2 Merge pull request #3808 from kubernetes/chenoips-sitemap-patch
Alt sitemap.xml
2017-05-15 21:56:56 -07:00
Andrew Chen 63ef9ae461 Alt sitemap.xml 2017-05-15 21:48:15 -07:00
Steve Perry 400bb5c8bb Move to Tasks: Core DNS Federation. (#3807) 2017-05-15 20:31:20 -07:00
Steve Perry f7c4466b22 Move to Tasks: Cluster Federation. (#3806) 2017-05-15 19:43:59 -07:00
Steve Perry 96831259aa Reorder Concepts TOC. (#3805) 2017-05-15 19:32:05 -07:00
Steve Perry bb57c9ad0c Move to Architecture section: Nodes. (#3804) 2017-05-15 19:22:06 -07:00
Ryan McGinnis 2c1f5b74f2 WtD: Picking the Right Solution, edit (#3781)
* WtD: Picking the Right Solution, edit

Fixes content of overview sitting too close to next section's heading.

* Update pick-right-solution.md

* Update pick-right-solution.md
2017-05-15 17:30:14 -07:00
Andrew Chen f27cc711cf Tweak formatting for PR #3763 2017-05-15 17:16:20 -07:00
Jared f940b709d9 access-clusters docs revamp (#3779)
* access-clusters docs revamp

Fix the accessing clusters docs, bring them into the right templates
and put them in the right parts of the site.

* Update proxies.md

* Update concepts.yml

* Update tasks.yml
2017-05-15 17:15:20 -07:00
Stephenie Swope 6baa409961 WriteTheDocs Update to the page (#3778)
* WriteTheDocs Update to the page 

Moved some detailed content from /docs/admin/accessing-the-api/ to this page. 
Moved ABAC mode info (with no changes) to https://kubernetes.io/docs/admin/authorization/abac/
Moved Webhook mode info (with no changes) to https://kubernetes.io/docs/admin/authorization/webhook/
Reorganized the page and tweaked the conceptual information.
Updated to match the page template here: https://kubernetes.io/docs/home/contribute/page-templates/

* Removed TOC

Removed TOC

* Update index.md

Fixed MD to add spaces between ## and the text
2017-05-15 17:13:33 -07:00
isa-bel f5b1203f2b Write the Docs - Add task template to romana-network-policy (#3763)
* AddAdd task template for romana-network-policy

* Add whatsnext section
2017-05-15 17:04:12 -07:00
Andrew Chen e2a63e75c8 Tweak formatting for PR #3775 2017-05-15 16:58:25 -07:00
paulbattagliag 0acc7f3996 Update ingress.md 2017-05-15 16:56:17 -07:00
Isabel JC 0b26becd2b Add task template for weave-network-policy 2017-05-15 16:48:57 -07:00
Wendy Shaffer 40b2e12eba Update install-kubectl.md (#3760)
* Update install-kubectl.md

Write the Docs:
Added Task template to the document.
Edited for clarity.

* Update install-kubectl.md

Write the Docs. Responded to review feedback: https://github.com/kubernetes/kubernetes.github.io/pull/3760#pullrequestreview-38008755

* Update install-kubectl.md

Write the Docs. Seeing if this makes the bulleted list render correctly.

* Update install-kubectl.md

Write the Docs. Markdown really doesn't seem to like that bulleted list there, so we'll just do it in sentence flow.
2017-05-15 16:44:55 -07:00
Stephenie Swope a882281a10 Update Authorization high-level overview
Stripped out details from the Authorization overview. Details to be updated and added to the Authorization page.
2017-05-15 16:43:46 -07:00
Steve Perry 187d97f8ed Move to Injecting section: Environment Variables. (#3801) 2017-05-15 14:54:25 -07:00
Steve Perry 9cca278d3b Move to Tasks: Cross-cluster Service Discovery. (#3800) 2017-05-15 14:06:34 -07:00
Steve Perry e280122a44 Move to Tasks: Tools for Monitoring. (#3799) 2017-05-15 13:34:41 -07:00
Steve Perry e0df06fded Fix redirects. (#3797) 2017-05-15 13:17:13 -07:00
Steve Perry 156519236b Consolidate federation topics. (#3796) 2017-05-15 12:12:47 -07:00
Steve Perry 31c6a9b747 Move to Tasks: Auth Across Clusters. (#3794) 2017-05-15 11:50:59 -07:00
Steve Perry f1ac46cab4 Move to Architecture section: Master Node Com. (#3793) 2017-05-15 11:35:44 -07:00
Steve Perry 225f1b775d Move to Tasks: Static Pods. (#3792) 2017-05-15 11:09:51 -07:00
Steve Perry 06c204a9f0 Move to Tasks: Cluster Management. (#3790) 2017-05-15 10:56:06 -07:00
Steve Perry ed8cf61f3f Move to Tasks: Access App Cluster. (#3789) 2017-05-15 10:21:26 -07:00
paulbattagliag b0ab3f94ee Update api-overview.md 2017-05-14 16:41:28 -07:00
paulbattagliag 15ca8f0b2f Update networkpolicies.md (#3755)
* Update networkpolicies.md

* Update networkpolicies.md
2017-05-14 16:33:31 -07:00
Claire Lundeby 5ceb764c80 Write the Docs: Moved to Concept page template & made style edits (#3766)
* Moved to Concept page template & made style edits

* Update federation.md
2017-05-14 16:32:13 -07:00
Wendy Shaffer a326f8ff17 Write the Docs: Adding template and editing 2017-05-14 16:08:30 -07:00
Ryan McGinnis 74b390a61a WtD: Style Guide
Adds section "Avoid Latin phrases"
- Guidelines for common latin phrases: e.g., i.e., etc.
2017-05-14 16:05:36 -07:00
Ryan McGinnis 6e4c5f1abd WtD: Picking the Right Solution (#3772)
* WtD: Picking the Right Solution

- Comprehensive edit for readability
- Fixes dead and redirecting links
- Fixes headings

* md format change
2017-05-14 16:03:02 -07:00
Andrew Chen 2ea01f58d0 Update cluster-administration-overview.md 2017-05-14 15:50:04 -07:00
paulbattagliag 0ba167b5e9 Update what-is-kubernetes.md (#3765)
* Update what-is-kubernetes.md

* Update what-is-kubernetes.md
2017-05-14 15:42:05 -07:00
Pheo 9640624d8c edited create-external-load-balancer.md to conform to template (#3746)
* refactor to new template

* refactor to new template

* fixed a missed header resize

* removed TOC substitute
2017-05-14 15:31:11 -07:00
geraldinewhitt 2f0d13a2e0 WTD (#3757)
Edits from genwhitt in Portland at WTD conference. Apply template, copyedit, apply style guide.
2017-05-14 15:10:50 -07:00
paulbattagliag a712b13a3b Update configure-namespace-isolation.md (#3758)
* Update configure-namespace-isolation.md

* Update configure-namespace-isolation.md
2017-05-14 15:04:54 -07:00
Andrew Chen e763168abd WtD: edit AppArmor (#3754)
* WtD: edit AppArmor

* WtD: edit AppArmor
2017-05-14 15:02:23 -07:00
isa-bel 0776f9d631 Docs - Calico NetworkPolicy (#3756)
* Add task template for calico-network-policy

* Add discussion section
2017-05-14 14:26:41 -07:00
Jodie Putrino b2c7a86bcb Write the Docs Writing day:
- edit /docs/tasks/configure-pod-container/configmap.md to use the task template
- move the Consuming ConfigMap in pods section to its own doc (coming in a separate PR)
2017-05-14 14:17:39 -07:00
Ryan McGinnis 86041a40a3 Merge pull request #3764 from kubernetes/ryanmcginnis-patch-2
WtD: Cluster Administration Overview
2017-05-14 14:07:00 -07:00
Ryan McGinnis 79cae9ada5 WtD: Cluster Administration Overview
Fixes typo
2017-05-14 14:04:20 -07:00
Ryan McGinnis be4b6d13f9 WtD: Cluster Administration Overview
Update cluster-administration-overview.md
2017-05-14 13:56:36 -07:00
Ryan McGinnis db5f30a4aa Update cluster-administration-overview.md
Fixes typos
2017-05-14 13:53:46 -07:00
Ryan McGinnis c76dbdda67 Merge pull request #3753 from kubernetes/ryanmcginnis-patch-1
Update cluster-administration-overview.md
2017-05-14 12:27:27 -07:00
Ryan McGinnis a36c1e9566 Update cluster-administration-overview.md
- Fixes a typo
- Fixes a dead link
2017-05-14 12:22:35 -07:00
Ryan McGinnis be64a24e42 WtD: Cluster Administration Overview
Update cluster-administration-overview.md
2017-05-14 12:16:28 -07:00
Ryan McGinnis a6e22fe80d Update cluster-administration-overview.md
Write the Docs
- Put article in Concept template
- Edited article: updated links, edited for readability, and updated titles of articles
2017-05-14 11:43:49 -07:00
Andrew Chen df96dc03ca WtD: AppArmor (#3743)
* WtD: apparmor

* add newline to separate feature tagging
2017-05-14 11:41:20 -07:00
Andrew Chen fcd906cc91 Merge pull request #3745 from kubernetes/chenoips-task-configure-namespace-isolation
Add Configure Namespace Isolation task
2017-05-14 11:19:52 -07:00
Andrew Chen f050c4cc57 Add Configure Namespace Isolation task 2017-05-14 11:13:31 -07:00
Andrew Chen 53a7982b62 Merge pull request #3744 from kubernetes/chenoips-feature-state-patch
Add newline to feature state templates
2017-05-14 11:00:09 -07:00
Andrew Chen 26b22eac9d Add newline to feature state templates 2017-05-14 10:54:17 -07:00
Steve Perry 0ce3686712 Fix front matter. (#3740) 2017-05-13 21:06:30 -07:00
Steve Perry 697e0d3574 Move and consolidate etcd topics. (#3739) 2017-05-13 20:54:58 -07:00
Steve Perry 6c01365c76 Move to Setup: Addons. (#3738) 2017-05-13 19:01:29 -07:00
cbatra 5aab4012c4 Update statefulset.md (#3732)
Following links were broken on the Stateful Set page

Link to "Force deleting Stateful Sets"
Link to Headless service.
Link to cluser domain
2017-05-12 15:37:47 -07:00
Jacob Beacham d286e4036b Mention alternate architectures for RPMs in kubeadm doc.
Now that we have new repositories to house RPMs for other architectures,
and are populating them with new releases, we should advertise them in
the kubeadm getting started instructions.
2017-05-12 15:31:25 -07:00
Andrew Chen 828455220b Merge pull request #3733 from kubernetes/chenoips-3631-patch
Fix typo to finish PR #3631
2017-05-12 15:30:06 -07:00
Andrew Chen e89dafe099 Fix typo to finish PR #3631 2017-05-12 15:25:51 -07:00
Guangya Liu 297c665eca Added example for pod preferredDuringSchedulingIgnoredDuringExecution. 2017-05-12 15:22:49 -07:00
Joshua Swaney 0fb2e07614 s/cloudprovider/cloud provider/ 2017-05-12 11:07:11 -07:00
zhangmingld 1779addc8d Symbol ")" is redundant (#3728)
Symbol ")" is redundant
2017-05-12 11:06:36 -07:00
Dan Winship a32d30c107 NetworkPolicy updates for v1 (#3721)
* NetworkPolicy clarifications

- For clarity, only use the word "policy" in reference to
  NetworkPolicies, not in reference to the isolation annotation.

- Drop a bunch of text related to the isolation annotation since
  there's only one interesting value so there's no reason to
  complicate things.

- Fix bad YAML indentation

- Misc rewording

* Update NetworkPolicy docs for v1
2017-05-11 13:26:32 -07:00
Kasper Bentsen d0b6757e6f Added missing close of function. 2017-05-11 11:26:11 -07:00
Sam Vilain 712dce6d82 Fix a broken link in "Installing Minikube"
Broken by kubernetes/minikube#1410
2017-05-11 11:25:20 -07:00
Mikhail Vasilenko 69c44a3996 typo fix 2017-05-11 11:24:07 -07:00
Jupp Müller 2e79fcbaa2 Fix broken github links to drivers.md 2017-05-11 11:23:30 -07:00
Andrew Chen 3c0c1eeaf9 Merge pull request #3722 from kubernetes/chenoips-1.6.3
change fullversion var for v1.6.3 release
2017-05-11 11:20:55 -07:00
Andrew Chen 0809e7a049 change fullversion var for v1.6.3 release 2017-05-11 11:13:59 -07:00
Steve Perry 0e7df470ee Hide token. (#3716) 2017-05-10 21:36:58 -07:00
zhangmingld d0a395e83e The kubelet flag "--config" has changed to be "pod-manifest-path" (#3692)
The kubelet flag "--config" has changed to be "pod-manifest-path" ,so
file "default-kubelet"should be changed.
2017-05-10 13:36:07 -07:00
Steve Perry 02c8689af5 New topic: Installing Minikube. (#3707)
* New topic: Installing Minikube.

* Refine.
2017-05-10 10:44:31 -07:00
Steve Perry 5d7bb8c7b2 Create Installing Tools section. (#3706) 2017-05-10 09:39:55 -07:00
Mike Bryant 14fa478c2d Remove SI comment
K is not a valid SI prefix
2017-05-10 09:29:13 -07:00
Charlie R.C 2aeffaefba fix typo in rbac.md 2017-05-10 09:28:06 -07:00
Nicolas Dextraze 642043cfe1 Fix missing = when setting api advertised address
Similar to the pod-network-cird= issue, with no = there is no immediate problem but it causes trouble along the way (i.e. I wasn't able to access the dashboard via kubectl proxy)
2017-05-10 09:26:02 -07:00
Jesse Haka c1b8664cb6 cinder storageclass, zone algorithm if not specified (#3693)
update aws+gce availability texts, the algorithm is not random
2017-05-10 09:25:05 -07:00
Steve Perry a0ed6254bd Add Dynamic Provisioning to TOC. (#3700) 2017-05-09 14:57:59 -07:00
Steve Perry d7d32000a5 Change title. (#3699) 2017-05-09 13:48:28 -07:00
Steve Perry 8be660ccd8 Move to Concepts: Admin Overview. (#3698)
* Move to Concepts: Admin Overview.

* Fix filename.
2017-05-09 13:32:48 -07:00
Steve Perry 59d9c2ec4f Net pol (#3696)
* Move to Admin section: Disruption.

* Move to Admin section: Net Policy.

* Add redirects.
2017-05-09 11:58:30 -07:00
Andrew Chen ef2c0920d3 Add feature state templates (#3680)
* Add feature state template

* tweak css

* change wording

* apply wording changes to alpha and beta

* tweak dialog css

* tweak code highlighting

* tweak dialog style

* set for_k8s_version default

* tweak dialog ul

* make init containers 1.5 beta for now

* set default dialog width

* revert a:visited color

* force code style

* simplify copy for alpha, beta, stable

* tweak code style

* fix beta dialog title

* fix dialog link a code

* remaining tweaks

* set a:visited color

* Address Steve's feedback

* rename dialog.md to feature-dialog.md

* remove bold from additional feature state text
2017-05-09 11:24:43 -07:00
Steve Perry ae991e8d60 Move to Admin section: Disruption. (#3695) 2017-05-09 10:42:16 -07:00
Steve Perry c0eb5e17ad Move to Tasks: Multiple chedulers. (#3694) 2017-05-09 10:08:26 -07:00
Michail Kargakis 8481c02496 Update deployment docs 2017-05-09 10:04:45 -07:00
Steve Perry f953d98eab Move to Tasks: Guaranteed Scheduling. (#3689) 2017-05-08 22:40:29 -07:00
Steve Perry 2b6f3ea7fe Change TOC order. (#3688) 2017-05-08 22:08:37 -07:00
Andrew Chen f01101d482 Merge pull request #3687 from kubernetes/chenopis-2858-patch
Patch for PR #2858
2017-05-08 22:03:12 -07:00
Andrew Chen 828bf0ac26 Patch for PR #2858 2017-05-08 21:27:35 -07:00
Haoran Wang 39b069a16c update the multi-scheduler doc (#2858)
* Add doc for multiple scheduler with leader election enabled

* address comments
2017-05-08 21:25:44 -07:00
Steve Perry 3a4a75bb53 Move to Admin section: CPU and Mem Limits. (#3686)
* Move to Admin section: CPU and Mem Limits.

* Fix TOC entry.
2017-05-08 19:30:59 -07:00
Steve Perry 34a71341eb Move to Tasks: Out of Resources. (#3685) 2017-05-08 19:12:27 -07:00
Steve Perry 1304506ac2 Move to Admin section: Quotas. (#3684) 2017-05-08 18:35:53 -07:00
Andrew Chen e49d9d1c4d Merge pull request #3682 from kubernetes/chenopis-pr-template-patch
Add reminder to PR template for 1.7
2017-05-08 15:40:00 -07:00
Andrew Chen 56f4168847 Add reminder to PR template for 1.7 2017-05-08 15:26:14 -07:00
Steve Perry 177c96da73 Move to Tasks: ThirdPartyRes. (#3679)
* Move to Tasks: ThirdPartyRes.

* Change title.
2017-05-08 14:14:13 -07:00
Steve Perry 20ff36112a Move to Debug section: Auditing. (#3678) 2017-05-08 12:53:43 -07:00
Steve Perry eccd238b1c Move to debugging section: shell. (#3677) 2017-05-08 11:22:29 -07:00
Steve Perry 216856f0b9 Change title. (#3663) 2017-05-08 10:40:18 -07:00
Nicolas Dextraze 563241c4e5 Update kubeadm.md
Wasted hours today trying to get kubeadm working on a Ubuntu VM. The culprit is a missing = for the pod-network-cidr parameter to the kubeadm init command when using calico. Without it kube-dns refused to start, oddly enough pods had 10.244.0.0 network setup but somehow it was failing sending a request to destroy and recreate the pod.

Here's the events for the kube-dns pods if someone's interested.

Events:
  FirstSeen     LastSeen        Count   From                    SubObjectPath   Type            Reason          Message
  ---------     --------        -----   ----                    -------------   --------        ------          -------
  2m            2m              1       default-scheduler                       Normal          Scheduled       Successfully assigned kube-dns-3913472980-5xfzt to kube-master
  1m            1m              1       kubelet, kube-master                    Warning         FailedSync      Error syncing pod, skipping: failed to "CreatePodSandbox" for "kube-dns-3913472980-5xfzt_kube-system(3bd90f8c-33a8-11e7-8a23-080027ac04f3)" with CreatePodSandboxError: "CreatePodSandbox for pod \"kube-dns-3913472980-5xfzt_kube-system(3bd90f8c-33a8-11e7-8a23-080027ac04f3)\" failed: rpc error: code = 2 desc = NetworkPlugin cni failed to set up pod \"kube-dns-3913472980-5xfzt_kube-system\" network: Get https://10.96.0.1:443/api/v1/namespaces/kube-system/pods/kube-dns-3913472980-5xfzt: dial tcp 10.96.0.1:443: i/o timeout"

  1m    50s     6       kubelet, kube-master            Warning FailedSync      Error syncing pod, skipping: failed to "KillPodSandbox" for "3bd90f8c-33a8-11e7-8a23-080027ac04f3" with KillPodSandboxError: "rpc error: code = 2 desc = NetworkPlugin cni failed to teardown pod \"kube-dns-3913472980-5xfzt_kube-system\" network: connection is unauthorized"

  1m    9s      9       kubelet, kube-master            Normal  SandboxChanged  Pod sandbox changed, it will be killed and re-created.
  37s   9s      3       kubelet, kube-master            Warning FailedSync      Error syncing pod, skipping: failed to "KillPodSandbox" for "3bd90f8c-33a8-11e7-8a23-080027ac04f3" with KillPodSandboxError: "rpc error: code = 2 desc = NetworkPlugin cni failed to teardown pod \"kube-dns-3913472980-5xfzt_kube-system\" network: netplugin failed but error parsing its diagnostic message \"\": unexpected end of JSON input"
2017-05-08 10:31:22 -07:00
Eugene Pirogov 8260e7cd06 Fix a small typo 2017-05-08 10:26:16 -07:00
Rohit Agarwal fb26a395f0 ReplicationController: Fix typo. 2017-05-08 10:25:44 -07:00
Andrew Chen 71bf0f5e19 Merge pull request #3676 from kubernetes/chenopis-3673-patch
grammar nits
2017-05-08 10:20:53 -07:00
Andrew Chen 76fe741576 grammar nits 2017-05-08 10:10:47 -07:00
Mik Vyatskov 46ff287a87 Fix Elasticsearch logging manual 2017-05-08 10:07:17 -07:00
Andrew Chen ac377d663c Merge pull request #3650 from gyliu513/special-case
Highlight two special case for tolerations.
2017-05-08 10:01:01 -07:00
Guangya Liu 6ae88186aa Highlight two special case for tolerations. 2017-05-06 08:22:52 +08:00
yupengzte 6d49fc399d Doctype must be declare first
Signed-off-by: yupengzte <yu.peng36@zte.com.cn>
2017-05-05 14:51:02 -07:00
Andrew Chen ab6d08c1e4 Merge pull request #3662 from kubernetes/chenopis-patch-1
Reimplement PR #3589
2017-05-05 14:49:31 -07:00
Andrew Chen 3426562878 Reimplement PR #3589
Implement change proposed in PR #3589.
2017-05-05 14:42:14 -07:00
anatoly techtonik 31746164e5 Explain that LXD containers run Docker containers inside (#3660)
* Explain that LXD containers run Docker containers inside

Fixes issue #3612

* implement feedback
2017-05-05 14:34:36 -07:00
Steve Perry db929e4e2b Move to Accessing Apps: List Containers. (#3661) 2017-05-05 14:26:23 -07:00
Olve S. Hansen 948d545737 Added sub-section about internal load balancers (#3136)
* Added sub-section about internal load balancers

* Title changed to
2017-05-05 14:16:38 -07:00
Tupin Laurent 507c29afeb Correct links to correct repository (#3430)
* Correct links to correct repository

Update prerequesites list

* Update url to Apache Cloudstack repo
2017-05-05 13:36:13 -07:00
Steve Perry daecd7213d Move StatefulSet topics. (#3659)
* Move StatefulSet topics.

* Fix toc paths.
2017-05-05 13:30:15 -07:00
Steve Perry cbe9501834 Change title of DNS topic. (#3657) 2017-05-05 11:21:04 -07:00
Steve Perry 3b6a566625 Move to Tasks: Service Access App. (#3655) 2017-05-05 10:44:21 -07:00
Steve Perry af9e003fb3 Move Dashboard to Accessing Apps. (#3654)
* Move Dashboard to Accessing Apps.

* Fix typo.
2017-05-05 10:15:29 -07:00
Kelly Campbell 6d606db9d4 Link to tutorial on how to update a StatefulSet 2017-05-05 09:34:08 -07:00
William Chang a6ac2a11ff Update the cluster deploy script path. 2017-05-05 09:33:10 -07:00
Xiaoyu Zhang ac9a2e678e fix a typo
"by default" may be fine
2017-05-05 09:10:11 -07:00
Andrew Chen 3205c11056 Merge pull request #3652 from marcelcorso/master
fix wrong addresses for mysql-statefulset.yaml and gce-volume.yaml
2017-05-05 09:09:42 -07:00
Marcel Corso dd438bc3c6 fix wrong addresses for mysql-statefulset.yaml and gce-volume.yaml 2017-05-05 13:40:19 +02:00
Steve Perry ca91dd2869 Fix yaml paths. (#3648) 2017-05-04 19:28:01 -07:00
Steve Perry 0f881b20d7 Path fix 3 (#3647)
* Fix yaml path.

* Fix yaml paths.
2017-05-04 18:49:44 -07:00
Steve Perry 76bd752c41 Fix yaml path. (#3646) 2017-05-04 18:24:00 -07:00
Steve Perry ccc615a353 Fix yaml path. (#3644) 2017-05-04 18:03:24 -07:00
Steve Perry 29790b232c Move to Tasks: Connect Front Back. (#3643)
* Move to Tasks: Connect Front Back.

* Fix paths.
2017-05-04 16:48:27 -07:00
Steve Perry 3996566963 Add note about Deployments. (#3642)
* Add note about Deployments.

* Fix typo.
2017-05-04 15:54:11 -07:00
Steve Perry 559c78c8b5 Move to Running Applications: Pet to Stateful. (#3640) 2017-05-04 14:03:31 -07:00
Andrew Chen 105942fdb4 Refactor tabs implementation (#3268)
* Refactor tabs implementation

* tidy head.html

* test jquery-ui tabs

* Initial tabs code refactor

* test liquid parsing

* test liquid stack

* move into tabs.html

* test jekyll tabs

* construct array

* test cleaner way

* add example content

* test split hack

* fix md

* add site.emptyArray

* set good defaults

* fix CSS

* cleanup li

* fix a href

* fix content tabs

* add space to default

* remove a href underline

* rename docs/tab-test.md to docs/tab-example.md

* fix skip toc check

* add assignees

* add comment to reference example

* add documentation to example

* escape md

* move demo to top, pretty it up

* add word

* tweak wording
2017-05-04 13:52:59 -07:00
Steve Perry 204aad82b1 Move to Tasks: Replicated Stateful. (#3639)
* Move to Tasks: Replicated Stateful.

* Fix toc entry.
2017-05-04 13:31:11 -07:00
Steve Perry 712c374379 Move to Tasks: Single-instance Stateful. (#3638) 2017-05-04 12:04:28 -07:00
Steve Perry fc533bea91 Combine topic on commands and args. (#3637)
* Combine topic on commands and args.

* Fix redirect.
2017-05-04 11:38:34 -07:00
Steve Perry 1cc0b4b93a Move topic to Inject Data section. (#3635) 2017-05-04 11:08:41 -07:00
Steve Perry 15bc72e475 Move topic to Injecting Data section. (#3634)
* Move topic to Injecting Data section.

* Fix path in TOC.
2017-05-04 10:43:17 -07:00
Andrew Chen 63c5621e47 Merge pull request #3633 from kubernetes/chenopis-3594-patch
Change link path
2017-05-04 07:30:11 -07:00
Andrew Chen 00f48aed80 Change link path 2017-05-04 07:25:24 -07:00
wujun8 5d83944c33 deprecated getting-started-guide on centos (#3594)
* deprecated getting-started-guide on centos

fix https://github.com/kubernetes/kubernetes.github.io/issues/1613

* Reword thx to @chenopis
2017-05-04 07:21:13 -07:00
Vinit Mahedia 0e294acc78 skydns to kubedns rename documentation changes 2017-05-03 23:01:15 -07:00
Steve Perry 965dfd948a Remove ReplicationController tutorial. (#3628) 2017-05-03 18:10:06 -07:00
Steve Perry 1663f37f90 Move topic to Tasks. (#3627) 2017-05-03 17:44:23 -07:00
Steve Perry ede2648b28 Move topic to Injecting Data section. (#3626) 2017-05-03 16:31:55 -07:00
Steve Perry 6935b1c6a9 Move topic to Injecting Data section. (#3623)
* Move topic to Injecting Data section.

* Update include paths.

* Remove old file.
2017-05-03 14:20:05 -07:00
Steve Perry 7c1e0a95fb Move topic to Injecting Data section. (#3622)
* Move topic to Injecting Data section.

* Move included file.
2017-05-03 12:35:15 -07:00
Steve Perry 53eb49f080 Change title. (#3621) 2017-05-03 11:26:47 -07:00
Steve Perry 2442dc292f Move topic to Configuration section. (#3620)
* Move topic to Configuration section.

* Move included file.
2017-05-03 11:10:07 -07:00
Steve Perry f28c8376e0 Change title. (#3619) 2017-05-03 10:40:09 -07:00
Roberto Jung Drebes 3320d60ed3 update storageclass annotation docs for statefulsets (#3616) 2017-05-03 10:37:40 -07:00
Andrew Chen 5c43be1ef3 Merge pull request #3618 from kubernetes/chenopis-travis-patch-0503
Fix Travis CI
2017-05-03 08:47:12 -07:00
Andrew Chen 78cfc25c79 Fix Travis CI 2017-05-03 08:39:26 -07:00
Jiangzhao Lv b4e57df8a0 fix redirect link (#3568)
* fix redirect link

* use relative path instead of full URL
2017-05-03 08:22:28 -07:00
Steve Perry d021173027 Remove duplicate redirect. (#3613) 2017-05-02 18:34:32 -07:00
Steve Perry c849d1668d Fix typo in redirect. (#3611) 2017-05-02 17:14:06 -07:00
Andrew Chen 00615b930f Merge pull request #3606 from arthur0/master
Fixes broken links
2017-05-02 15:10:03 -07:00
Arthur Miranda d2de692a32 Fixes broken links 2017-05-02 18:12:48 -03:00
Aaron Prindle 4150fc8d7c Removed deleted links regarding minikube CLI 2017-05-02 12:34:34 -07:00
Ahmet Alp Balkan 598cefdc99 Add missing volumetype to pv doc (#3600)
Fixes #3575

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-05-02 12:33:44 -07:00
Ahmet Alp Balkan d3cc80f5e0 Fix broken link in HA doc with minikube (#3599)
Fixes #3570.

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-05-02 12:33:20 -07:00
Ahmet Alp Balkan 5245ee55eb rolling-update: remove link to the doc itself
Fixes #3357. I'm removing this statement as it's not clear where it should
actually be pointing to...

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-05-02 12:16:10 -07:00
Ahmet Alp Balkan 742fd8a30b Link to 'why containers' in kubernetes-basics
Fixes #3472.

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-05-02 12:15:36 -07:00
Marco Ceppi a5fa73e180 Updating Ubuntu based instructions and upgrades 2017-05-02 12:12:41 -07:00
Andrew Chen e95cac7597 Merge pull request #3602 from kubernetes/chenopis-daemonset-patch
Address Issue #3577
2017-05-02 12:10:44 -07:00
Andrew Chen 5d195b23c3 Address Issue #3577 2017-05-02 12:05:26 -07:00
Guangya Liu 7f52b9eb09 Added more explanation for nodeAffinity.
Explain more for how multiple nodeSelectorTerms and multiple
matchExpressions works.

Fixed #3345
2017-05-02 11:59:36 -07:00
Andrew Chen 1ed1472057 Merge pull request #3601 from foxish/patch-1
Update and fix travis tests (short-term)
2017-05-02 11:48:06 -07:00
Anirudh Ramanathan 3dc509026d Update and fix travis tests (short-term) 2017-05-02 11:42:51 -07:00
Andrew Chen f127f53415 Merge pull request #3593 from kubernetes/chenopis-tasks-patch
Address #3433 - update Tasks landing page
2017-05-01 15:43:12 -07:00
Andrew Chen 804a24d272 Address #3433 - update Tasks landing page 2017-05-01 15:37:29 -07:00
Oli Lalonde 69c6591418 Remove redundant, out of sync table of contents
This table of contents is redundant (it's also available from the side nav) and confusing (not clear if it's a copy of the side nav or contains additional information). Plus, it was out of sync with the actual table of contents (last section on GPU was missing). So, I think it's best to just remove it.
2017-05-01 14:23:38 -07:00
Andrew Chen 0401a68162 Merge pull request #3592 from saschagrunert/master
Update Init Container link
2017-05-01 10:43:26 -07:00
Sascha Grunert 043672b11f Update Init Container link 2017-05-01 19:34:32 +02:00
huikang 0f028c716a Update service.md 2017-05-01 10:24:14 -07:00
Everett Toews 937177b991 Link to appropriate docs for Automatic Mounting of Manually Created Secrets (#3571)
* Update link to Adding ImagePullSecrets to a service account

* Link to appropriate docs for Automatic Mounting of Manually Created Secrets

* Replace here w/ title of pages
2017-05-01 10:22:51 -07:00
supereagle cfaa556025 update kubectl apply doc for required resource name 2017-05-01 10:17:30 -07:00
jianglingxia 7de8cda84c jlx426 2017-05-01 10:15:25 -07:00
Stephen Schlie 5f03cfef66 Updating Canal URL (#3583)
Canal has undergone some updates and the should now point to the
k8s-install README
2017-05-01 10:10:51 -07:00
Andrew Chen 004abfe1d8 Merge pull request #3591 from kubernetes/chenopis-3572-patch
Grammar patch to #3572
2017-05-01 10:10:30 -07:00
Andrew Chen 15468eb442 Grammar patch to #3572 2017-05-01 10:07:15 -07:00
Andrew Chen 0624f8f211 Merge pull request #3582 from kubernetes/chenopis-kill-swagger
Remove swagger-ui from search index
2017-04-28 16:33:07 -07:00
Andrew Chen 8d48ab2a73 Remove swagger-ui from search index 2017-04-28 16:23:39 -07:00
Andrew Chen 78a13cebf5 Merge pull request #3581 from kubernetes/chenopis-v1_6_2
Update fullversion page variable
2017-04-28 16:18:05 -07:00
Andrew Chen 3d3f0ba1e8 Update fullversion page variable 2017-04-28 16:15:05 -07:00
Andrew Chen 2b625b3033 Merge pull request #3580 from kubernetes/chenopis-3572-patch
#3572 patch
2017-04-28 16:09:55 -07:00
Andrew Chen f1b00d086d Grammar nitpicks for #3572 2017-04-28 16:05:23 -07:00
Jun Xiang Tee fd3dcaaab6 Update init containers documentation with 1.6 syntax for YAML files (#3572)
* Syntax for Kubernetes version 1.6

Included 1.6 syntax change for declaration of init containers.

* Reorder services.yaml & add 1.5 syntax still works

* Corrected YAML headings & add syntax explanation
2017-04-28 15:59:09 -07:00
Andrew Chen 039b1b395c Merge pull request #3579 from kubernetes/chenopis-3365-redo
Reimplement PR #3365
2017-04-28 15:53:27 -07:00
Andrew Chen 8868c002ef Reimplement PR #3365 2017-04-28 15:48:13 -07:00
Charlie R.C 5e384ab531 remove abandoned environment variable 2017-04-28 15:43:17 -07:00
Josh Wood c28ffd9cca getting-started/aws: Update links to AWS deploy tools
- Update link to kube-aws at Incubator
- Add link to tectonic-installer for aws
2017-04-28 15:38:39 -07:00
Jun Xu d178aa22ec fix typo 2017-04-28 15:22:07 -07:00
xilabao fcecf1b7ed fix impersonate in authorization 2017-04-28 15:21:31 -07:00
Andrew Chen 8d1995beb0 Merge pull request #3578 from kubernetes/chenopis-del-101-201
Deprecate Kubernetes 101 and 201
2017-04-28 15:20:44 -07:00
Andrew Chen c3efda3b97 Deprecated Kubernetes 101 and 201 2017-04-28 15:15:18 -07:00
Andrew Chen ee74993fa4 Refactor Troubleshooting (#3564)
* Refactor Troubleshooting

* reorder ToC

* Move troubleshooting into Home ToC
2017-04-28 14:53:12 -07:00
Andrew Chen 42e2b88498 Merge pull request #3574 from kubernetes/chenopis-home-patch1
Cleanup Home landing page
2017-04-28 13:36:51 -07:00
Andrew Chen d4dca09b12 Cleanup Home landing page 2017-04-28 13:32:08 -07:00
xiangpengzhao edaafe493a Cleanup deprecation-policy 2017-04-28 10:36:03 -07:00
Andrew Chen c0d926d550 fix link on Reference page (#3565) 2017-04-28 10:06:14 -07:00
craigbox 88f83fd49a Federation service discovery doc fixes (#3560)
* Fix rendering issue in federation doc

See odd line break in "Discovering a federated service" in https://kubernetes.io/docs/concepts/cluster-administration/federation-service-discovery/#discovering-a-federated-service

* Update federation-service-discovery.md

Fix some egregious table formatting also

* Update federation-service-discovery.md
2017-04-27 15:55:34 -07:00
guangxuli a562a36c39 the proposal and api link should be updated 2017-04-27 15:13:08 -07:00
Eric Chiang 8b99043839 rbac: document resourceNames and note they can't be used for creates 2017-04-27 15:07:07 -07:00
Clenimar Filemon d3242d6a23 Fix formatting issues in federated ingress docs 2017-04-27 15:04:03 -07:00
Andrew Chen 5462769c4a Merge pull request #3563 from kubernetes/chenopis-webmaster-verification
add site verification file
2017-04-27 14:38:52 -07:00
Andrew Chen b6e85226c8 add site verification file 2017-04-27 14:17:09 -07:00
Andrew Chen 629e07b997 Merge pull request #3562 from ahmetb/downward-fix
Fix broken downward API link
2017-04-27 13:01:28 -07:00
Ahmet Alp Balkan 0cd5e2179d Fix broken downward API link
Fixes #3561.

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-04-27 12:58:22 -07:00
Andrew Chen 6fe67a6579 Refactor robots.txt (#3534)
* Test robots.txt

* refactor robots.txt to use /*

* clarify note

* verified and cleaned up robots.txt entries

* remove unnecessary wildcards
2017-04-27 12:36:29 -07:00
Hoat Le f428116387 Use pipeline to remove new line char (#3458)
When -w option is not available for base64, for example, when using alpine Docker image.
`echo -n "<text>" | base64 | tr -d '\n'` should be used, it works better.
2017-04-27 09:35:38 -07:00
Ahmet Alp Balkan a9ca41e8ac gce.md: update kubectl instructions, remove bash completion instructions (#3477)
* Remove bash completion from gce.md

Bash completion instructions do not belong to this guide. (ref: #3476)

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

* Update kubectl installation instructions on gce.md

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-04-27 08:52:01 -07:00
Steve Perry 92b6057d9c Deprecation complete: secrets/index ... (#3554) 2017-04-26 17:13:34 -07:00
Steve Perry b37b5d1957 Deprecation complete: ingress ... (#3553) 2017-04-26 16:49:38 -07:00
Steve Perry bec1ee86ce Deprecation complete: replicasets (#3552) 2017-04-26 15:09:02 -07:00
Steve Perry e98619b0d9 Deprecation complete: federation/daemonsets ... (#3551) 2017-04-26 14:13:54 -07:00
Steve Perry 9fd06cdc95 Deprecation complete: node-problem ... (#3550) 2017-04-26 13:53:19 -07:00
Steve Perry cb04127bd1 Deprecation complete: master-node-communication ... (#3548) 2017-04-26 12:29:33 -07:00
Ahmet Alp Balkan 49c14f2d61 remove Federation API from docs/reference home
This topic is not yet important enough to list exhaustively on /docs/reference.
Also the links are broken anyway. Fixes #3535.

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-04-26 10:50:11 -07:00
Jakob Jarosch 5d5597bf7d Add snippet to list all secrets currently in use 2017-04-26 10:47:53 -07:00
Steve Perry 61c1605c27 Deprecation complete: etcd ... (#3543) 2017-04-26 08:24:44 -07:00
Steve Perry 4d990ef6ef Deprecation complete: namespaces/walkthrough ... (#3539) 2017-04-25 20:50:33 -07:00
Steve Perry aeb1ada001 Deprecation complete: admin ... (#3538) 2017-04-25 20:31:45 -07:00
Steve Perry 80a2fff4dc Deprecation complete: gpus ... (#3537) 2017-04-25 20:09:38 -07:00
Steve Perry f83c5874a8 Deprecation complete: container-environment ... (#3536) 2017-04-25 18:03:58 -07:00
Steve Perry ecae0f436c Deprecation complete: multi-container ... (#3533) 2017-04-25 16:50:07 -07:00
Steve Perry 5e3a0f555c Deprecation complete: jobs/expansions ... (#3532) 2017-04-25 15:44:22 -07:00
Xiaoyu Zhang 968cc459f4 configmap.md: add v1.6 reminding (#3511)
* configmap.md: add v1.6 reminding

configmap.md: add v1.6 reminding

* update configmap-envfrom

update configmap-envfrom
2017-04-25 15:34:11 -07:00
Steve Perry bca9551f9c Deprecation complete: jobs, work queue (#3531) 2017-04-25 14:30:48 -07:00
Clenimar Filemon b6eb379e1d Make the kubefed guide default for setting up a federation (#3523)
* Update federation setup guide link to kubefed

We no longer support federation setup scripts `federation.sh` and
`deploy.sh`. Update the main federation guide setup link accordingly, by
making kubefed guide the way to go.

* Update federation.md
2017-04-25 14:19:34 -07:00
Steve Perry 0dbed982a1 Dep 4 (#3529)
* Deprecation complete: net policy walkthrough

* Deprecation complete: net policy
2017-04-25 13:23:50 -07:00
Steve Perry 7c1766dde0 Deprecation complete: configmap. (#3526) 2017-04-25 13:05:36 -07:00
Steve Perry f27759a768 Deprecation complete: horizontal-pod-autoscaling (#3528) 2017-04-25 13:00:52 -07:00
mlambert890b bc21477164 April k8s Partner Registry updates - Part 2 of 2 (#3514)
* Add files via upload

* Update partner-script.js

* Add files via upload

* Update partner-script.js

* Add files via upload
2017-04-25 11:11:31 -07:00
nerdondon d638dfb3cf Switch limit-range to the new task template. Add supporting yaml files. 2017-04-25 10:45:05 -07:00
craigbox 128610c48d Fix cURL commands, which are broken across lines (#3506)
Copy and paste will now work.

(A couple of typos corrected also)
2017-04-25 10:43:50 -07:00
chenhuan12 d8117f1e38 fix the command output
fix the command output
2017-04-25 10:40:30 -07:00
chenhuan12 913b8f555e fix the command output
fix the command output
2017-04-25 10:39:21 -07:00
chenhuan12 b0e5c1f195 fix the command output
fix the command output
2017-04-25 10:39:00 -07:00
chenhuan12 507d9dff98 fix the command output
fix the command output
2017-04-25 10:38:44 -07:00
chenhuan12 b821397d0e fix the command output
fix the command output
2017-04-25 10:38:29 -07:00
chenhuan12 073220ffa5 fix the command output
fix the command output
2017-04-25 10:38:11 -07:00
chenhuan12 192e08aeb9 fix the command output
fix the command output
2017-04-25 10:37:54 -07:00
Andrew Chen 2f51937983 docs migration: Container Lifecycle Hooks into Concepts (#2564)
* initial commit for structure

* migrate Container Lifecycle Hooks and related files to Concepts

* update Concepts ToC

* fix formatting

* Formatting tweaks

* comment out What's next

* remove What's next

* Begin rewrite of container-lifecycle-hooks.md

* incremental update to edit

* Split Container Lifecycle Hooks into container-lifecycle-hooks.md and container-environment.md; change all referring links.

* Add concept template to volumes.md and images.md

* Apply changes for steveperry-53 feedback.

* fix format issue

* tweak formatting

* fix Concepts ToC

* update links

* add back changes to Concepts ToC

* fix a link

* update links
2017-04-25 10:36:59 -07:00
Steve Perry b38c79dde8 Deprecation 22 (#3512)
* Deprecation complete: whatis k8s ...

* Fix redirect source.

* Deprecation complete: sharing-clusters ...
2017-04-24 20:35:01 -07:00
Steve Perry 184ed9429f Deprecation complete: whatis k8s ... (#3510)
* Deprecation complete: whatis k8s ...

* Fix redirect source.
2017-04-24 19:46:40 -07:00
Steve Perry fee12cc272 Remove and redirect User Guide index page. (#3509) 2017-04-24 17:27:08 -07:00
Steve Perry e92bd5833c Remove Guides from top nav. (#3508) 2017-04-24 16:22:02 -07:00
Steve Perry 0d938e623f Deprecation phase 2: configmap/index.md ... (#3507) 2017-04-24 15:42:22 -07:00
Rob Scott 0bed147f87 Updating Liveness and Readiness Docs (#3494)
* adding documentation for TCP checks, replacing "discussion" section with more detailed "configuration" section, other small tweaks

* some line breaks and a small tweak

* tweaking config section

* fixing problems with http get field descriptions, more detailed TCP example
2017-04-24 15:32:40 -07:00
mlambert890b 995c1323cd Add files via upload 2017-04-24 12:19:02 -07:00
mlambert890b c373b802b5 Update partner-script.js 2017-04-24 12:19:02 -07:00
xilabao 06aed032d2 fix wildcard in authorization 2017-04-24 12:16:05 -07:00
Darren Mutz c43bfac582 dm - Fix some wording (#3491) 2017-04-24 11:12:59 -07:00
Cristian Todea 45d17eb8c8 pick-right-solutions.md
Centos bare metal installation guide uses flannel as overlay network, but table at pik-right-solutions.md says it uses "none".
2017-04-24 11:12:28 -07:00
xilabao 7d15d52525 add attention to kubelet config 2017-04-24 11:11:39 -07:00
Brendan Burns 7c549aeeb9 Add some more depth to the 3rd party resource documentation. 2017-04-24 11:10:28 -07:00
Joe Beda 343d731370 Include kubeadm in pick solutions page 2017-04-24 11:07:50 -07:00
Xiaoyu Zhang ad3e55f554 update output of configmap.md
The output may lack some columns.
2017-04-24 11:05:12 -07:00
zhangxiaoyu-zidif 86ecbd2fe8 fix broken link:api-reference 2017-04-24 11:04:51 -07:00
Richard E. Silverman eb2fe3815d fix typo 2017-04-24 10:57:50 -07:00
Damien Leflon 6abd5c0862 Update kubeadm.md
Fix a little typo
2017-04-24 10:57:11 -07:00
chenhuan12 8b80216ab1 fix typo
fix typo
2017-04-24 10:56:46 -07:00
chenhuan12 79a1fd19a9 fix typo
fix typo
2017-04-24 10:55:59 -07:00
Andrew Chen a7376febac Merge pull request #3487 from crassirostris/stackdriver-logging-docs-fix
Fix file names for Stackdriver Logging page
2017-04-24 10:45:33 -07:00
Mik Vyatskov 2e2712e05b Fix file names for Stackdriver Logging page 2017-04-21 11:23:04 +02:00
Charlie Drage 8ff1959f16 Update Kompose documentation
Updates the page with new installation details as well as some updated
fixes (spelling errors, outdated information, etc.)
2017-04-20 17:33:25 -07:00
Didier Roche 62d4745f0d Replace with new service url
The headless service page url has moved.
2017-04-20 14:55:41 -07:00
Peter Lee 7697eb5146 Update link 2017-04-20 14:53:53 -07:00
Drinky Pool 165fc0998b fix typo
fix typo
2017-04-20 14:53:20 -07:00
Ahmet Alp Balkan 55583b8f1b Modify title of Downward API guide
DownwardApiVolumeFile is only an API term and the actual concept is the
Downward API.

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-04-20 14:52:48 -07:00
Mik Vyatskov 59e4200afd Add documentation for configuring Stackdriver Logging agents 2017-04-20 14:02:53 -07:00
Andrew Chen 0ee3235676 Chenopis 3436 patch (#3480)
* Remove the docker-multinode getting started guide

* add entries to skip_toc_check.txt
2017-04-20 13:59:02 -07:00
Andrew Chen aec07548ad Merge pull request #3258 from jbeda/old-kubeadm
Document how to access kubeadm 1.5.
2017-04-20 13:21:05 -07:00
Joe Beda 27f972427e Document how to access kubeadm 1.5.
Fixes #3127
2017-04-20 13:08:53 -07:00
Marc Sluiter 88212bdfa9 Added note about Docker credentials store (#3456)
* Added note about Docker credentials store

Docker might use a credentials store when logging in to docker repositories, see https://docs.docker.com/engine/reference/commandline/login/#credentials-store. In that case you don't find the `auth` token in the `config.json` file. I added a note that this might happen, in order to prevent confusion.

* added "NOTE:" to the Docker credentials store note

as suggested in PR review
2017-04-20 13:08:41 -07:00
Andrew Chen 704c8dbf0f Fix typo in etcd-upgrade.md 2017-04-20 13:04:59 -07:00
Andrew Chen 90070474d4 Reference ToC refactor (#3427)
* Reference ToC refactor

* Move Federation into Reference

* Fix ToC, add deprecation notice

* Fix Reference ToC

* tweak ToC

* Move content into Reference

* touch up kubectl

* fix ToC syntax error

* remove resources-reference docs

* change kubectl section name

* adjust page titles

* create Command-Line Tools section

* Move Federation API out to top level

* remove extensions/v1beta1 definitions

* rewrite Kubernetes API in Concepts in a later PR

* Add jbeda to Kubernetes API Overview page for reviews.

* incorporate feedback

* remove /docs/federation

* move around copy

* cleanup reference landing page

* update reference landing page
2017-04-20 13:04:32 -07:00
Will Sean Don e648c764ab Migrate to new task template (#3442) 2017-04-20 12:55:32 -07:00
Andrew Chen 830adcb3cc Merge pull request #3474 from kubernetes/chenopis-1.6-merge-patch1
Review conflicts from 1.6-release/master merges
2017-04-20 11:00:33 -07:00
Andrew Chen cb9cff59db Review conflicts from 1.6-release/master merges 2017-04-20 10:52:04 -07:00
Harsh Choudhary 800f1b588d Correct secret creation command
Private Registry FQDN also needs to be included in secret creation, otherwise Kubernetes will not be able to pull images.
2017-04-19 14:36:52 -07:00
Ahmet Alp Balkan b17c1e6b82 update-imported-docs.sh script improvements (#3446)
- avoiding cloning the full history of k8s repo, there doesn't seem to be any
  difference (--depth=1 gives the same result and fetched branches are not
  used in this script)
- quoting around variables and add '--' to some commands to separate positional
  arguments
- using subshells instead of pushd/popd stuff, easier to read IMO
- added 'set -o errexit', couldn't add 'set -o pipefail'. For some reason when
  I enable pipefail, it produces a vastly different output but I don't see any
  errors in the output.

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-04-19 14:35:10 -07:00
Sahdev P. Zala 8bec7d7c8a Create reference link for IBM Bluemix Container Service
Create a documentation link for IBM Bluemix Container Service similar to
GCE and Azure. Also rename Softlayer references to Bluemix.

Co-Authored-By: Xavier Loup <xavier.loup@fr.ibm.com>
2017-04-19 14:32:24 -07:00
chenhuan12 cba09b7b70 fix typo
fix typo
2017-04-19 14:27:13 -07:00
Anirudh Ramanathan 8ccd40e661 Add example PDB definition (#3454)
* Fix pdb docs

* Addressed comment
2017-04-19 14:26:35 -07:00
Ahmet Alp Balkan 1acf620458 Add link to /docs/reference from API overview guide (#3452)
Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-04-19 14:23:19 -07:00
Artem Vysotsky 73d9327c3f Update logging-stackdriver.md 2017-04-19 14:16:44 -07:00
Mike Danese 4f0afc2fa7 use more up to date docker package 2017-04-19 14:09:54 -07:00
Andrew Chen e4fcdacb4d Merge pull request #3463 from kubernetes/chenopis-3438-patch
Minor patch changes to PR #3438
2017-04-19 14:08:28 -07:00
Andrew Chen 8f872afcd7 Minor patch changes to PR #3438 2017-04-19 12:25:45 -07:00
PaulJuliusMartinez 7f0294c579 Update User Guide and Admin links to point to new resources. (#3438)
* Update links to outdated user-guide and admin docs

* Add script for updating outdated links.

* Update regex to include init-containers file.

* Pull upstream, rewrite links in and to namespaces walkthrough.
2017-04-19 10:56:47 -07:00
tanshanshan 1592494620 Update labels.md 2017-04-19 10:51:32 -07:00
Xiaoyu Zhang 187a681df7 add a shell script of PATCH (#3293)
add a  shell script of PATCH
2017-04-19 10:37:53 -07:00
chenhuan12 d94335b17a fix typo
fix typo
2017-04-19 10:34:32 -07:00
Steve Perry 38395e7b53 Move Jobs under Controllers. (#3453)
* Move Jobs under Controllers.

* Change title.
2017-04-18 20:04:48 -07:00
Steve Perry e90ba44bb8 Move etcd topic from Storage to Cluster Admin. (#3450)
* Move etcd topic from Storage to Cluster Admin.

* Fix type.
2017-04-18 17:24:54 -07:00
Steve Perry 49926988bd Fix duplicate Storage heading. (#3447) 2017-04-18 15:04:07 -07:00
Andrew Chen 852f1fe4a9 Merge pull request #3445 from ryanmcginnis/patch-2
`--apiserver-advertise-address` typo
2017-04-18 13:31:10 -07:00
Ryan McGinnis a8646ace75 Update kubeadm.md
- Running `--api-advertise-address` returns unknown flag error
- `--apiserver-advertise-address` is the correct command, so this must have been a typo
2017-04-18 12:59:40 -07:00
Bryan Boreham 1879e0a6b5 Add Weave Net as an option for ARM installs 2017-04-18 10:21:39 -07:00
haoyuan 2a5148437c update the glusterfs provisioner in persistent-volumes.md 2017-04-18 10:19:04 -07:00
Ahmet Alp Balkan 626bdd1f3c kubefed tutorial: add creating the default ns (#3105)
Currently kubefed does not create the default namespace, therefore anyone
following this doc today will hit this issue. Adding a few comments to bridge
that gap until the bug is fixed.

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-04-17 15:23:41 -07:00
Balu Dontu 59c37ec48d vSphere Storage Policy Based Management for Containers orchestrated by vSphere 2017-04-17 14:48:58 -07:00
Steve Perry 90be2b2dd2 Move Guide topics: Namespaces. (#3437) 2017-04-17 12:56:24 -07:00
Oli Lalonde e1afcde13a Update scale-intro.html
Convert to new links
2017-04-17 09:26:01 -07:00
Xiaoyu Zhang fbfafc9738 Fix broken link:scheduling-gpus.md (#3423)
* Fix broken link:scheduling-gpus.md

Fix broken link:scheduling-gpus.md

* add link anchor

add link anchor
2017-04-17 09:17:39 -07:00
Xiaoyu Zhang b3aeab2f21 delete replicated info (#3425)
delete replicated info
2017-04-16 22:36:42 -07:00
Will Sean Don bb760d9ed2 Migrate federated deployment task to new template (#3432)
* Migrate to new task template

* Add prereq template for tasks and tutorials regarding federated clusters
2017-04-16 22:33:55 -07:00
Xiaoyu Zhang 10b4afe20f Fix broken link:determine-reason-pod-failure.md
Fix broken link:determine-reason-pod-failure.md
2017-04-16 22:24:39 -07:00
Xiaoyu Zhang 5a05c52a8e Fix broken link:pull-image-private-registry.md
Fix broken link:pull-image-private-registry.md
2017-04-16 22:24:01 -07:00
shashidharatd 8aa078ca16 Setting up CoreDNS as DNS provider for Cluster Federation 2017-04-16 22:16:46 -07:00
chenhuan12 fb394d60de fix the command output (#3405)
* fix the command output

fix kubectl get nodes output

* Update manual.md
2017-04-16 22:14:27 -07:00
Steve Perry 715f8f3382 Remove extraneous topic. (#3428) 2017-04-14 18:49:53 -07:00
Xiaoyu Zhang 586fd39d6d Fix broken link:assign-pod-node.md
Fix broken link:assign-pod-node.md
2017-04-14 16:17:53 -07:00
Xiaoyu Zhang 814392dcc9 Fix links:authenticate-across-clusters-kubeconfig.md
Fix links:authenticate-across-clusters-kubeconfig.md
2017-04-14 16:17:21 -07:00
Xiaoyu Zhang 9b1b027c97 Fix broken links:manage-deployment.md
Fix broken links:manage-deployment.md
2017-04-14 16:16:39 -07:00
Xiaoyu Zhang d26f6774d3 Fix broken link:node.md
Fix broken link:node.md
2017-04-14 16:15:10 -07:00
Xiaoyu Zhang d62c493bb0 Fix broken link:daemonset.md
Fix broken link:daemonset.md
2017-04-14 16:11:46 -07:00
Andrew Chen 15f724223e Cleanup, simplify /js/redirect.js (#3417) 2017-04-14 16:07:46 -07:00
Xiaoyu Zhang a8d0bacd4e Fix broken link:replicaset.md
Fix broken link:replicaset.md
2017-04-14 15:58:41 -07:00
Xiaoyu Zhang 4fb32e03a7 Fix broken link:walkthrough.md
Fix broken link:walkthrough.md
2017-04-14 15:58:08 -07:00
Xiaoyu Zhang cb042d45b2 Fix broken link:kubeadm.md
Fix broken link:kubeadm.md
2017-04-14 15:57:41 -07:00
Marcelo Costa 0bcf4488f0 Fixing typo 2017-04-14 15:55:09 -07:00
Xiaoyu Zhang b9069cb2fb Fix broken links:gce.md
Fix broken links:gce.md
2017-04-14 15:44:39 -07:00
houjun 24e92bf8a0 The URL of [node affinity] is wrong
[node affinity] should link to
/docs/concepts/configuration/assign-pod-node/.
2017-04-14 15:43:46 -07:00
Steve Perry 3e4c2bbbd9 Experiment: Redirect using only redirects.js. (#3413) 2017-04-14 14:02:17 -07:00
Steve Perry a1841510fb Update robots file. (#3410) 2017-04-14 12:03:26 -07:00
Steve Perry 1693e9552a Add "Disallow". (#3409) 2017-04-14 11:00:17 -07:00
Steve Perry d868bb9808 Deprecation phase 2: secrets, security-context ... (#3408) 2017-04-14 10:26:09 -07:00
Xiaoyu Zhang 43801eaa67 Fix broken links:scratch.md
Fix broken links:scratch.md
2017-04-14 10:10:03 -07:00
Andrew Chen 20413bf92b Merge pull request #3401 from zhangxiaoyu-zidif/patch-64
Fix broken link:aws.md
2017-04-14 10:08:11 -07:00
Xiaoyu Zhang 4c189a0340 Fix broken link:aws.md
Fix broken link:aws.md
2017-04-14 11:39:43 +08:00
Steve Perry b0e5322ebb Deprecation phase 2: daemons, deployments ... (#3396)
* Deprecation phase 2: daemons, deployments ...

* Remove files from TOC.

* Fix typos.
2017-04-13 17:21:45 -07:00
Steve Perry 7653d204cb Move Guide topic: kubeadm reference. (#3395) 2017-04-13 16:31:14 -07:00
Steve Perry ad5a6e911f Move Guide topics: Federation reference. (#3394) 2017-04-13 16:23:19 -07:00
Xiaoyu Zhang f649ae3142 Fix broken link:photon-controller.md (#3393)
* Fix broken link:photon-controller.md

Fix broken link:photon-controller.md

* Fix broken link:photon-controller.md

Fix broken link:photon-controller.md
2017-04-13 16:08:33 -07:00
ihutchin dee3def6c1 Moving etcd topic to Concepts. 2017-04-13 15:40:53 -07:00
Xiaoyu Zhang 956578f6df Fix broken link:web-ui-dashboard.md
Fix broken link:web-ui-dashboard.md
2017-04-13 15:36:41 -07:00
Xiaoyu Zhang 24856ca18b Fix broken link:secret.md
Fix broken link:secret.md
2017-04-13 15:35:53 -07:00
Xiaoyu Zhang e2a6db05d0 Fix broken links:deployment.md
Fix broken links:deployment.md
2017-04-13 15:35:37 -07:00
Janet Kuo f3bcd0fb28 Remove outdated verification files for webmasters tools 2017-04-13 15:34:58 -07:00
Steve Perry 5d2c37abd9 Move Guide topic: Upgrade etcd. (#3391) 2017-04-13 15:30:42 -07:00
Xiaoyu Zhang e7fba44d3d Fix broken link:service.md
Fix broken link:service.md
2017-04-13 15:10:03 -07:00
Andrew Seigner 07d05b7ceb fix spelling in hpa docs 2017-04-13 15:08:39 -07:00
Xiaoyu Zhang 25423c4811 Fix broken links:horizontal-pod-autoscale.md
Fix broken links:horizontal-pod-autoscale.md
2017-04-13 15:07:02 -07:00
Andrew Chen b8e1899244 Merge pull request #3386 from zhangxiaoyu-zidif/patch-54
Fix broken links:replicationcontroller.md
2017-04-13 15:04:19 -07:00
Xiaoyu Zhang d080966954 Fix broken links:replicationcontroller.md
Fix broken links:replicationcontroller.md
2017-04-14 06:00:44 +08:00
Steve Perry eff5ac2694 Move guide topics: Upgrade for 1.6. (#3383)
* Move guide topics: Upgrade for 1.6.

* Add missing word.
2017-04-13 13:48:07 -07:00
Steve Perry f0f34f3132 Move Guide topic: Reserve Compute Resources. (#3382) 2017-04-13 13:09:42 -07:00
Steve Perry bf2640e993 Move Guide topics: Resize cluster, DNS. (#3380) 2017-04-13 12:05:40 -07:00
Steve Perry 847853b913 Move Guide topic: Explorer. (#3378) 2017-04-13 11:46:15 -07:00
Steve Perry c505b2c744 Move Guide topic: dashboard. (#3377) 2017-04-13 11:35:50 -07:00
Steve Perry 8315ef689c Move Guide topic: Projected Volume. (#3376) 2017-04-13 11:01:04 -07:00
Ramkumar Devanathan 2e8633f1f4 Update list-all-running-container-images.md 2017-04-13 10:57:48 -07:00
Joseph Crail 2377ecf401 Remove extra word 2017-04-13 10:57:17 -07:00
Andrew Morgan 998786bbd8 Typo in tutorial text 2017-04-13 10:45:45 -07:00
bradtopol b6a5ed3676 Remove inconsistent use of addons (#3327)
This is the only place in all of the documentation where addon(s) is used
instead of addons. Even though with brackets it can be read as one or more
addons, it looks strange and inconsistent with the rest of the documentation.

Signed-off-by: Brad Topol <btopol@us.ibm.com>
2017-04-13 10:13:39 -07:00
Xiaoyu Zhang ae425a5b3d Fix broken link
Fix broken link
2017-04-13 10:12:43 -07:00
Xiaoyu Zhang 0dc25c1705 Fix broken links
Fix broken links
2017-04-13 10:12:17 -07:00
Peter Lee d4d64ea35e fix link 2017-04-13 10:05:30 -07:00
David Gageot cc122a4cd8 Fix outdated links on kubeadm.md (#3341)
Fixes #3318

Signed-off-by: David Gageot <david@gageot.net>
2017-04-13 10:04:49 -07:00
Xiaoyu Zhang 01fbe68dfc Fix broken links
Fix https://kubernetes.io/docs/tutorials/clusters/apparmor/
2017-04-13 10:03:53 -07:00
Xiaoyu Zhang a84779b05c Fix broken link:admission-controllers
Fix broken link:admission-controllers
2017-04-13 10:03:14 -07:00
Ahmet Alp Balkan 8892385bc2 Update /docs/samples to v1.6
Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-04-13 09:49:22 -07:00
Guangya Liu 79090cc7cd failure-domain is no longer used in command line arg. 2017-04-13 09:48:57 -07:00
Cao Shufeng 3486513f77 comment TODO in service account page 2017-04-13 09:47:49 -07:00
Steve Perry 8f98a5d17f Fix path. (#3364)
* Fix path.

* Remove duplicate.
2017-04-12 19:00:48 -07:00
Steve Perry d28bff7284 Move Support topics. (#3363)
* Move Support topics.

* Fix toc entry.
2017-04-12 18:42:34 -07:00
Steve Perry e4cacf8e8a Move FAQs. (#3362) 2017-04-12 17:44:28 -07:00
Ahmet Alp Balkan 46bcb5b559 tools: list minikube as a Native Tool
Fixes #2491.

Signed-off-by: Ahmet Alp Balkan <ahmetalpbalkan@gmail.com>
2017-04-12 17:01:00 -07:00
Peter Styk e5336f6dbf Added solution Madcore.Ai (#3336) 2017-04-12 17:00:12 -07:00
Xiaoyu Zhang c29a94d108 Fix broken link (#3343)
* Fix broken link

Fix broken link

* delete redundant tags

delete redundant tags
2017-04-12 16:48:14 -07:00
Eric Chiang e57a6cd5ae docs/admin: add docs on impersonation headers 2017-04-12 16:44:24 -07:00
Steve Perry 644b415bfe Remove file from TOC. (#3361) 2017-04-12 16:31:23 -07:00
Steve Perry 03088a909f Deprecation phase 2: debugging-pods-and-rep ... (#3337)
* Deprecation phase 2: debugging-pods-and-rep ...

* Fix title.
2017-04-12 16:13:38 -07:00
Xiaoyu Zhang 9e193bd5e9 Fix broken link (#3335)
Fix broken link
2017-04-12 16:07:00 -07:00
Steve Perry 1a169b4c0c Move Guide topic: Cron Jobs. (#3334) 2017-04-12 15:54:33 -07:00
Xiaoyu Zhang 501656585e Fix broken links (#3351)
Fix broken links
2017-04-12 15:46:21 -07:00
Xiaoyu Zhang 0f2d91e27d Fix broken link (#3347)
Fix broken link
2017-04-12 15:43:35 -07:00
Xiaoyu Zhang 10236a9c91 Fix broken link (#3346)
Fix broken link
2017-04-12 15:42:52 -07:00
Xiaoyu Zhang 965e095e52 Fix broken links (#3353)
Fix broken links
2017-04-12 15:42:04 -07:00
Xiaoyu Zhang da5308a10f Fix broken link (#3344)
Fix broken link
2017-04-12 15:41:32 -07:00
Xiaoyu Zhang b89cc11f12 Fix broken link (#3342)
Fix broken link
2017-04-12 15:35:37 -07:00
Xiaoyu Zhang b66ddb82f7 Fix broken link (#3359)
* Fix broken link

Fix broken link

* Update index.html
2017-04-12 15:32:29 -07:00
Andrew Chen 11ad654cf3 Minor grammar patch to PR #2989 2017-04-12 15:20:18 -07:00
Andrew Chen bbaa93bf8a Merge pull request #3356 from zhangxiaoyu-zidif/patch-69
Fix broken links
2017-04-12 15:08:41 -07:00
Xiaoyu Zhang 19d8e9372d Fix broken links
Fix broken links
2017-04-13 06:04:30 +08:00
divyenpatel 854ac8ac52 Adding minimal set of privileges required for vSphere Cloud Provider 2017-04-12 15:03:57 -07:00
Mike Danese 44f8466d09 tls: tell cluster admins how to enable the local signer 2017-04-12 14:35:51 -07:00
Guangya Liu 74d5af68ae Added hyperlink for [Interlude: built-in node labels]. 2017-04-12 14:23:31 -07:00
Craig Bilner 857c321f74 Update _base.sass 2017-04-12 14:22:16 -07:00
Wiiliam Chang 31d0bb1810 Add the windows support description. 2017-04-12 14:19:35 -07:00
nerdondon bb9e98cd43 Migrate guide to task template 2017-04-12 14:14:22 -07:00
nerdondon 889ea782c6 Update links to supporting yaml files and a link to imperative management
Fixes #3266
2017-04-12 14:07:23 -07:00
chenhuan12 e96d972bba fix typo
fix typo
2017-04-12 14:05:28 -07:00
chenhuan12 6978f1b21d fix typo
fix typo
2017-04-12 14:04:46 -07:00
Justin Johnson ac35e49d21 Minor grammar update 2017-04-12 13:59:21 -07:00
Brandon Philips d8bef3b1f0 docs: add CoreOS Tectonic to Azure getting started (#3307) 2017-04-12 13:58:31 -07:00
chenhuan12 8e8beebbf9 fix typo
fix typo
2017-04-12 13:55:39 -07:00
Guangya Liu 9996602345 Updated doc for critical pod.
Clarified that the rescheduler should be enabled by default as a
static pod for critical pod.
2017-04-12 13:50:47 -07:00
Suraj Narwade 72c08b089f Added kube-scheduler.md file
Fixes #3063
2017-04-12 13:47:13 -07:00
Gytis 324027450b Typo in storage docs
Fix typo in  storage docs storageClasName -> storageClassName
2017-04-11 16:40:05 -07:00
Xiaoyu Zhang 07f4aec19f Fix the 404 link
Fix the 404 link
2017-04-11 15:18:35 -07:00
chenhuan12 179498ae3e fix typo
fix command kubectl get pods -w -l app=nginx output
2017-04-11 15:08:42 -07:00
Steve Perry 2954d2b337 Move Guide topic: ConfigMap. (#3333) 2017-04-11 13:33:08 -07:00
Steve Perry 2e9ceea926 Move Guide topic: H Pod Autoscaling Walkthrough. (#3332)
* Move Guide topic: H Pod Autoscaling Walkthrough.

* Fix title
2017-04-11 13:06:51 -07:00
Steve Perry 8a0771131e Deprecation phase 2: kubefed. (#3331) 2017-04-11 11:44:55 -07:00
Steve Perry f666fda26e Deprecation phase 2: admin/index ... (#3330)
* Deprecation phase 2: admin/index ...

* Adjust TOCs.

* Add limitrange.
2017-04-11 11:21:58 -07:00
Steve Perry 91bb05c1a5 Deprecation phase 2: config-best-practices ... (#3328) 2017-04-11 10:42:43 -07:00
Steve Perry 5072b1cb91 Deprecation phase 2: container-environment ... (#3326) 2017-04-11 10:23:57 -07:00
Steve Perry b7b0443fac Deprecation phase 2: jobs (#3323)
* Deprecation phase 2: jobs

* Adjust reference TOC.
2017-04-11 10:08:35 -07:00
Steve Perry 6dba8d1696 Deprecation phase 2: managing-deployments ... (#3309) 2017-04-10 17:24:55 -07:00
Steve Perry 43639f166d Deprecation phase 2: kubectl binary_release ... (#3308)
* Deprecation phase 2: kubectl binary_release ...

* Adjust
2017-04-10 17:08:15 -07:00
Murad Korejo 19305b4043 Improvements to kubernetes-basics/expose-intro.html (#3103)
* Massive updates to expose-intro.html

Updates to the non-interactive tutorial on exposing apps via services

* more updates to expose-intro

* fixed broken link

* fixed some wording

* removed extra space

* sub backticks for code and newline

* added small legend to fist svg

* fixed svg scaling

* removed extra div
2017-04-10 16:40:52 -07:00
Vyacheslav Semushin 8aad74ec5b test/examples_test.go: validate docs/user-guide/pod-security-policy/psp.yaml (#3100) 2017-04-10 16:30:16 -07:00
xiangpengzhao f487ce2510 Move cron jobs to keep glossary in alphabetical order. 2017-04-10 15:40:33 -07:00
Ahmed Kamal 34154553ab Fix API server args
--runtime-config=batch/v2alpha1=true (=true) was missing causing API server to crash on 1.5.3
2017-04-10 15:37:43 -07:00
Andrew Chen 817fff899e Remove /redirects.rb (#3305)
Will restore when Prod uses Netlify
2017-04-10 15:12:09 -07:00
Steve Perry fe10be9677 Move Guide topic: kubelet Garbage Collection. (#3301) 2017-04-10 14:24:07 -07:00
Steve Perry a43d526860 Move Guide topic: Salt. (#3306) 2017-04-10 14:09:21 -07:00
Steve Perry 9b65c00368 Fix tilte. (#3304) 2017-04-10 13:55:34 -07:00
Andrew Chen 005fce03fe WIP: Cleanup /docs/contribute/ migration (#3278)
* WIP: Cleanup /docs/contribute/ migration

* #3278 Changing /docs/contribute to /docs/home/contribute (#3285)

* WIP: #3278 Adding redirects /docs/contribute/ /docs/home/contribute/

* WIP: #3278 modifying /docs/contribute/ paths within files to /docs/home/contribute/

* Revert "WIP: #3278 Adding redirects /docs/contribute/ /docs/home/contribute/"

This reverts commit a82efdee505d7a409cb3c86240cc0ee976a2e566.

* WIP: #3278 Adding redirects /docs/contribute/ /docs/home/contribute/

* WIP: #3278 Correcting syntax mistake in redirect.js

* WIP: #3278 Correcting another syntax mistake in redirect.js

* WIP: #3278 Removing deprecated files so redirects work

* Removing the #

* WIP: #3278 Updating pattern in redirect.js

* WIP: #3278 Removed the wrong # previously redirect.js
2017-04-10 13:24:14 -07:00
Steve Perry 299142058a Move Guide topic: HA Master. (#3303) 2017-04-10 13:19:56 -07:00
Steve Perry 34f5500cd9 Move Guide topic: Addons. (#3302) 2017-04-10 12:01:19 -07:00
Steve Perry a82a9d5dcc Update weave.md 2017-04-10 10:32:14 -07:00
Steve Perry 29ddf7140e Move Guide topics: NetworkPolicy. (#3298) 2017-04-10 10:26:28 -07:00
Steve Perry 92e5397113 Add topics to TOC. (#3283) 2017-04-08 10:45:41 -07:00
Andrew Chen b7fc1a9bfb Fix PR #3274 (#3276)
* Fix PR #3274

* remove unecessary template

* remove page title
2017-04-07 15:38:50 -07:00
Jared 60f744d4e3 Add clearer links to Kubernetes API migration pages 2017-04-07 14:03:50 -07:00
Vladimir Rutsky e3b8f3d718 fix link formatting 2017-04-07 14:02:44 -07:00
Steve Perry f02c10b679 Make a Setup section. (#3227) 2017-04-07 13:46:56 -07:00
Andrew Chen 0147c70ef6 Remove left nav from search page 2017-04-07 13:19:57 -07:00
Jared ae5e09027e Fixed link to page templates. 2017-04-07 13:02:28 -07:00
Andrew Chen 7285fcd1ac Corresponding changes to Reference landing page 2017-04-07 12:21:22 -07:00
Andrew Chen c3f063ca35 Fix Reference ToC links 2017-04-07 12:21:22 -07:00
Phillip Wittrock 7b1c8f8e91 Add warning about using kubectl replace 2017-04-06 15:05:38 -07:00
Andrew Chen 983f778c9b Merge pull request #3259 from ahmetb/nuke-swaggerui
Delete swagger-ui
2017-04-06 14:54:17 -07:00
Ahmet Alp Balkan 4bb4a9f1e2 Delete swagger-ui
Deleting swagger-ui and setting up a redirect to Reference section.

Closes #1924
Fixes #2220

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-04-06 14:34:37 -07:00
Andrew Chen 1fead33bd5 Merge pull request #3257 from kubernetes/chenopis-redirects-patch1
modify redirect.rb
2017-04-06 14:31:16 -07:00
Andrew Chen a4c53a98fe Fix redirect.rb 2017-04-06 14:19:27 -07:00
Ahmet Alp Balkan 9e20c67daf Remove kubectl installation instructions from release .tar.gz
Kubernetes release .tar.gz no longer provides binaries. So the existing
instructions are invalid (#2815).

User has to get the .tar.gz file and then run a script, only to download them
from storage.googleapis.com/kubernetes-release. That's already what's documented
in the "install via curl" section.

Therefore deleting "Extract kubectl from Release .tar.gz" section.

Signed-off-by: Ahmet Alp Balkan <ahmetalpbalkan@gmail.com>
2017-04-06 13:58:35 -07:00
Ahmet Alp Balkan c2b74acd1f hello-minikube: Simplify kubectl installation instructions for macOS
People are hitting issues copy-pasting the complicated way to install
`kubectl` and we're suggesting them to `sudo mv` binaries to /usr/local/bin.
That is not very ideal. Instead suggesting users to use Homebrew. I think it's
ok for this tutorial, as the tutorial already uses Homebrew to install
other stuff, plus it's a much better way than `sudo mv`ing.

Closes #2478.

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-04-06 13:57:18 -07:00
suresh ae6a948eb0 typo on option (#3233) 2017-04-06 13:54:49 -07:00
Ahmet Alp Balkan 97f38923e6 container-lifecycle-hooks: add link to the task (#3236)
Adding a link to the corresponding task as it is hard to discover.

Fixes #3094.

Signed-off-by: Ahmet Alp Balkan <ahmetalpbalkan@gmail.com>
2017-04-06 13:54:35 -07:00
Charlie R.C b7b9252666 change authorizationMode to authorizationModes 2017-04-06 13:42:53 -07:00
Cynerva e469ebe322 Update allow-privileged info for Ubuntu, add docker registry section (#3207)
* Update allow-privileged info for Ubuntu, add docker registry section

* Clean up wording in ubuntu/operational-considerations
2017-04-06 13:40:28 -07:00
houjun 34cd28dbf6 Node conditions should contain MemoryPressure and DiskPressure
Node conditions should also contain MemoryPressure and DiskPressure.
2017-04-06 13:37:27 -07:00
chenhuan12 2dd8f791df replace job.yaml.txt with job.yaml
replace job.yaml.txt with job.yaml
2017-04-06 13:36:03 -07:00
Michael Fraenkel ec622e1186 Document pod lifecycle when using EnvFrom
- Pods do not start with missing ConfigMaps or Secrets
- Pods do not start with missing keys in ConfigMaps or Secrets
- Pods start with invalid keys when referring to entire ConfigMaps or
Secrets.  An event documents the skipped keys from said resource.
2017-04-05 16:31:23 -07:00
Slava Semushin 8d8409baeb docs/concepts/policy/pod-security-policy: list all available PSP fields.
This also adds a couple of improvements:
- rename SELinuxContext to SELinux
- improve options displaying
2017-04-05 16:23:40 -07:00
Eric Chiang df099406ed docs/admin: clarify SecurityContextDeny and when it should be used 2017-04-05 16:23:08 -07:00
William Chang 216734a813 Fix the kubeadm getting-started-guides link. (#3201)
* Fix the kubeadm getting-started-guides link.

* Change the url, use the root of the site as the base.
2017-04-05 16:15:50 -07:00
chenhuan12 afc29d6cb4 fix typo
fix typo
2017-04-05 11:14:23 -07:00
Ahmet Alp Balkan be18111dba More meaningful links for the footer
This replaces the two buttons on the right of the footer.

It does not seem like get.k8s.io is useful to anyone. Replacing it with the
installation guide and avoiding K8s abbreviation in these buttons.

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
2017-04-05 11:12:34 -07:00
Cao Shufeng 6aed52c088 Update description about serviceaccount token controller
This change specifies how to enable token controller in
controller-manager.
2017-04-04 14:06:13 -07:00
Jordan Liggitt 4391c903ce automountServiceAccountToken documentation 2017-04-04 14:02:34 -07:00
mbohlool d42d3983fd Add python client to "Programmatic access to the API" section 2017-04-04 14:00:44 -07:00
Andrew Chen 3a3e4dc1f5 Address issue #3072 for apps (#3228)
* Address issue #3072 for apps

* Add Autoscaling, Batch, and Extensions
2017-04-04 13:43:47 -07:00
Casey Davenport ea34587002 Remove outdated Calico guide in favor of kubeadm 2017-04-04 09:51:35 -07:00
Lucas Käldström cf430cd261 Merge pull request #3223 from robholland/patch-1
Fix typo
2017-04-04 17:23:28 +03:00
Rob Holland f416b8a055 Fix typo 2017-04-04 09:29:16 +01:00
Steve Perry 84107352e4 Move Guide topic: Horizontal Pod Autoscalint. (#3218) 2017-04-03 18:54:13 -07:00
Steve Perry 152b6f2743 Move Guide topic: Pod Security Policies. (#3215) 2017-04-03 18:38:13 -07:00
Steve Perry ab1302a4dc Move Guide topic: Pod Preset. (#3213) 2017-04-03 17:40:48 -07:00
Andrew Chen d2ff41b6a5 Move GPU Support to Tasks (#3212)
* Move User Guides/GPU Support to Tasks/Managing GPUs/Scheduling GPUs

* fix typo in tasks.yml

* change discussion to steps
2017-04-03 17:09:43 -07:00
Vish Kannan 0d40264361 adding documentation for GPU support (#3018)
Signed-off-by: Vishnu kannan <vishnuk@google.com>
2017-04-03 15:28:41 -07:00
xiangpengzhao f4eec77809 Fix ScheduledJobs to CronJobs 2017-04-03 14:01:52 -07:00
Andrew Chen 0aa8981b48 Merge pull request #3210 from kubernetes/chenopis-3168-redirect
Limit resource-quota redirect
2017-04-03 13:47:07 -07:00
Andrew Chen 8529eec655 Limit resource-quota redirect 2017-04-03 13:40:29 -07:00
xiangpengzhao 0d7f9a63df Link Release Notes to CHANGELOG.md 2017-04-03 13:31:49 -07:00
Steve Perry 5fe546b09d Move Guide topic: ThirdPartyResources. (#3209)
* Move Guide topic: ThirdPartyResources.

* Fix link.
2017-04-03 13:22:52 -07:00
Gunjan Patel 521e7f076a Update calico docs link to the latest version (#3169) 2017-04-03 13:04:23 -07:00
Steve Perry 418771e0a5 Move Guide topic: Service Accounts. (#3208)
* Move Guide topic: Service Accounts.

* Remove TODOs.
2017-04-03 12:31:32 -07:00
Steve Perry d1bcac468a Move Guide topic: Services. (#3206) 2017-04-03 12:10:09 -07:00
nerdondon aa83d54abb Migrate to new task template 2017-04-03 12:01:59 -07:00
Steve Perry 7b95ad4ca0 Move Guide topic: Security Context. (#3205) 2017-04-03 11:47:25 -07:00
Xiaoyu Zhang f1f43e3f6a delete one redundant space (#3165)
delete one redundant space
2017-04-03 11:39:16 -07:00
Andrew Chen ecead4c43c Merge pull request #3163 from tgraf/add-cilium
Add cilium project
2017-04-03 11:38:38 -07:00
Andrew Chen 4262df1669 Merge branch 'master' into add-cilium 2017-04-03 11:36:06 -07:00
Justin Santa Barbara 19327529b1 AWS kube-up is removed in 1.6 2017-04-03 11:33:25 -07:00
chenhuan12 72be3e19d3 replace configfile.json with config.json
replace configfile.json with config.json
2017-04-03 11:28:57 -07:00
Steve Perry 122410bc34 Move Guide topic: Secrets. (#3204) 2017-04-03 11:02:45 -07:00
Peter Lee 67f0173d50 Update link
Update the link to where the origin link finally pointed to.
2017-04-03 10:48:22 -07:00
Steve Perry a243c28888 Move Guide topic: Replication Controller. (#3203)
* Move Guide topic: Replication Controller.

* Add included file.
2017-04-03 10:23:03 -07:00
Andrew Chen 6ed0c34d2a Remove swagger-ui link, fix page.version variable (#3185)
* Remove swagger-ui link, fix page.version variable

* remove swagger-ui redirect

* use 2 decimal version for cluster-large.md

* fix swagger-ui message

* replace URL w/ final destination

* address feedback

* add link to swagger.json at https://github.com/kubernetes/kubernetes/blob/master/api/openapi-spec/swagger.json

* remove redundant sentence
2017-04-03 01:13:10 -07:00
Steve Perry 9b5e8bac46 Pods (#3191)
* Move Guide topic: Pods.

* Fix link.

* Fix TOC entry.
2017-03-31 16:31:05 -07:00
Andrew Chen df63f964ee fix robots.txt 2017-03-31 16:23:30 -07:00
Steve Perry ccadfc2ca8 Move Guide topic: Pods. (#3190)
* Move Guide topic: Pods.

* Fix link.
2017-03-31 16:21:13 -07:00
Steve Perry d7ed85504e Move Guide topic: Pet Set. (#3188)
* Move Guide topic: Pet Set.

* Add included file.
2017-03-31 16:00:55 -07:00
Steve Perry edd0645def Move Guide topic: Nodes. (#3187) 2017-03-31 15:28:57 -07:00
Steve Perry 504327c0a1 Move Guide topic: Network Policies. (#3184) 2017-03-31 14:06:32 -07:00
Steve Perry 3c23d75133 Move Guide topics: Names, Namespaces. (#3183) 2017-03-31 13:50:16 -07:00
Steve Perry dc75a8f071 Move Guide topic: Ingress. (#3181) 2017-03-31 13:25:41 -07:00
Steve Perry de895fbf5a Move Guide topic Replica Sets. (#3180) 2017-03-31 13:10:28 -07:00
steveperry-53 2edbeae5c9 Remove link to evolving TOC document. 2017-03-31 13:07:29 -07:00
Steve Perry e35313c657 Move Guide topic: Deployments (#3179)
* Move Guide topic: Deployments

* Move included file.
2017-03-31 12:13:47 -07:00
Steve Perry eb657dfd9e Move Guide topic: Daemon Sets. (#3178)
* Move Guide topic: Daemon Sets.

* Fix include path.
2017-03-31 10:56:27 -07:00
Andrew Chen 65b6d0b682 WIP: Add redirect for V1 paths (#3160)
* Add redirect for V1 paths

* fix api-reference and kubectl redirects

* fix bugs

* fix regex

* fix redirect URL

* more debug

* global match

* fix regexp

* remove debug

* generalize

* address @foxish feedback
2017-03-31 10:48:37 -07:00
Steve Perry 6a2366314e Move Guide topic: Annotations. (#3177) 2017-03-31 10:33:26 -07:00
Steve Perry 151a19cbc7 Move Guide topic: Persistent Volumes. (#3176) 2017-03-31 10:10:44 -07:00
Steve Perry abc795d19d Move Guide topic: Cluster Managemet. (#3164) 2017-03-30 18:16:57 -07:00
Steve Perry 73eebdd337 Fix Home left nav. (#3162)
* Fix Home left nav.

* Experiment

* Experiment
2017-03-30 17:19:19 -07:00
Thomas Graf dd20e14431 Add cilium project 2017-03-31 01:52:59 +02:00
Andrew Chen da871d8f56 Merge pull request #3158 from kubernetes/chenopis-1.6-patch6
Fix api-reference/v1/definitions links
2017-03-30 15:07:55 -07:00
Andrew Chen 8a6fedf1c8 fix api-reference/v1/definitions links 2017-03-30 14:23:42 -07:00
Steve Perry c5e9309a43 Put home page in left nav. (#3157)
* Put home page in left nav.

* Experiment

* Update nav.

* Remove 2 topics from TOC check.
2017-03-30 14:21:26 -07:00
Steve Perry 53d1bbda70 Update stage-documentation-changes.md
Increment Docker version.
2017-03-30 13:25:51 -07:00
Phillip Wittrock bb2304636c Merge pull request #3154 from yogendra/patch-1
Fixed example for "Accession the Service"
2017-03-30 10:00:03 -07:00
jianglingxia c663e0077f amend the url of debug pods
/docs/tasks/debug-application-cluster/debug-pod-replication-controller/#debugging-pods
2017-03-30 09:46:53 -07:00
George Crawford ac47af4a64 Update stale Host folder sharing docs
Updated to match https://github.com/kubernetes/minikube/blob/master/README.md.

I can't see why this file even exists - it will get out of date frequently. Why not just link to the minikube project?
2017-03-30 09:44:37 -07:00
jianglingxia 86f4427e3a change the link
the url of releases
2017-03-30 09:42:08 -07:00
jianglingxia 019bc68027 delete the redundancy /
resourcequota
2017-03-30 09:41:16 -07:00
Xiaoyu Zhang dfda372c06 update and fix links
update and fix links
2017-03-30 09:39:27 -07:00
chenhuan12 b7f4a612a4 fix typo
fix command kubectl get deployment,svc,pods output
2017-03-30 09:38:21 -07:00
yupengzte 054d08df96 Delete useless spaces
Signed-off-by: yupengzte <yu.peng36@zte.com.cn>
2017-03-30 09:38:03 -07:00
yupengzte 914e779c97 Fix typo
Signed-off-by: yupengzte <yu.peng36@zte.com.cn>
2017-03-30 09:37:14 -07:00
chenhuan12 5d3a78371c fix typo
fix command kubectl describe secret test-secret output
2017-03-30 09:36:46 -07:00
Xiaoyu Zhang a8465ce1f0 Update links from v1.5 to v1.6
Update links from v1.5 to v1.6
2017-03-30 09:36:11 -07:00
Xiaoyu Zhang 5923a56b88 update links v1.5 to v1.6
update links v1.5 to v1.6
2017-03-30 09:35:37 -07:00
chenhuan12 6b02e280d8 fix typo
1、fix command kubectl get crontab output
2、fix command kubectl get crontab -o json output
2017-03-30 09:34:51 -07:00
chenhuan12 a19701dea4 fix typo
fix typo
2017-03-30 09:34:18 -07:00
yupengzte f9fa1464fa The first letter should be capital letter
Signed-off-by: yupengzte <yu.peng36@zte.com.cn>
2017-03-30 09:29:45 -07:00
Xiaoyu Zhang 7074634eb5 Update links from v1.5 to v1.6
Update links from v1.5 to v1.6
2017-03-30 09:28:53 -07:00
Xiaoyu Zhang 9b2da54adc Update links from v1.5 to v1.6
Update links from v1.5 to v1.6
2017-03-30 09:28:10 -07:00
Xiaoyu Zhang 0c39b496e0 Update links from v1.5 to v1.6
Update links from v1.5 to v1.6
2017-03-30 09:27:35 -07:00
Xiaoyu Zhang 3594176853 update links from v1.5 to v1.6
update links from v1.5 to v1.6
2017-03-30 09:26:55 -07:00
chenhuan12 5ffc79499c fix typo
fix typo
2017-03-30 09:25:09 -07:00
Peter Lee 7c01af28cd fix typo 2017-03-30 09:24:24 -07:00
Xiaoyu Zhang 0937a5ff2a update links from v1.5 to v1.6
update links from v1.5 to v1.6
2017-03-30 09:22:37 -07:00
Yogendra Rampuria - Yogi 8791babf36 Fixed example for "Accession the Service"
Example stated that a "frontend receives traffic from backend". It should be "frontend sends traffic to backend"
2017-03-30 23:35:34 +08:00
Steve Perry cfd011166d Move topics to deprecation phase 2. (#3123) 2017-03-29 17:21:24 -07:00
Andrew Chen a9c4b410e2 Remove superfluous headers in kubectl page (#3121) 2017-03-29 16:40:08 -07:00
Andrew Chen 0ada08bdbc Merge pull request #3120 from kubernetes/chenopis-1.6-patch4
Remove redundant User Guide header in ToC
2017-03-29 16:29:52 -07:00
Andrew Chen 3635bb567b Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into chenopis-1.6-patch4
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Moving topics to deprecation phase 2. (#3119)
2017-03-29 16:25:11 -07:00
Andrew Chen 2e6fba7bab Remove redundant User Guide header in ToC 2017-03-29 16:23:28 -07:00
Steve Perry bc013101fb Moving topics to deprecation phase 2. (#3119) 2017-03-29 16:04:05 -07:00
Andrew Chen 827aa035e7 Merge pull request #3118 from kubernetes/chenopis-1.6-patch3
Fix Docs Home, remove redundancy
2017-03-29 15:53:16 -07:00
Andrew Chen 4c811e3647 Fix Docs Home, remove redundancy 2017-03-29 15:45:07 -07:00
Steve Perry 346e6466c5 Change What is Kubernetes to deprecation phase 2. (#3117) 2017-03-29 15:31:55 -07:00
Xiaoyu Zhang 3fe59136e1 Fix invalid links
PersistentVolumeSpec is not independent and belongs to persistentvolumeclaim. So I use "/docs/api-reference/v1.6/#persistentvolumeclaim-v1-core".
2017-03-29 15:19:48 -07:00
Xiaoyu Zhang b7e1cd4e19 Fix invalid links
Fix invalid links
2017-03-29 15:19:17 -07:00
Xiaoyu Zhang 242178bdee Fix typo
Fix typo
2017-03-29 15:18:48 -07:00
Xiaoyu Zhang 7168b1529b Fix the link
Fix the link
2017-03-29 15:18:24 -07:00
Xiaoyu Zhang 01fd3e3fcd Fix invalid link
Fix invalid link
2017-03-29 15:18:01 -07:00
Xiaoyu Zhang 5e9904a90b Fix invalid link
Fix invalid link
2017-03-29 15:15:13 -07:00
Xiaoyu Zhang 76f9bc181f Fix invalid url
Fix invalid url. The original link does not exist.
2017-03-29 15:14:40 -07:00
Xiaoyu Zhang ce3fc44034 Fix invalid link
Fix invalid link
2017-03-29 15:14:19 -07:00
Xiaoyu Zhang 58f231277a Fix invalid links
Fix invalid links
2017-03-29 15:13:59 -07:00
Steve Perry c57fad453f Move Support topics. (#3108)
* Move Support topics.

* Update stage-documentation-changes.md

* Update stage-documentation-changes.md
2017-03-29 15:11:59 -07:00
Slava Semushin 0e8f7ded2d Add PodSecurityPolicy admission controller. 2017-03-29 13:39:42 -07:00
Andrew Chen 05f949d7a2 Change version variable to v1.6 (#3060)
* Change version variable to v1.6

* change to v1.6.0 to match branch tagging in kubernetes/kubernetes (https://github.com/kubernetes/kubernetes/tree/v1.6.0/docs/)
2017-03-29 13:18:53 -07:00
Bruno Vernay d41c5973f2 Wrong URL for kubelet-tls-bootstrapping
The URL is https://kubernetes.io/docs/admin/kubelet-tls-bootstrapping/
2017-03-29 13:05:39 -07:00
Francois-Guillaume Ribreau 2b96cb3fd0 Fix link 2017-03-29 13:04:29 -07:00
Aditya Dani fc1c1645c7 Add PortworxVolume on the Volume Concepts Page under docs/concepts/storage/volumes.md. 2017-03-29 12:47:02 -07:00
Steve Perry 875216a5c4 Move topics to deprecation phase 2. (#3099) 2017-03-29 10:46:46 -07:00
chenhuan12 dc6df6b28b fix typo
fix typo
2017-03-29 10:38:08 -07:00
chenhuan12 a366bfb7a0 fix typo
fix typo
2017-03-29 10:37:03 -07:00
chenhuan12 10a37d1bb8 fix typo
fix typo
2017-03-29 10:36:39 -07:00
Xiaoyu Zhang 31b62a24a4 Fix the links
Fix the links
2017-03-29 10:35:45 -07:00
Xiaoyu Zhang e2fa7ae2db Fix the links
Fix the links
2017-03-29 10:34:59 -07:00
Xiaoyu Zhang 5d60b4e955 Fix the links
Fix the links
2017-03-29 10:34:38 -07:00
Xiaoyu Zhang 8f8c4adb05 update links
update links
2017-03-29 10:34:19 -07:00
Xiaoyu Zhang 7bff3503ea update links
update links
2017-03-29 10:33:56 -07:00
Xiaoyu Zhang 9fdc419652 update links
update links
2017-03-29 10:33:33 -07:00
Xiaoyu Zhang 1dba0ecf99 update and fix urls
update and fix urls
2017-03-29 10:33:07 -07:00
Xiaoyu Zhang c4e66aa268 Fix invalid links
Fix invalid links
2017-03-29 10:32:40 -07:00
Xiaoyu Zhang 0586165262 Fix invalid link
Fix invalid link
2017-03-29 10:32:17 -07:00
Xiaoyu Zhang a3865cd39b Fix invalid link
Fix invalid link
2017-03-29 10:31:53 -07:00
Xiaoyu Zhang c2538ec074 Fix invalid link
Fix invalid link
2017-03-29 10:31:05 -07:00
Xiaoyu Zhang a3f970965f Fix invalid url
Fix invalid url
2017-03-29 10:30:43 -07:00
Xiaoyu Zhang d6a62be07f update link to v1.6
update link to v1.6
2017-03-29 10:30:22 -07:00
Xiaoyu Zhang ab8161a790 Fix url of kubectl cmd (#3069) 2017-03-29 10:29:56 -07:00
Xiaoyu Zhang b8734c877b Fix urls of kubectl cmd (#3068) 2017-03-29 10:29:32 -07:00
Xiaoyu Zhang a1dcd6f4e8 Fix url of kubectl cmd (#3066)
Fix url of kubectl cmd
2017-03-29 10:28:52 -07:00
Xiaoyu Zhang 69cd465278 update kubectl commands (#3064)
The original links are all invalid. I change them all to v1.6 commands.
Hope it it helpful. :)
2017-03-29 10:24:44 -07:00
Xiaoyu Zhang 59ea361df2 Fix the url (#3051)
* Fix the url 

It is as same as PR3050

* update to v1.6

update to v1.6

* update to v1.6
2017-03-29 10:15:03 -07:00
Xiaoyu Zhang 67420be850 Fix the URL (#3057)
* Fix the pr

As same as PR3050

* update to v1.6

update to v1.6

* update to v1.6

update to v1.6
2017-03-29 10:14:25 -07:00
Xiaoyu Zhang fdc6a5afd6 Fix the urls (#3052)
* Fix the urls

Fix the urls

* update to v1.6

update to v1.6

* update to v1.6
2017-03-29 10:12:16 -07:00
Xiaoyu Zhang 0fac6c3466 Fix the url (#3050)
* Fix the url

The original url does not exit. I want to replace it with v1.5.

* update to v1.6

update to v1.6

* update to v1.6
2017-03-29 10:11:03 -07:00
Pavel Shevchuk eb23f17ca7 Fixed typos in services-firewalls.md (#2760)
* Fixed typos in services-firewalls.md

Fixed two typos: blancer -> balancer

* Fixed typo blancer -> balancer in configure-cloud-provider-firewall.md
2017-03-29 10:04:51 -07:00
Charlie R.C 88a7b4bdbf update authorizationMode 2017-03-29 10:02:21 -07:00
Steve Perry dfd2fed09c Move Guide topic: Master-Node Communication. (#3098) 2017-03-29 09:20:12 -07:00
Steve Perry 750f9323c5 Fix include paths. (#3096) 2017-03-29 08:57:54 -07:00
Dr. Stefan Schimanski daded6b51a Merge pull request #3067 from zhangxiaoyu-zidif/patch-39
Fix urls of kubectl cmd
2017-03-29 11:38:23 +02:00
Xiaoyu Zhang 3015493bca Merge branch 'master' into patch-39 2017-03-29 16:25:00 +08:00
Lucas Käldström 85f7c52979 Merge pull request #3074 from srueg/patch-1
Fix typo
2017-03-29 10:16:50 +02:00
Simon Rüegg 25ade87f9f Fix typo 2017-03-29 09:06:31 +02:00
Xiaoyu Zhang 801bb14040 Merge branch 'master' into patch-39 2017-03-29 14:29:31 +08:00
Steve Perry 5dc5694243 Move Guide topic: Multiple Schedulers. (#3073)
* Move Guide topic: Multiple Schedulers.

* Fix include paths.
2017-03-28 22:07:26 -07:00
Steve Perry b974f72bd3 Move Guide topic: Assigning Pods to Nodes. (#3071) 2017-03-28 20:59:32 -07:00
Xiaoyu Zhang 693bd1e2cb Fix urls of kubectl cmd
Fix urls of kubectl cmd
2017-03-29 10:58:07 +08:00
Steve Perry b60e2fe334 More (#2966) 2017-03-28 19:49:43 -07:00
Andrew Chen 9286e03cc5 Merge pull request #3061 from kubernetes/chenopis-1.6-patch3
Fix rewrite of /index.md to /
2017-03-28 16:13:48 -07:00
Andrew Chen 9c090f0709 Fix rewrite of /index.md to / 2017-03-28 16:05:48 -07:00
Xiaoyu Zhang 280977ecf9 Fix error link 2017-03-28 15:10:57 -07:00
Andrew Chen 64d07aef9c Merge pull request #3058 from zhangxiaoyu-zidif/patch-35
Fix a typo
2017-03-28 15:10:10 -07:00
Xiaoyu Zhang 879507f72c Fix a typo
add a slash
2017-03-29 05:59:10 +08:00
Xiaoyu Zhang e37768c7b6 update urls (#3056)
* update urls

relative path may be fine :)

* change them to new ones

change them to new ones
2017-03-28 14:48:12 -07:00
Xiaoyu Zhang eef81f78b3 update the url
This link may be much better.
2017-03-28 14:34:02 -07:00
Kenneth Owens 9b686b38b3 Updates ZooKeeper example to use the Anti-Affinity field instead of annotation (#3013)
* Updates ZooKeeper example to use the Anti-Affinity field instead of the
1.5 annotation.

* Changed podAntiAffinity field references to lower case
Changed references to PodAntiAffinity object/concept to plain text
Changed link to PodAntiAffinity to reference subsection
2017-03-28 14:29:34 -07:00
Xiaoyu Zhang d7f3507d34 Fix a typo (#2991)
* Fix a typo

According to the context. The word should be "underspecified" meaning "insufficient".

* Fix the pr

Fix the pr
2017-03-28 13:38:22 -07:00
Andrew Chen d1b8de9051 Merge pull request #3054 from zhangxiaoyu-zidif/patch-29
Fix the urls
2017-03-28 13:35:09 -07:00
Xiaoyu Zhang f7494aff36 Fix the urls
Fix the urls
2017-03-29 04:26:00 +08:00
Elijah C. Voigt c942340410 user-guide/services: json -> yaml examples 2017-03-28 12:53:39 -07:00
devin-donnelly 1363e5b8a0 Merge pull request #3048 from kubernetes/release-1.6
Merge Release 1.6 into Master, publishing documentation for 1.6 release
2017-03-28 12:07:25 -07:00
Andrew Chen 70d3939004 Rename accessing-the-api.md title (#3049)
* Rename accessing-the-api.md title

* remove unneeded Overview header
2017-03-28 12:02:16 -07:00
Andrew Chen 1c902d0fde Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io: (21 commits)
  revert issue URL, turn into link
  docs/admin/authorization: remove duplicated phrase (#3045)
  update urls
  Fix a typo and update one url
  update urls
  update a url
  update urls
  update invalid links
  update some urls
  modify the url of RestartPolicy (#3034)
  Fix the url
  amend the url
  amend the readiness probes (#3031)
  modify the link url (#3030)
  change the url (#3029)
  Fix the typo.
  Fix the link url
  delete redundant example
  fix typo
  change a link's url
  ...

# Conflicts:
#	docs/admin/authorization/index.md
2017-03-28 11:33:09 -07:00
Andrew Chen def2f7050b Merge pull request #2984 from soltysh/deployment_new_generator
Add new generator for deployments
2017-03-28 09:46:25 -07:00
Maciej Szulik db9638a68f Add new generator for deployments 2017-03-28 09:34:49 +02:00
Andrew Chen 043c32ec86 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  add some links
  Fix the link
  Update staging container
2017-03-27 22:37:22 -07:00
Andrew Chen 906bfad18f Merge pull request #2807 from jessfraz/pod-preset
Add pod preset docs
2017-03-27 22:27:16 -07:00
Jess Frazelle e87b393ba3 Add pod preset docs
Signed-off-by: Jess Frazelle <acidburn@google.com>
2017-03-27 20:10:10 -07:00
Andrew Chen 403c2c1510 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  s/Wildard/Wildcard/
  rephrase the sentence
  Fix the number of processes on Kubernetes master (#2985)
  Pod Security Policy doc improvements (#3010)
  docs/admin: document OpenID Connect plugin "extra-scopes" field

# Conflicts:
#	docs/admin/kubelet.md
#	docs/user-guide/pod-security-policy/index.md
2017-03-27 16:12:50 -07:00
Andrew Chen aa100411c3 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  fix the command output
  delete invalid link
  Revert "fix the command output"
  fix the command output
  Delete the useless spaces
  Dollar signs used before commands without showing output
  bare-url-used
  Fix typo in authorization docs
  Update networking.md
2017-03-27 09:31:30 -07:00
Mik Vyatskov 2241045c91 Add guide for deploying Stackdriver Logging (#2922)
* Add guide for deploying Stackdriver Logging

* Applied review comments

* Address review comments
2017-03-27 08:44:55 -07:00
Andrew Chen 703370f928 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Fix the output of "describe"
2017-03-27 08:42:50 -07:00
devin-donnelly 1e817bb0d6 Merge pull request #2845 from vladimirvivien/scaleio-k8s-doc-volumes
PR for adding ScaleIO PV documentation in volumes.md
2017-03-26 18:34:44 -07:00
devin-donnelly 647b3df3df Merge pull request #2886 from caesarxuchao/gc-update-1.6
Update garbage collection doc for foreground garbage collection
2017-03-26 18:33:25 -07:00
devin-donnelly 9939c7c953 Update garbage-collection.md 2017-03-26 18:25:03 -07:00
Vladimir Vivien c98bfdf085 ScaleIO storage documentation in docs/concepts/storage 2017-03-25 07:49:53 -04:00
Andrew Chen 4aee1cf24c Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Update deploy-intro.html (#2968)
2017-03-24 18:09:50 -07:00
Andrew Chen 33666c25a2 Merge branch 'release-1.6' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'release-1.6' of https://github.com/kubernetes/kubernetes.github.io:
  Fix ref docs links in 1.6
2017-03-24 18:09:38 -07:00
Andrew Chen d4349f10cb Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  change the link icon
  fix command kubectl get serviceAccounts output
  Flannel is not longer the only network addon that supports ARM

# Conflicts:
#	docs/getting-started-guides/kubeadm.md
2017-03-24 18:09:32 -07:00
Phillip Wittrock 48bdde3efa Merge pull request #2976 from pwittrock/release-1.6
Fix reference docs links to include the group in the link
2017-03-24 18:06:29 -07:00
Phillip Wittrock 5944da3d73 Fix ref docs links in 1.6 2017-03-24 17:16:36 -07:00
Matt Liggett 2b9b0029d9 Add a doc to about upgrading etcd. (#2767) 2017-03-24 15:08:33 -07:00
Maciej Szulik c4dca21649 New deployments endpoint (#2986)
* Update deployments for 1.6

* Update all deployments in docs to use the new endpoint
2017-03-24 11:03:01 -07:00
Andrew Chen ddc206709f Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  fix the pr
  Fix a typo
2017-03-23 22:32:47 -07:00
Andrew Chen 4568e52bd1 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Update some description about secrets
  [Federation] Add a note about DNS API scopes to the Federation tutorial (#2943)
  Delete the useless spaces in html files
  Fix typo
  update resource-usage-monitoring.md
2017-03-23 15:23:47 -07:00
Andrew Chen 2410c9e8da Merge pull request #2939 from mikedanese/csr
add inital documentation for the certificates API
2017-03-23 12:06:36 -07:00
Mike Danese 31df6ab5cb add inital documentation for the certificates API 2017-03-23 09:02:43 -07:00
Andrew Chen 996723bc8f Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Replace the tab with 4 spaces in md files (#2797)
  fix link error
  Replace the tab with 4 spaces in html files
  hitting the `ClusterIP` from a pod (#2826)

# Conflicts:
#	docs/admin/accessing-the-api.md
#	docs/api-reference/extensions/v1beta1/definitions.html
#	docs/getting-started-guides/kubeadm.md
#	docs/user-guide/kubectl/index.md
2017-03-23 00:19:33 -07:00
Andrew Chen ce8507c515 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  update index.md
  Add PR template to encourage clicking Allow Edits
2017-03-22 15:06:02 -07:00
Andrew Chen cca5c7b358 Merge pull request #2750 from liggitt/passwordfile
Clarify password file group support
2017-03-22 13:44:05 -07:00
Andrew Chen ac962dc12c Merge pull request #2902 from shiywang/patch-3
update resources name
2017-03-22 13:41:37 -07:00
Andrew Chen 27d6822bb6 Merge branches 'release-1.6' and 'release-1.6' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'release-1.6' of https://github.com/kubernetes/kubernetes.github.io:
  Update daemons.md

* 'release-1.6' of https://github.com/kubernetes/kubernetes.github.io:
  Update daemons.md
2017-03-22 13:39:50 -07:00
Andrew Chen 31221c3a76 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  rephrase the expression of configmap/index.md
  Do not link to org/team links on GitHub
  Fixed typos (#2721)
  Revert "update init-containers.md"
  Fix doc sentence
  Add Minikube reference in the Kubectl configuration doc
  Mention Minikube in the Kubectl configuration doc

# Conflicts:
#	docs/tasks/index.md
2017-03-22 13:39:24 -07:00
devin-donnelly 50dc7445d9 Merge pull request #2964 from kubernetes/devin-donnelly-patch-3
Update daemons.md to remove reference to future support for DaemonSet updates
2017-03-22 13:39:08 -07:00
devin-donnelly 52be0a881c Update daemons.md 2017-03-22 13:34:18 -07:00
devin-donnelly 1494504741 Update garbage-collection.md 2017-03-22 13:28:37 -07:00
Andrew Chen 431ed22c3d Merge pull request #2751 from liggitt/proxy-subresource
Switch to proxy subresource
2017-03-22 13:19:54 -07:00
devin-donnelly d847965635 Merge pull request #2940 from liggitt/rbac
Outline service account RBAC approaches
2017-03-22 13:08:04 -07:00
Jordan Liggitt 5ff30086e4 Switch to proxy subresource 2017-03-22 16:00:30 -04:00
Jordan Liggitt acd153e60c Clarify password file group support 2017-03-22 15:56:10 -04:00
Jordan Liggitt 6334adc211 Outline service account RBAC approaches 2017-03-22 15:50:40 -04:00
devin-donnelly d8100c6c30 Merge pull request #2929 from csbell/fed-ingress
Remove fed ingress known issue for 1.6.
2017-03-22 12:36:24 -07:00
Mengqi Yu 8da77b2cfc Update imported docs (#2947)
* bump to 1.6 and preserve new ref docs and delete old ref docs

* run update-imported-docs.sh and keep title
2017-03-22 10:10:36 -07:00
lvjiangzhao fa381d82a0 add flag --enable-taint-manager to kube-controller-manager.md from source
code
2017-03-22 09:52:21 -07:00
Andrew Chen 4800b4f881 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Fix link to Upgrade 1.6
  livenessProbe -> periodSeconds (#2832)
2017-03-21 19:54:15 -07:00
Andrew Chen 4eba51d6f2 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Fix incorrect sentence (#2876)
  fixing typo
  fix typo
  Update kubeadm.md

# Conflicts:
#	docs/getting-started-guides/kubeadm.md
2017-03-21 19:30:14 -07:00
Andrew Chen 7215af010f Merge branches 'release-1.6' and 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'release-1.6' of https://github.com/kubernetes/kubernetes.github.io:

* 'master' of https://github.com/kubernetes/kubernetes.github.io: (23 commits)
  Apply changes from PR #2787
  rephrase the sentence to make expression clear (#2789)
  update index.md (#2788)
  Apply changes from PR #2784 (#2950)
  The link URL of  [kube-controller-manager] is wrong
  Added pod name in run command
  Fix grammar in docs/admin/daemon.md
  update index.md (#2755)
  Update garbage-collection.md (#2732)
  Fix typo (#2842)
  Fix typo
  Fix the typos
  Apply typo fixes from #2791 (#2949)
  Fix typo in kubectl_completion.md
  fix typeo (#2856)
  Use kubectl config current-context to simplify the instructions
  fix a typo in /docs/user-guide/configmap/index.md
  Fix monitor-node-health.md
  amend monitor-node-health.md
  Update manage-compute-resources-container.md
  ...

# Conflicts:
#	docs/tools/index.md
2017-03-21 19:04:37 -07:00
Andrew Chen 4541c229ca Merge pull request #2771 from liggitt/non-standard-verbs
Document non-standard verbs
2017-03-21 18:37:11 -07:00
Dominika Hodovska 1148f85e8c Move init containers to stable in v1.6 (#1939)
* Delete the parameter "--google-json-key string"

Delete the parameter "--google-json-key string"

* Fix apimachinery vendored dependencies in examples_test.

* package apt-transport-https should be installed

Ubuntu default install not include apt-transport-https. so if you want to download package from https repo, you need install apt-transport-https package first

* doc-walkthrough-content

modify

* limitrange-update

I think it's redundant that the second to ,in order to do sth and do
sth!thanks!

* fix command kubectl get svc,pod output

fix command kubectl get svc,pod output

* Fix typo: federation-controller-mananger => federation-controller-manager

* Fix typo: federation-controller-mananger => federation-controller-manager

* Clarify minimum version of kubernetes supporting PSP authz

* Provide correct location for KUBE_ETCD_SERVERS

Provide correct location for KUBE_ETCD_SERVERS configuration key. It was
previously listed as being in /etc/kubernetes/config but is actually in
/etc/kubernetes/apiserver.

Related: https://github.com/kubernetes/kubernetes.github.io/issues/1600

* Move Compute Resources topic to Concepts. (#2410)

* Delete the parameter "--google-json-key string"

“# kube-scheduler -help”can not find --google-json-key option

# kubectl version
Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.1+82450d0", GitCommit:"f5ef9802914a47c848fd84c287333f8b4d28bbc1", GitTreeState:"dirty", BuildDate:"2017-01-23T00:04:39Z", GoVersion:"go1.7", Compiler:"gc", Platform:"linux/amd64", USEEVersion:"V1.02.01_alpha", USEEPublishDate:"2017-1-10 00:00:00"}
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.1+82450d0", GitCommit:"f5ef9802914a47c848fd84c287333f8b4d28bbc1", GitTreeState:"dirty", BuildDate:"2017-01-22T23:56:57Z", GoVersion:"go1.7", Compiler:"gc", Platform:"linux/amd64", USEEVersion:"V1.02.01_alpha", USEEPublishDate:"2017-1-10 00:00:00"}

* Add diagnose tips when you face problem.

* Update grammar for kubeadm.md, thanks @chenopis

* Merge two pieces to one words

* add http proxy infomation in kubeadm

* Update landing pages for Tasks and Tutorials. (#2634)

* Update static-pods.md

It works. Please review it again.

* Move Guide Topic: Multi-container pods. (#2642)

* fix link to go to pod-lifecycle page

* fix the command output

fix the command output

* mirantis_logo.png

,/images/community_logos/mirantis_logo.png updated per Mirantis request

* kubeadm reference -- /

set up/manage mean set up or manage ? it's better use or?

* Prototype for deprecating User Guide topic.

* missing word

The return of the OCD.

* Move Guide topic: Using Environment Variables. (#2645)

* fix typo (#2656)

fix typo

* Move Guide topic: Using Port Forwarding. (#2661)

* Move Guide topic: Bootstrapping Pet Sets. (#2662)

* Move Guide topic: Bootstrapping Pet Sets.

* Add TOC entry.

* Move Guide topic: Connect with Proxies. (#2663)

* Move Guide topic: Connect with Proxies.

* Fix link.

* add DefaultTolerationSeconds admission controller

* getting-started-guides: add CoreOS Tectonic

* Correct the certificate name

* Update index.md

* Update installation.md

* Update validation.md

* Update backups.md

* Update backups.md

* Spell fixes

* Using it vs Juju Kubernetes

* Q1 update to k8s tech and service partner list

New partners registered to K8s Partner Ecosystem sign-up form.  Logo updates companion to this edit still WIP

* Logo file updates for new registrants

Logos for new registrants

* The attribute [allowfullscree] must have a value

Signed-off-by: yupengzte <yu.peng36@zte.com.cn>

* Remove newline before passing to base64

* Use single quote to avoid string interpolation, update output

* Update command as files contain no newline

* Remove all dead links, use just filename

As user can guess that it is file copied from the shown content

* Fix link to dev guide.

* Add --leader-elect=false

Second scheduler could not start without disabling leader-elect.

* cluster-components-could be running

could be doing sth

* update cluster-components.md

In theory,Master components can be run....

* update cluster-components--add a space

add a space after the comma: "In theory, Master components..."

* Highlighted command --kubectl describe

In web page ,there is no space ,need some empty space,thanks!

* Revert "Highlighted command --kubectl describe"

This reverts commit a70d0a3e3537c3f91b197b23f949e1e506c951d1.

* Add example show how to configure proxy for kube

* Revision as the suggestion describe

* move ha-master-gce.png to images/docs

Signed-off-by: Xiuyu Li <nickleefly@gmail.com>

* use relative path for ha-master-gce image

Signed-off-by: Xiuyu Li <nickleefly@gmail.com>

* The attribute [calendarWrapper] must be unique

Signed-off-by: yupengzte <yu.peng36@zte.com.cn>

* add required images in kubeadm init step

* Add links to Docker/rtk in cluster-intro.html

* s/acomplish/accomplish/

* Modify  the link URL of [kubelet eviction design doc]

[kubelet eviction design doc] should be linked to kubernetes.github.io
instead of community/design-proposal.

* fix CronJob object name

fix CronJob object name

* remove redundant a

Signed-off-by: Xiuyu Li <nickleefly@gmail.com>

* kubeadm reference--change any to some (#2683)

* modify one word

examples   to  example

* doc-walkthrough-content

modify

* limitrange-update

I think it's redundant that the second to ,in order to do sth and do
sth!thanks!

* cluster-components-could be running

could be doing sth

* update cluster-components.md

In theory,Master components can be run....

* update cluster-components--add a space

add a space after the comma: "In theory, Master components..."

* Highlighted command --kubectl describe

In web page ,there is no space ,need some empty space,thanks!

* Revert "Highlighted command --kubectl describe"

This reverts commit a70d0a3e3537c3f91b197b23f949e1e506c951d1.

* kubeadm reference--change any to some

kubeadm can install any  add-on ?

* Move Guide topics: Logging (#2687)

* Disallow indexing for liveness/index (#2689)

* Deprecate Guide topics. (#2691)

* Wrong label and kubectl get completed pods

The label `app=jobexample` should be `jobgroup=jobexample`.
Also, for get completed pods the flag `--show-all` is necessary.

* Update garbage-collection.md

change “any” to "every"

* Deprecate Guide topic: Persistent Volume Walkthrough. (#2692)

* Reimplement PR #2525

Fixes typo by removing the word "controller"

* remove extra space

* Update multiple-schedulers doc  (#2063)

* Update tutorial

* Fix md formatting.

* Remove extraneous space

* Deprecate Guide topic: Secrets Walkthrough. (#2695)

* Deprecate Guide topics: quick-start ... (#2696)

* Update Tasks landing page. (#2697)

* Remove redundant section in deployments

The status of the deployment is already covered in a later section in
this doc.

* Repair Spotinst logo

Corrected size

* fixed ASM blurb

* Correct ASM logo filename

* Highlighted command for `kubectl proxy`.

* Update ubuntu install instructions.

* Update local instructions to new method.

* update init-containers.md

add one word.

* Minor spelling correction -- "rtk" to "rkt"

* fixing typo

* Doc formatting update

Corrected indentation for the `nonResourcePath` and got a bit zealous with restructuring that section...

* Repair Spotinst logo

Corrected size

* fixed ASM blurb

* Correct ASM logo filename

* Update garbage-collection.md

change "any" to "every"

* Update Weave Net's title.

* fix unsupported parameter of wget command

* update to be retained

change "retain" to "to be retained".

* Update pod.md

* update init-containers.md

change "a different filesystem view" to "different filesystem views".
different init container should have different filesystem.

* Highlighted command --kubectl describe

In web page ,there is no space ,need some empty space,thanks!

* cluster-management--3

change 3 to three is better or not ?thanks!

* fix typo

1、Parameters “--allow-verification-with-non-compliant-keys” is missed.
2、Delete the parameter "--google-json-key string";

see the "# kube-controller-manager  -help"
# kubectl version
Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.1+82450d0", GitCommit:"f5ef9802914a47c848fd84c287333f8b4d28bbc1", GitTreeState:"dirty", BuildDate:"2017-01-23T00:04:39Z", GoVersion:"go1.7", Compiler:"gc", Platform:"linux/amd64", USEEVersion:"V1.02.01_alpha", USEEPublishDate:"2017-1-10 00:00:00"}
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.1+82450d0", GitCommit:"f5ef9802914a47c848fd84c287333f8b4d28bbc1", GitTreeState:"dirty", BuildDate:"2017-01-22T23:56:57Z", GoVersion:"go1.7", Compiler:"gc", Platform:"linux/amd64", USEEVersion:"V1.02.01_alpha", USEEPublishDate:"2017-1-10 00:00:00"}

* fix typo

1、Delete the parameter "--google-json-key string";
2、Parameters "--ir-data-source string"、"--ir-dbname string"、"--ir-hawkular string"、"--ir-influxdb-host string"、"--ir-namespace-only"、"--ir-password string"、"--ir-percentile int"、"--ir-user string"  is missed.

see the "# kube-prxoy -help"
# kubectl version
Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.1+82450d0", GitCommit:"f5ef9802914a47c848fd84c287333f8b4d28bbc1", GitTreeState:"dirty", BuildDate:"2017-01-23T00:04:39Z", GoVersion:"go1.7", Compiler:"gc", Platform:"linux/amd64", USEEVersion:"V1.02.01_alpha", USEEPublishDate:"2017-1-10 00:00:00"}
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.1+82450d0", GitCommit:"f5ef9802914a47c848fd84c287333f8b4d28bbc1", GitTreeState:"dirty", BuildDate:"2017-01-22T23:56:57Z", GoVersion:"go1.7", Compiler:"gc", Platform:"linux/amd64", USEEVersion:"V1.02.01_alpha", USEEPublishDate:"2017-1-10 00:00:00"}

* Update garbage-collection.md

modify the url and link

* update garbage-collection.md

change the url to relative path.

* update out-of-resource.md

change "in cases when" to "in case that"

* update out-of-resource.md

use a shorter and simpler expression.

* update out-of-resource.md

change "support" to "supports"

* Create a top-level CN directory to hold future md files for the Chinese kubernetes site

* Removed `=` at the end of the flags.

* Remove autogenerate todo

- This should be captured via a GitHub issue
  and not a TODO in the README documentation
  which leads to confusion.

* Move Guide topics: Federation Tasks. (#2799)

* Move Guide topics: Federation tutorial and concept. (#2802)

* Move Guide topics: Federation tutorial and concept.

* Add title.

* Fix link.

* Move kubectl Concept topics to Tutorials. (#2804)

* Move kubectl Concept topics to Tutorials.

* Add redirects and update links.

* The calendarWrapper attribute should be unique

Signed-off-by: yupengzte <yu.peng36@zte.com.cn>

* Fix links. (#2808)

* Fix link. (#2806)

* Move topic from clusters to cluster-administration. (#2812)

* Move a batch of cluster admin topics. (#2813)

* Move Guide topic: Limit storage consumption. (#2814)

* Move Guide topic: Limit storage consumption.

* Add title.

* Move Guide topic: Networking. (#2816)

* Move Guide topic: Network Plugins. (#2819)

* Move Guide topic: Network Plugins.

* Fix link.

* Move Guide topic: Static Pods. (#2820)

* User Guide content migration: post notice (#2818)

* Add User Guide content migration notice.

* Fix formatting

* Tweek formatting to block highlight text in light gray.

* Try table instead of code block

* remove extra lines

* try table format

* fix links

* incorporate @ddonnelly feedback

* Move Guide topic: Out of Resource. (#2821)

* Move Guide topic: Monitoring Node Health. (#2822)

* Move Guide topic: Monitoring Node Health.

* Move to Tasks.

* Move Guide topic: AppArmor. (#2823)

* Apparmor (#2825)

* Move Guide topic: AppArmor.

* Add included files.

* Move Guide topic: Audit. (#2824)

* Added 1.6 Upgrade notes to outline changes for etcd 3.

* Move Guide topic: Disruption Budget. (#2834)

* Move Guide topic: Limit range. (#2835)

* Quota (#2836)

* Move Guide topic: Limit range.

* Move Guide topic: Resource Quota and Limits.

* Quota2 (#2838)

* Move Guide topic: Limit range.

* Move Guide topic: Resource Quota concept.

* Dns (#2839)

* Move Guide topic: Limit range.

* Move Guide topic: DNS.

* Delete CNAME

* Create CNAME

* Delete CNAME

* Create CNAME

* Move docs/user-guide/managing-deployments.md to /docs/concepts/cluster-administration/manage-deployment.md

* add nginx-app.yaml file

* add back missing /

* fix link

* Move Guide topic: Replication Controller Operations

* Move Guide topic: Resizing a replication controller

* Concepts toc (#2840)

* Move Guide topic: Limit range.

* Adjust Concepts Overview TOC.

* Move Guide topic: Rolling Updates

* Move Kubernetes API page. (#2849)

* Move What is Kubernetes topic. (#2851)

* Move Guide topic: Rolling Update Demo (#2850)

* Move Guide topic: Rolling Update Demo

* rename file

* Move Guide topic: Configuration Best Practices

* Move Guide topic: Jobs (#2853)

* Move Guide topic: Jobs

* add job.yaml file

* change title

* Move Pod overview. (#2865)

* Move Pod overview.

* Fix redirection.

* Move Guide topic: Parallel Processing using Expansions (#2867)

* Move Guide topic: Parallel Processing using Expansions

* fix links to /docs/user-guide/jobs/

* Move Init Containers topic. (#2866)

* Move Guide topic: Coarse Parallel Processing Using a Work Queue

* Move Guide topic: Fine Parallel Processing using a Work Queue (#2870)

* Move Guide topic: Fine Parallel Processing using a Work Queue

* add migration notice

* fixed capitalization

* Rename /docs/tasks/job/work-queue-1/

* Move StatefulSets topic. (#2869)

* Move StatefulSets topic.

* Fix TOC.

* Move Guide topic: Pod Templates (#2872)

* Move Guide topic: Pod Templates

* tweak header level and capitalization

* Move PetSets topic. (#2873)

* Move Garbage Collection topic. (#2874)

* Move Garbage Collection topic.

* Fix included file.

* Move Guide topic: Prereqs

* Move Guide topic: Sharing Clusters

* Move Accessing Clusters topic to Concepts. (#2875)

* Move Accessing Clusters topic to Concepts.

* Update concepts.yml

* Move Guide topic: Kubeconfig File

* Move Guide topic: Config Provider Firewalls. (#2883)

* Move Guide topic: Federation Service Discovery. (#2884)

* Move Guide topic: Connecting Apps with Services. (#2885)

* Added example and docu for hostPort ranges

* Move Guide topic: Service. (#2891)

* Move Guide topic: Service.

* Move Guide topic: External Load Balancer.

* Fix TOC.

* Move Guide topic: Resource Monitoring. (#2895)

* docs/admin: document OpenID Connect plugin's claim prefixing

* Move Guide topic: Admin Guide

* fix the command output

fix the command output

* Update manage-compute-resources-container.md

Change "he" to "The"

* update out-of-resource.md

change "thresholds" to "threshold"

* update init-containers.md

change "apply" to "application"

* amend monitor-node-health.md

Amend the url link.

* Fix monitor-node-health.md

The url link does not exist.

* fix a typo in /docs/user-guide/configmap/index.md

change "value" to "values"

* View $PAGE on Github without forking the repo

Adding a "View docs/bla-bla.md on GitHub" button next to the
"Edit docs/bla-bla.md" button so that people can view the file
first without clicking the Edit button (which does not work without
forking the repository).

I did not need this because I was trying to do something without
forking. I just found it to be bit difficult to view source of a page
on GitHub.

I'm open to ideas, perhaps we can instead add an article footer button
named "View on GitHub" next to the "Edit this Page".

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

* Move Guide topics: Container Lifestyle Hooks, Images, Volumes

* fix to taint the master node

* Add files via upload

* fix the link of ogging-elasticsearch-kibana.md

fix the link of url

* Remove from TOC/Search: pods/init-containers ... (#2694)

* Fix typo

* Add files via upload

* Create hyperlink

Create hyperlink for kubernetes repo link.

* updated PSP documentation with RBAC (#2552)

Added info about controller manager setup and current implementation when using PSP with RBAC support.

* Use kubectl config current-context to simplify the instructions

* fix typeo (#2856)

* fix typeo

* Update kargo.md

* Fix typo in kubectl_completion.md

evaluation --> evaluated

* Apply typo fixes from #2791 (#2949)

* Apply typo fixes from #2791

* remove style typos

* Fix the typos

Signed-off-by: yupengzte <yu.peng36@zte.com.cn>

* Fix typo

* Fix typo (#2842)
2017-03-21 18:13:33 -07:00
Andrew Chen de14357284 Move position of ToC (#2948)
* Move position of ToC

* add space to fix syntax parsing check
2017-03-21 17:09:45 -07:00
devin-donnelly 57e6f7a80f Merge pull request #2889 from madhusudancs/fed-adm-reorg
Deprecate federation-up/deploy.sh doc.
2017-03-21 17:06:05 -07:00
devin-donnelly 7fdb8ce53c Merge pull request #2892 from derekwaynecarr/clarify-docs
Clarify how memory.available is computed in eviction
2017-03-21 17:05:02 -07:00
devin-donnelly 698bd00e50 Merge pull request #2905 from davidopp/release-1.6
Update docs to reflect affinity, taints, tolerations moving from alpha annotations to (beta) fields.
2017-03-21 17:01:57 -07:00
Andrew Chen cd65f3379b Merge pull request #2778 from gyliu513/table-content
Added table of content to node-selection.
2017-03-21 16:52:33 -07:00
Andrew Chen adacb8d8b0 Merge pull request #2777 from gyliu513/node-controller
Updated node controller for taints and tolerations.
2017-03-21 16:50:31 -07:00
Andrew Chen d410008343 Merge pull request #2770 from liggitt/requestheader
Add group and extra info to front proxy
2017-03-21 16:47:06 -07:00
Andrew Chen e2d113a233 Merge pull request #2768 from gyliu513/register-node
Added `--register-with-taints` for node.md.
2017-03-21 16:44:37 -07:00
Andrew Chen 8fe6182953 Merge pull request #2749 from liggitt/anonymous-auth
Clarify anonymous auth enablement
2017-03-21 16:41:07 -07:00
Andrew Chen ff7b67dd3b Merge pull request #2744 from gyliu513/kubectl-taint
Updated user guide for `kubectl taint` by adding `NoExecute`.
2017-03-21 16:36:19 -07:00
Andrew Chen e862c93186 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  updated PSP documentation with RBAC (#2552)
2017-03-21 16:13:39 -07:00
devin-donnelly 7178d47bf0 Merge pull request #2899 from madhusudancs/kubefed-v16
kubefed v1.6 update
2017-03-21 16:12:09 -07:00
devin-donnelly b19d0eb5ae Merge pull request #2841 from derekwaynecarr/cgroups
Add documentation for per pod cgroups
2017-03-21 16:10:14 -07:00
Andrew Chen 607105f918 Merge pull request #2935 from CaoShuFeng/audit-2
Audit filter is also available for the insecured endpoint
2017-03-21 16:01:04 -07:00
Andrew Chen 8d96337664 Merge pull request #2934 from CaoShuFeng/audit
Update baisc auditor's info
2017-03-21 16:00:49 -07:00
Andrew Chen 29607852ca Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  fix the link of ogging-elasticsearch-kibana.md
  View $PAGE on Github without forking the repo
  update init-containers.md
  update out-of-resource.md
2017-03-21 15:54:53 -07:00
Andrew Chen b3ac35430c Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Create hyperlink
  Add files via upload
  Fix typo
  Remove from TOC/Search: pods/init-containers ... (#2694)
  Add files via upload
  fix to taint the master node
  Move Guide topics: Container Lifestyle Hooks, Images, Volumes
  Correct ASM logo filename
  fixed ASM blurb
  Repair Spotinst logo
  Remove redundant section in deployments

# Conflicts:
#	docs/getting-started-guides/kubeadm.md
#	docs/user-guide/volumes.md
2017-03-21 15:54:35 -07:00
devin-donnelly f9c06f48e2 Merge pull request #2900 from wlan0/master
add docs about cloud-controller-manager
2017-03-21 12:00:33 -07:00
devin-donnelly c0f3aa4abe Update running-cloud-controller.md 2017-03-21 11:57:01 -07:00
devin-donnelly a5899fc2ff Update components.md 2017-03-21 11:49:23 -07:00
devin-donnelly 8d31f21184 Merge pull request #2887 from pwittrock/release-1.6
Release 1.6
2017-03-21 11:38:53 -07:00
devin-donnelly edff5cbd3f Merge pull request #2927 from nikhiljindal/cascDel1.6
Updating cascading deletion info for federation
2017-03-21 11:34:17 -07:00
devin-donnelly 28cbea8ec6 Merge pull request #2878 from janetkuo/ds-rolling-update
Add Task: Rolling Update a DaemonSet
2017-03-21 11:09:45 -07:00
devin-donnelly c2c5f17fe4 Merge pull request #2745 from jsafrane/default-storage-class
Add documentation about default storage class
2017-03-21 11:01:30 -07:00
Janet Kuo 6eeb3f74f4 Add Task: Rolling Update a DaemonSet 2017-03-21 10:40:17 -07:00
Jan Safranek 0eef44d130 Add documentation about default storage class 2017-03-21 09:25:01 +01:00
Cao Shufeng aaed3a4d38 Audit filter is also available for the insecured endpoint
See code here:
https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apiserver/pkg/server/config.go#L445
2017-03-21 04:12:02 -04:00
Cao Shufeng 173d1fd357 Update baisc auditor's info
See codes here:
https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apiserver/pkg/endpoints/filters/audit.go#L131
2017-03-21 04:09:09 -04:00
Madhusudan.C.S b4ffa837a5 Address review comments. 2017-03-20 17:19:36 -07:00
Christian Bell c9e46a66e7 Remove fed ingress known issue for 1.6. It's been fixed. 2017-03-20 16:25:47 -07:00
nikhiljindal 0007aa6404 Updating cascading deletion info for federation 2017-03-20 15:15:15 -07:00
devin-donnelly 18fb24df44 Merge pull request #2720 from DirectXMan12/feature/hpa-v2
Update HPA documentation to cover HPA v2
2017-03-20 15:10:54 -07:00
Solly Ross 877c6c224e Update HPA documentation to cover HPA v2
This updates the horizontal pod autoscaling documention to cover the new
autosclaing/v2alpha1 API version.  It also notes the removal of the old
alpha annotations for autoscaling on custom metrics, and reccomends
against using the alpha collection method.
2017-03-20 17:48:46 -04:00
devin-donnelly e12c965102 Merge pull request #2743 from gnufied/add-mount-option-docs
Add documentation for mount option
2017-03-20 14:30:15 -07:00
devin-donnelly ab6166b1f0 Merge pull request #2829 from jbeda/kubeadm-update
Update kubeadm docs for 1.6
2017-03-20 14:28:03 -07:00
Derek Carr 8403efcb04 Add documentation for per pod cgroups 2017-03-20 17:00:30 -04:00
devin-donnelly 508a160591 Merge pull request #2926 from devin-donnelly/release-1.6
Merge latest from Master into Release 1.6
2017-03-20 13:57:54 -07:00
Devin Donnelly 7667b6d217 Merge branch 'release-1.6' of https://github.com/kubernetes/kubernetes.github.io into release-1.6 2017-03-20 13:53:52 -07:00
Devin Donnelly 4956e43fb1 Merge remote-tracking branch 'upstream/master' into release-1.6 2017-03-20 13:51:51 -07:00
Derek Carr d11b59f5ce Clarify out of resource handling for memory.available 2017-03-20 16:51:49 -04:00
Hemant Kumar 5bfd2929d1 Fix language in docs 2017-03-20 15:13:28 -04:00
devin-donnelly 691a680c89 Merge pull request #2779 from jbeda/bootstrap-token
Add details on Bootstrap Tokens
2017-03-20 11:20:04 -07:00
Joe Beda 28c1fc5df8 Update kubeadm guide and reference pages for 1.6
Signed-off-by: Joe Beda <joe.github@bedafamily.com>
2017-03-19 10:04:17 -07:00
David Oppenheimer b8878e3bec Update docs to reflect affinity, taints, tolerations moving from alpha
annotations to (beta) fields.
2017-03-18 12:31:54 -07:00
Guangya Liu ce87af7f3b Updated node controller for taints and tolerations. 2017-03-18 17:34:51 +08:00
Madhusudan.C.S 5b50e8d04e Address review comments. 2017-03-17 22:36:26 -07:00
Shiyang Wang 8f64036db0 update resources name 2017-03-17 22:17:31 -05:00
Madhusudan.C.S 6c54d16ebc Update kubefed documentation. 2017-03-17 19:01:54 -07:00
Chao Xu 20fb544429 address comments 2017-03-17 17:42:58 -07:00
Chao Xu 2626c980f9 update gc doc for foreground garbage collection; add known issues for
non-core resources
2017-03-17 17:42:56 -07:00
Andrew Chen 9886f27a2e Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io: (62 commits)
  Move Guide topic: Admin Guide
  Move Guide topic: Resource Monitoring. (#2895)
  Move Guide topic: Service. (#2891)
  Move Guide topic: Connecting Apps with Services. (#2885)
  Move Guide topic: Federation Service Discovery. (#2884)
  Move Guide topic: Config Provider Firewalls. (#2883)
  Move Guide topic: Kubeconfig File
  Move Accessing Clusters topic to Concepts. (#2875)
  Move Guide topic: Sharing Clusters
  Move Guide topic: Prereqs
  Move Garbage Collection topic. (#2874)
  Move PetSets topic. (#2873)
  Move Guide topic: Pod Templates (#2872)
  Move StatefulSets topic. (#2869)
  Rename /docs/tasks/job/work-queue-1/
  Move Guide topic: Fine Parallel Processing using a Work Queue (#2870)
  Move Guide topic: Coarse Parallel Processing Using a Work Queue
  Move Init Containers topic. (#2866)
  Move Guide topic: Parallel Processing using Expansions (#2867)
  Move Pod overview. (#2865)
  ...

# Conflicts:
#	docs/api.md
#	docs/user-guide/jobs.md
2017-03-17 17:33:48 -07:00
Joe Beda 017f4e66ea Add details on Bootstrap Tokens 2017-03-17 16:49:14 -07:00
Joe Beda ade8225f0f Reformat kubeadm guide
* Word wrap paragraphs
* Switch to fenced code blocks for all code samples
* Render programs as plain text
* Separate out program invocation from program output

Much of this is to follow the style guide: https://kubernetes.io/docs/contribute/style-guide/

Signed-off-by: Joe Beda <joe.github@bedafamily.com>
2017-03-17 16:37:45 -07:00
sidharthamani 6e657471d3 add docs about cloud-controller-manager 2017-03-17 16:11:45 -07:00
Madhusudan.C.S 8cc433bc6c Deprecate federation-up/deploy.sh doc. 2017-03-17 01:35:16 -07:00
Phillip Wittrock fd0215c3b5 Update Deployment group from "extensions" to "apps" 2017-03-16 20:14:35 -07:00
Phillip Wittrock 5235c4bdf3 Add Kubernetes 1.6 reference docs to the doc 2017-03-16 18:30:27 -07:00
Phillip Wittrock 292a9ca3ce Kubernetes 1.6 api reference docs 2017-03-16 18:29:00 -07:00
Phillip Wittrock 21773e77fa Kubernetes release 1.6 resource reference docs 2017-03-16 18:28:44 -07:00
Guangya Liu 86c3768961 Added --register-with-taints for node.md. 2017-03-17 08:24:57 +08:00
Guangya Liu b72c26923e Updated user guide for kubectl taint by adding NoExecute. 2017-03-17 08:19:21 +08:00
Guangya Liu 127276b9ea Added table of content to node-selection.
This can help generate the table of content so that other files
can make reference of different sections.
2017-03-17 08:15:08 +08:00
devin-donnelly 5ae0ef3d8e Merge pull request #2774 from davidopp/release-1.6
Update node-selection documentation with information about taints, tolerations, and alpha support for per-pod-configurable behavior when there are node problems
2017-03-16 13:33:27 -07:00
Phillip Wittrock 495e9f22b6 kubectl 1.6 reference docs 2017-03-16 13:11:42 -07:00
devin-donnelly 35b59b4e03 Merge pull request #2843 from wongma7/external-feature
Add external provisioners to PV doc
2017-03-16 13:09:54 -07:00
devin-donnelly 9c8a08a310 Merge pull request #2854 from portworx/portworx-volume-plugin
Portworx Volume Plugin
2017-03-16 13:08:12 -07:00
David Oppenheimer 4013c5fb60 Update node-selection documentation with information about taints,
tolerations, and alpha support for per-pod-configurable behavior
when there are node problems.
2017-03-16 12:25:37 -07:00
Jordan Liggitt c4e8b56539 Document non-standard verbs 2017-03-16 11:40:08 -04:00
Matthew Wong 07d3a89fad Add external provisioners to PV doc 2017-03-16 11:19:04 -04:00
Aditya Dani e29c8d6b91 Portworx Volume Plugin - Add relevant doc references
- PortworxVolume as a type of Volume.
    - Portworx as a type of StorageClass
2017-03-16 14:52:49 +00:00
Vishnu kannan d4383a4b6a define enforcement in node-allocatable doc
Signed-off-by: Vishnu kannan <vishnuk@google.com>
2017-03-15 08:39:41 -07:00
Vishnu kannan b6a72da8e8 fix defaults and formatting on node-allocatable admin doc
Signed-off-by: Vishnu kannan <vishnuk@google.com>
2017-03-15 08:39:41 -07:00
Vishnu kannan 0ecd5254d9 adding docs for node allocatable
Signed-off-by: Vishnu kannan <vishnuk@google.com>
2017-03-15 08:39:41 -07:00
Vladimir Vivien 73cb92a0a9 Adds documentation for Dell EMC ScaleIO volume plugin
This commit updates the volumes documentation to include ScaleIO volume plugin information.
2017-03-15 08:34:57 -07:00
Jordan Liggitt 8e0a24c6b0 RBAC doc cleanup 2017-03-14 11:16:55 -07:00
devin-donnelly b60507278c Merge pull request #2793 from devin-donnelly/release-1.6
Merge latest from Master into Release 1.6
2017-03-14 11:14:55 -07:00
Jan Safranek 146af29a90 Add documentation of PV/PVC.storageClassName 2017-03-14 10:58:58 -07:00
Devin Donnelly b9c2e95fee Merge remote-tracking branch 'upstream/master' into release-1.6 2017-03-13 17:00:40 -07:00
peay 3be8f7493a Update CronJob history limits 2017-03-13 10:00:08 -07:00
Jordan Liggitt 053bce4219 Add group and extra info to front proxy 2017-03-11 00:48:21 -05:00
Jordan Liggitt 730fada1af Clarify anonymous auth enablement 2017-03-09 13:16:21 -05:00
Hemant Kumar cea23069c2 Add documentation for mount option 2017-03-08 21:06:47 -05:00
devin-donnelly 6f9b0d9191 Merge pull request #2739 from devin-donnelly/release-1.6
Merge latest from Master into Release 1.6
2017-03-08 14:54:59 -08:00
Devin Donnelly 621465a55c Merge remote-tracking branch 'upstream/master' into release-1.6 2017-03-08 14:51:36 -08:00
Andrew Chen 3e81720c34 Merge branch 'release-1.6' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'release-1.6' of https://github.com/kubernetes/kubernetes.github.io:
  Update RBAC doc
2017-03-07 13:46:28 -08:00
Andrew Chen 5b96f8f4ee Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  fix typo
  fix typo
  cluster-management--3
  Highlighted command --kubectl describe
  update init-containers.md
  Update pod.md
2017-03-07 13:46:16 -08:00
Jordan Liggitt d7e5371b0c Update RBAC doc 2017-03-07 12:20:34 -08:00
Andrew Chen cc0db822f9 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  update to be retained
2017-03-06 17:00:04 -08:00
Kevin 0f528eec9a update node-selection/index.md 2017-03-06 11:29:28 -08:00
Kevin 855cc67c77 Update "node selection" documentation to reflect Beta affinity syntax 2017-03-06 11:29:28 -08:00
Andrew Chen d83ea64d98 Merge branch 'release-1.6' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'release-1.6' of https://github.com/kubernetes/kubernetes.github.io:
  Updated spec.schedulername to spec.schedulerName.
2017-03-06 11:28:26 -08:00
Andrew Chen 2f9aa17560 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io: (58 commits)
  fix unsupported parameter of wget command
  Update Weave Net's title.
  Update garbage-collection.md
  Correct ASM logo filename
  fixed ASM blurb
  Repair Spotinst logo
  Doc formatting update
  fixing typo
  Minor spelling correction -- "rtk" to "rkt"
  update init-containers.md
  Update local instructions to new method.
  Update ubuntu install instructions.
  Highlighted command for `kubectl proxy`.
  Update Tasks landing page. (#2697)
  Deprecate Guide topics: quick-start ... (#2696)
  Deprecate Guide topic: Secrets Walkthrough. (#2695)
  Update multiple-schedulers doc  (#2063)
  remove extra space
  Reimplement PR #2525
  Deprecate Guide topic: Persistent Volume Walkthrough. (#2692)
  ...
2017-03-06 11:28:15 -08:00
Klaus Ma 32ab0977a2 Updated spec.schedulername to spec.schedulerName. 2017-03-06 10:47:46 -08:00
Jeff Peeler 8dcc673d5d Add docs for projected volume driver 2017-03-03 09:23:47 -08:00
xilabao 7aa8b474f8 support extra arguments in kubeadm master config 2017-03-02 10:14:42 -08:00
Andrew Chen a292ca987a Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Correct the certificate name
2017-03-02 10:12:48 -08:00
Andrew Chen 06b5791afa Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  getting-started-guides: add CoreOS Tectonic
  add DefaultTolerationSeconds admission controller
  Move Guide topic: Connect with Proxies. (#2663)
  Move Guide topic: Bootstrapping Pet Sets. (#2662)
  Move Guide topic: Using Port Forwarding. (#2661)
  fix typo (#2656)
  Move Guide topic: Using Environment Variables. (#2645)
  missing word
  Prototype for deprecating User Guide topic.
  Update static-pods.md
  Update static-pods.md
2017-03-02 09:49:33 -08:00
devin-donnelly 46c212b7a8 Merge pull request #2647 from devin-donnelly/release-1.6
Merge latest from master into Release 1.6
2017-02-28 14:34:08 -08:00
Devin Donnelly 9a96256e49 Merge remote-tracking branch 'upstream/master' into release-1.6 2017-02-28 14:33:19 -08:00
Andrew Chen 86df553c4b Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io: (136 commits)
  Clarify minimum version of kubernetes supporting PSP authz
  Fix typo: federation-controller-mananger => federation-controller-manager
  Fix typo: federation-controller-mananger => federation-controller-manager
  fix command kubectl get svc,pod output
  limitrange-update
  doc-walkthrough-content
  package apt-transport-https should be installed
  Fix apimachinery vendored dependencies in examples_test.
  Delete the parameter "--google-json-key string"
  Removed Extra space in the KUBE2GO commit
  Added KUBE2GO.io
  fix some wrong links
  Update hello-minikube.md
  show kubectl_rollingupdate svg
  Fixed flag for eviction-soft.
  Update review-issues.md
  Move Guide topic: Garbage Collection. (#2488)
  Update source-ip.md
  Update source-ip.md
  concepts/abstractions: init containers example.
  ...
2017-02-24 15:14:21 -08:00
Ritesh H Shukla 2ef1b0145e Add default storage class documentation for 1.6
fixes https://github.com/kubernetes/kubernetes/issues/40070
2017-02-22 17:20:12 -08:00
Andrew Chen 64267ef509 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Update hello-minikube.md
  show kubectl_rollingupdate svg
  Fixed flag for eviction-soft.
  Update review-issues.md
  Move Guide topic: Garbage Collection. (#2488)
  Update source-ip.md
  Update source-ip.md
2017-02-22 17:18:14 -08:00
Andrew Chen de68989df2 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  concepts/abstractions: init containers example.
  updated vsphere getting started guide addressed review comments addressed chenopis's review comments
2017-02-21 16:34:58 -08:00
Andrew Chen 578123e106 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Revert "Updated description for kubeadm init --kubernetes-version"
  Updated description for kubeadm init --kubernetes-version
  Remove details about where authenticator is implemented
  replace petset with statefulsets
  Updated result of command
  replace argumment with argument
  Highlight some keyworks in garbage-collection.md.
  Fixed typos in persistent volume index.md
  Remove reference to port-forward to services
  add an example
  fix typo
  Fix typo in concepts
  Parallel Jobs with a *work queue*:
  Add more options for self-registration.
  dedent yaml code blocks
  Add kubelet eviction in GC doc (#2484)
2017-02-21 12:43:53 -08:00
Alexander Kanevskiy 7b17b51997 Updated description for kubeadm init --kubernetes-version 2017-02-21 12:42:46 -08:00
Andrew Chen 7673131c02 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io: (22 commits)
  Revert "Document new optional support for ConfigMap and Secret"
  Revert "mend"
  modify one word
  fix typo
  Fix typos in running zookeeper article
  Add note about moved content. (#2563)
  Move Guide topic to Tasks: Downward API (#2439)
  modify typora
  fix etcd disaster-recovery hyperlink
  replace kubernetes.d with kubelet.d
  remove its name from file content
  Let's put kubectl in ~/bin.
  Move Guide toic to Tasks: kubectl exec.
  Fix travis and add comments
  Move Pod Lifecycle to Concepts. (#2420)
  Update deployment completeness documentation
  rollback PR #2522
  kubectl_apply.md-change it for label key
  Update the links of Deployment User Guide
  #2534 mark openstack-heat as standalone-salt-conf
  ...

# Conflicts:
#	docs/user-guide/configmap/index.md
2017-02-17 10:36:54 -08:00
Jordan Liggitt 6e9fc80694 Add RBAC default roles, CLI helpers, upgrade guide 2017-02-17 09:07:57 -08:00
Jordan Liggitt 258755fbfe Split RBAC documentation into separate page 2017-02-17 09:07:57 -08:00
Jordan Liggitt dc6643e00e subdirectory for authorization 2017-02-17 09:07:57 -08:00
deads2k a6c76bb814 add information about RBAC bootstrap roles 2017-02-17 09:07:57 -08:00
sallydeng 0486082622 Modified sentence base on comment
Base on comment, added the markdown formatting so that "NOTE:" is in bold and "optional:true" is in the code style
2017-02-16 17:50:57 -08:00
sallydeng 177d664239 optional:true is supported for Kubernetes 1.6
NOTE: The key-value optional:true is supported for Kubernetes 1.6 and above.
2017-02-16 17:50:57 -08:00
Maciej Szulik ec4e3b0ca2 Remove extensions/v1beta1 Job 2017-02-15 14:01:57 -08:00
Andrew Chen 9310444630 Merge branch 'master' of https://github.com/kubernetes/kubernetes.github.io into release-1.6
* 'master' of https://github.com/kubernetes/kubernetes.github.io:
  Fix travis.yml
  re: issue #2034; fix docker image link (#2532)
  re: issue #1671; update to direct link
  Update cheatsheet for multi-container handling
  add "--show-all" to kubectl get pods
  Fix broken/outdated links in the ingress.md file
  column READY is missed
  fix Kubenetes typo
  Update overview.md
  Update pod.md
  Update multiple-schedulers.md
  Fix the standard storageClass for GCE
  fix typo
  fix typo
  Update index.md
  doc(kubeadm.md) - change base64 decode option to '--decode'
  Update links to ingress repository
  Updated dead links
  Fix unmatched closing paren
2017-02-15 13:59:13 -08:00
Michail Kargakis 2172507943 Update deployment completeness documentation 2017-02-15 11:47:56 -08:00
Andrew Chen 501bde89e4 minor grammar addition
added 'be' in line 247: "...variables or be used in"
2017-02-14 09:48:47 -08:00
Michael Fraenkel 15e529958e Initial docs for envFrom ConfigMap 2017-02-14 09:48:47 -08:00
peay ae4bc86dae Update CronJob doc. with history limits 2017-02-14 09:07:01 -08:00
4607 changed files with 755326 additions and 135698 deletions
+5 -2
View File
@@ -1,3 +1,6 @@
> NOTE: Please check the “Allow edits from maintainers” box below to allow
> reviewers fix problems on your patch and speed up the review process.
> 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.
![Allow edits from maintainers checkbox](https://help.github.com/assets/images/help/pull_requests/allow-maintainers-to-make-edits-sidebar-checkbox.png)
-1
View File
@@ -24,4 +24,3 @@ Session.vim
tags
kubernetes.github.io.iml
_redirects
+4 -18
View File
@@ -1,6 +1,6 @@
language: go
go:
- 1.7.3
- 1.8.1
# Don't want default ./... here:
install:
@@ -11,23 +11,9 @@ install:
# (1) Fetch dependencies for us to run the tests in test/examples_test.go
- go get -t -v k8s.io/kubernetes.github.io/test
# The dependencies are complicated for test/examples_test.go
# k8s.io/kubernetes/pkg is a dependency, which in turn depends on apimachinery
# but we also have apimachinery directly as one of our dependencies, which causes a conflict.
# Additionally, we get symlinks when we clone the directory. The below steps do the following:
# (a) Replace the symlink with the actual dependencies from kubernetes/staging/src/
# (b) copy all the vendored files to $GOPATH/src
- rm $GOPATH/src/k8s.io/kubernetes/vendor/k8s.io/apimachinery
- rm $GOPATH/src/k8s.io/kubernetes/vendor/k8s.io/apiserver
- rm $GOPATH/src/k8s.io/kubernetes/vendor/k8s.io/client-go
- rm $GOPATH/src/k8s.io/kubernetes/vendor/k8s.io/sample-apiserver
- rm $GOPATH/src/k8s.io/kubernetes/vendor/k8s.io/kube-aggregator
- cp -r $GOPATH/src/k8s.io/kubernetes/vendor/* $GOPATH/src/
- rm -rf $GOPATH/src/k8s.io/kubernetes/vendor/*
- cp -r $GOPATH/src/k8s.io/kubernetes/staging/src/* $GOPATH/src/
- cp -r $GOPATH/src/k8s.io/apimachinery/vendor/* $GOPATH/src/
- rm -rf $GOPATH/src/k8s.io/apimachinery/vendor/*
# Simplified deduplication of dependencies.
- cp -L -R $GOPATH/src/k8s.io/kubernetes/vendor/ $GOPATH/src/
- rm -r $GOPATH/src/k8s.io/kubernetes/vendor/
# (2) Fetch md-check along with all its dependencies.
- git clone --depth=50 --branch=master https://github.com/kubernetes/md-check $HOME/gopath/src/k8s.io/md-check
+2 -2
View File
@@ -17,7 +17,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/contribute/style-guide/) and follow the [instructions for using page templates](http://kubernetes.io/docs/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
@@ -33,4 +33,4 @@ Note that code issues should be filed against the main kubernetes repository, wh
### Submitting Documentation Pull Requests
If you're fixing an issue in the existing documentation, you should submit a PR against the master branch. Follow [these instructions to create a documentation pull request against the kubernetes.io repository](http://kubernetes.io/docs/contribute/create-pull-request/).
If you're fixing an issue in the existing documentation, you should submit a PR against the master branch. Follow [these instructions to create a documentation pull request against the kubernetes.io repository](http://kubernetes.io/docs/home/contribute/create-pull-request/).
+1 -4
View File
@@ -1,4 +1,4 @@
.PHONY: all build build-preview generate-redirects help serve
.PHONY: all build build-preview help serve
help: ## Show this help.
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
@@ -11,8 +11,5 @@ build: ## Build site with production settings and put deliverables in _site.
build-preview: ## Build site with drafts and future posts enabled.
jekyll build --drafts --future
generate-redirects: ## Generate a redirects file and copy it into the _site directory.
mkdir -p _site && REDIRECTS_PATH=_site/_redirects ruby redirects.rb
serve: ## Boot the development server.
jekyll serve
+5 -5
View File
@@ -7,11 +7,11 @@ You can click the **Fork** button in the upper-right area of the screen to creat
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/contribute/create-pull-request/)
* [Writing a New Topic](http://kubernetes.io/docs/contribute/write-new-topic/)
* [Staging Your Documentation Changes](http://kubernetes.io/docs/contribute/stage-documentation-changes/)
* [Using Page Templates](http://kubernetes.io/docs/contribute/page-templates/)
* [Documentation Style Guide](http://kubernetes.io/docs/contribute/style-guide/)
* [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/)
* [Staging Your Documentation Changes](http://kubernetes.io/docs/home/contribute/stage-documentation-changes/)
* [Using Page Templates](http://kubernetes.io/docs/home/contribute/page-templates/)
* [Documentation Style Guide](http://kubernetes.io/docs/home/contribute/style-guide/)
## Thank you!
+9 -5
View File
@@ -1,5 +1,6 @@
name: Kubernetes
title: Kubernetes
url: https://kubernetes.io
description: Production-Grade Container Orchestration
markdown: kramdown
kramdown:
@@ -17,7 +18,8 @@ defaults:
scope:
path: ""
values:
version: "v1.5.1"
fullversion: "v1.7.0"
version: "v1.7"
githubbranch: "master"
docsbranch: "master"
-
@@ -41,14 +43,16 @@ logo: /images/favicon.png
twitter:
username: kubernetesio
# empty array for tabs
emptyArray: []
# Tables of contents, stored in the _data folder, that control the sidebar nav
tocs:
- docs-home
- guides
- tutorials
- setup
- tasks
- tutorials
- concepts
- reference
- tools
- samples
- support
- search
+58 -34
View File
@@ -10,13 +10,26 @@ toc:
- title: Working with Kubernetes Objects
section:
- docs/concepts/overview/working-with-objects/kubernetes-objects.md
- docs/concepts/overview/working-with-objects/names.md
- docs/concepts/overview/working-with-objects/namespaces.md
- docs/concepts/overview/working-with-objects/labels.md
- docs/concepts/overview/working-with-objects/annotations.md
- docs/concepts/overview/kubernetes-api.md
- title: Kubernetes Architecture
section:
- docs/concepts/architecture/nodes.md
- docs/concepts/architecture/master-node-communication.md
- title: Extending the Kubernetes API
section:
- docs/concepts/api-extension/custom-resources.md
- docs/concepts/api-extension/apiserver-aggregation.md
- title: Containers
section:
- docs/concepts/containers/images.md
- docs/concepts/containers/container-environment-variables.md
- docs/concepts/containers/container-lifecycle-hooks.md
- title: Workloads
@@ -24,51 +37,62 @@ toc:
- title: Pods
section:
- docs/concepts/workloads/pods/pod-overview.md
- docs/concepts/workloads/pods/pod.md
- docs/concepts/workloads/pods/pod-lifecycle.md
- docs/concepts/workloads/pods/init-containers.md
- docs/concepts/workloads/pods/disruptions.md
- title: Controllers
section:
- docs/concepts/workloads/controllers/replicaset.md
- docs/concepts/workloads/controllers/replicationcontroller.md
- docs/concepts/workloads/controllers/deployment.md
- docs/concepts/workloads/controllers/statefulset.md
- docs/concepts/workloads/controllers/petset.md
- docs/concepts/workloads/controllers/daemonset.md
- docs/concepts/workloads/controllers/garbage-collection.md
- title: Jobs
section:
- docs/concepts/jobs/run-to-completion-finite-workloads.md
- title: Cluster Administration
section:
- docs/concepts/cluster-administration/manage-deployment.md
- docs/concepts/cluster-administration/networking.md
- docs/concepts/cluster-administration/network-plugins.md
- docs/concepts/cluster-administration/logging.md
- docs/concepts/cluster-administration/audit.md
- docs/concepts/cluster-administration/resource-usage-monitoring.md
- docs/concepts/cluster-administration/out-of-resource.md
- docs/concepts/cluster-administration/multiple-clusters.md
- docs/concepts/cluster-administration/federation.md
- docs/concepts/cluster-administration/federation-service-discovery.md
- docs/concepts/cluster-administration/guaranteed-scheduling-critical-addon-pods.md
- docs/concepts/cluster-administration/static-pod.md
- docs/concepts/cluster-administration/sysctl-cluster.md
- docs/concepts/cluster-administration/access-cluster.md
- docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig.md
- title: Storage
section:
- docs/concepts/storage/volumes.md
- title: Services, Load Balancing, and Networking
section:
- docs/concepts/services-networking/dns-pod-service.md
- docs/concepts/services-networking/connect-applications-service.md
- docs/concepts/workloads/controllers/jobs-run-to-completion.md
- docs/concepts/workloads/controllers/cron-jobs.md
- title: Configuration
section:
- docs/concepts/configuration/overview.md
- docs/concepts/configuration/container-command-args.md
- docs/concepts/configuration/manage-compute-resources-container.md
- docs/concepts/configuration/assign-pod-node.md
- docs/concepts/configuration/secret.md
- title: Policies
- title: Services, Load Balancing, and Networking
section:
- docs/concepts/policy/container-capabilities.md
- docs/concepts/policy/resource-quotas.md
- docs/concepts/services-networking/service.md
- docs/concepts/services-networking/dns-pod-service.md
- docs/concepts/services-networking/connect-applications-service.md
- docs/concepts/services-networking/ingress.md
- docs/concepts/services-networking/network-policies.md
- docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases.md
- title: Storage
section:
- docs/concepts/storage/volumes.md
- docs/concepts/storage/persistent-volumes.md
- title: Dynamic Provisioning
path: http://blog.kubernetes.io/2016/10/dynamic-provisioning-and-storage-in-kubernetes.html
- title: Cluster Administration
section:
- docs/concepts/cluster-administration/cluster-administration-overview.md
- docs/concepts/cluster-administration/manage-deployment.md
- docs/concepts/cluster-administration/networking.md
- docs/concepts/cluster-administration/network-plugins.md
- docs/concepts/cluster-administration/logging.md
- docs/concepts/cluster-administration/kubelet-garbage-collection.md
- docs/concepts/cluster-administration/federation.md
- docs/concepts/cluster-administration/sysctl-cluster.md
- docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig.md
- docs/concepts/cluster-administration/master-node-communication.md
- docs/concepts/cluster-administration/proxies.md
- docs/concepts/cluster-administration/controller-metrics.md
- title: Policies
section:
- docs/concepts/policy/resource-quotas.md
- docs/concepts/policy/pod-security-policy.md
+21 -2
View File
@@ -1,4 +1,23 @@
bigheader: "Kubernetes Documentation"
bigheader: "Documentation Home"
abstract: "Documentation for using and learning about Kubernetes."
toc:
- docs/index.md
- docs/home/index.md
- docs/home/index.md
- title: Release Notes
path: https://git.k8s.io/kubernetes/CHANGELOG.md
- title: Release Roadmap
path: https://github.com/kubernetes/kubernetes/milestones/
- docs/tasks/debug-application-cluster/troubleshooting.md
- title: Contributing to the Kubernetes Docs
section:
- editdocs.md
- docs/home/contribute/create-pull-request.md
- docs/home/contribute/write-new-topic.md
- docs/home/contribute/stage-documentation-changes.md
- docs/home/contribute/page-templates.md
- docs/home/contribute/review-issues.md
- docs/home/contribute/style-guide.md
+2 -2
View File
@@ -1,10 +1,10 @@
tocs:
- docs-home
- guides
- tutorials
- setup
- tasks
- tutorials
- concepts
- reference
- tools
- samples
- support
-219
View File
@@ -1,219 +0,0 @@
bigheader: "Guides"
abstract: "How to get started, and accomplish tasks, using Kubernetes."
toc:
- docs/user-guide/index.md
- docs/whatisk8s.md
- docs/user-guide/index.md
- title: Accessing the Cluster
section:
- docs/user-guide/prereqs.md
- docs/user-guide/accessing-the-cluster.md
- docs/user-guide/sharing-clusters.md
- docs/user-guide/kubeconfig-file.md
- docs/user-guide/ui.md
- title: Workload Deployment and Management
section:
- docs/user-guide/managing-deployments.md
- docs/user-guide/replication-controller/operations.md
- docs/user-guide/resizing-a-replication-controller.md
- docs/user-guide/rolling-updates.md
- docs/user-guide/update-demo/index.md
- docs/user-guide/configmap/index.md
- docs/user-guide/horizontal-pod-autoscaling/walkthrough.md
- docs/user-guide/config-best-practices.md
- docs/user-guide/working-with-resources.md
- docs/user-guide/garbage-collection.md
- title: Using NetworkPolicy
section:
- docs/getting-started-guides/network-policy/walkthrough.md
- docs/getting-started-guides/network-policy/calico.md
- docs/getting-started-guides/network-policy/romana.md
- docs/getting-started-guides/network-policy/weave.md
- title: Batch Jobs
section:
- docs/user-guide/jobs.md
- docs/user-guide/jobs/expansions/index.md
- docs/user-guide/jobs/work-queue-1/index.md
- docs/user-guide/jobs/work-queue-2/index.md
- docs/user-guide/cron-jobs.md
- title: Service Discovery and Load Balancing
section:
- docs/user-guide/connecting-applications.md
- docs/user-guide/services/operations.md
- docs/user-guide/load-balancer.md
- docs/user-guide/services-firewalls.md
- docs/user-guide/federation/federated-services.md
- title: Containers and Pods
section:
- docs/user-guide/pods/multi-container.md
- docs/user-guide/pod-templates.md
- docs/user-guide/environment-guide/index.md
- docs/user-guide/compute-resources.md
- docs/user-guide/liveness/index.md
- docs/user-guide/container-environment.md
- docs/user-guide/node-selection/index.md
- docs/user-guide/petset/bootstrapping/index.md
- title: Monitoring, Logging, and Debugging Containers
section:
- docs/user-guide/monitoring.md
- title: Logging
section:
- docs/user-guide/logging/overview.md
- docs/user-guide/logging/stackdriver.md
- docs/user-guide/logging/elasticsearch.md
- docs/user-guide/connecting-to-applications-proxy.md
- docs/user-guide/connecting-to-applications-port-forward.md
- title: Using Explorer to Examine the Runtime Environment
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/explorer
- title: Creating a Cluster
section:
- docs/getting-started-guides/index.md
- title: Running Kubernetes on Your Local Machine
section:
- docs/getting-started-guides/minikube.md
- docs/getting-started-guides/alternatives.md
- title: Running Kubernetes on Turn-key Cloud Solutions
section:
- title: Running Kubernetes on Google Container Engine
path: https://cloud.google.com/container-engine/docs/before-you-begin/
- docs/getting-started-guides/gce.md
- docs/getting-started-guides/aws.md
- title: Running Kubernetes on Azure Container Service
path: https://docs.microsoft.com/en-us/azure/container-service/container-service-kubernetes-walkthrough
- docs/getting-started-guides/azure.md
- docs/getting-started-guides/clc.md
- title: Running Kubernetes on IBM SoftLayer
path: https://github.com/patrocinio/kubernetes-softlayer
- title: Running Kubernetes on Multiple Clouds with Stackpoint.io
path: /docs/getting-started-guides/stackpoint/
- title: Running Kubernetes on Custom Solutions
section:
- docs/getting-started-guides/scratch.md
- docs/getting-started-guides/kubeadm.md
- title: Custom Cloud Solutions
section:
- docs/getting-started-guides/coreos/index.md
- docs/getting-started-guides/ubuntu/index.md
- docs/getting-started-guides/rackspace.md
- docs/getting-started-guides/kops.md
- docs/getting-started-guides/kargo.md
- title: On-Premise VMs
section:
- docs/getting-started-guides/coreos/index.md
- docs/getting-started-guides/cloudstack.md
- docs/getting-started-guides/vsphere.md
- docs/getting-started-guides/photon-controller.md
- docs/getting-started-guides/dcos.md
- docs/getting-started-guides/libvirt-coreos.md
- docs/getting-started-guides/ovirt.md
- docs/getting-started-guides/openstack-heat.md
- title: rkt
section:
- docs/getting-started-guides/rkt/index.md
- docs/getting-started-guides/rkt/notes.md
- docs/getting-started-guides/mesos/index.md
- docs/getting-started-guides/mesos-docker.md
- title: Bare Metal
section:
- docs/getting-started-guides/coreos/bare_metal_offline.md
- docs/getting-started-guides/fedora/fedora_ansible_config.md
- docs/getting-started-guides/fedora/fedora_manual_config.md
- docs/getting-started-guides/fedora/flannel_multi_node_cluster.md
- docs/getting-started-guides/centos/centos_manual_config.md
- docs/getting-started-guides/coreos/index.md
- docs/getting-started-guides/ubuntu/index.md
- title: Ubuntu
section:
- docs/getting-started-guides/ubuntu/index.md
- docs/getting-started-guides/ubuntu/validation.md
- docs/getting-started-guides/ubuntu/backups.md
- docs/getting-started-guides/ubuntu/upgrades.md
- docs/getting-started-guides/ubuntu/scaling.md
- docs/getting-started-guides/ubuntu/installation.md
- docs/getting-started-guides/ubuntu/monitoring.md
- docs/getting-started-guides/ubuntu/networking.md
- docs/getting-started-guides/ubuntu/security.md
- docs/getting-started-guides/ubuntu/storage.md
- docs/getting-started-guides/ubuntu/troubleshooting.md
- docs/getting-started-guides/ubuntu/decommissioning.md
- docs/getting-started-guides/ubuntu/calico.md
- docs/getting-started-guides/ubuntu/operational-considerations.md
- docs/getting-started-guides/ubuntu/glossary.md
- docs/getting-started-guides/ubuntu/local.md
- docs/getting-started-guides/ubuntu/logging.md
- docs/getting-started-guides/ubuntu/manual.md
- docs/getting-started-guides/windows/index.md
- docs/admin/node-conformance.md
- docs/getting-started-guides/docker-multinode.md
- docs/admin/cluster-large.md
- docs/admin/multiple-zones.md
- docs/admin/high-availability/index.md
- docs/getting-started-guides/binary_release.md
- title: Administering Clusters
section:
- docs/admin/index.md
- docs/admin/cluster-management.md
- docs/admin/upgrade-1-6.md
- docs/admin/kubeadm.md
- docs/admin/addons.md
- docs/admin/audit.md
- docs/admin/ha-master-gce.md
- docs/admin/namespaces/index.md
- docs/admin/namespaces/walkthrough.md
- docs/admin/limitrange/index.md
- docs/admin/disruptions.md
- docs/admin/resourcequota/index.md
- docs/admin/resourcequota/walkthrough.md
- docs/admin/resourcequota/limitstorageconsumption.md
- docs/admin/rescheduler.md
- docs/admin/sysctls.md
- docs/admin/cluster-components.md
- docs/admin/etcd.md
- docs/admin/multi-cluster.md
- title: Changing Cluster Size
path: https://github.com/kubernetes/kubernetes/wiki/User-FAQ#how-do-i-change-the-size-of-my-cluster/
- docs/admin/multiple-schedulers.md
- docs/admin/networking.md
- docs/admin/dns.md
- title: Setting Up and Configuring DNS
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/cluster-dns
- docs/admin/master-node-communication.md
- docs/admin/network-plugins.md
- docs/admin/static-pods.md
- docs/admin/garbage-collection.md
- docs/admin/out-of-resource.md
- docs/admin/salt.md
- docs/admin/node-problem.md
- docs/admin/apparmor/index.md
- title: Administering Federation
section:
- docs/admin/federation/kubefed.md
- title: Federated Kubernetes Objects
section:
- docs/user-guide/federation/index.md
- docs/user-guide/federation/configmap.md
- docs/user-guide/federation/daemonsets.md
- docs/user-guide/federation/deployment.md
- docs/user-guide/federation/events.md
- docs/user-guide/federation/federated-ingress.md
- docs/user-guide/federation/namespaces.md
- docs/user-guide/federation/replicasets.md
- docs/user-guide/federation/secrets.md
- docs/federation/api-reference/index.md
- title: Federation Components
section:
- docs/admin/federation-apiserver.md
- title : federation-controller-manager
path: /docs/admin/federation-controller-manager
-7
View File
@@ -1,6 +1,4 @@
overrides:
- path: docs/api-reference
- path: docs/user-guide/kubectl
- path: docs/admin/federation-apiserver.md
- path: docs/admin/federation-controller-manager.md
- path: docs/admin/kube-apiserver.md
@@ -8,10 +6,5 @@ overrides:
- path: docs/admin/kube-proxy.md
- path: docs/admin/kube-scheduler.md
- path: docs/admin/kubelet.md
- changedpath: docs/api-reference/extensions/v1beta1/definitions.html _includes/v1.5/extensions-v1beta1-definitions.html
- changedpath: docs/api-reference/extensions/v1beta1/operations.html _includes/v1.5/extensions-v1beta1-operations.html
- changedpath: docs/api-reference/v1/definitions.html _includes/v1.5/v1-definitions.html
- changedpath: docs/api-reference/v1/operations.html _includes/v1.5/v1-operations.html
- copypath: k8s/federation/docs/api-reference/ docs/federation/
- copypath: k8s/cluster/saltbase/salt/fluentd-gcp/fluentd-gcp.yaml docs/getting-started-guides/fluentd-gcp.yaml
+59 -162
View File
@@ -1,200 +1,97 @@
bigheader: "Reference Documentation"
abstract: "Design docs, concept definitions, and references for APIs and CLIs."
toc:
- docs/reference.md
- docs/reference/index.md
- title: "Kubernetes Resource Types (New Docs Style)"
- title: Using the API
section:
- title: Version 1.5
path: /docs/resources-reference/v1.5/
- title: "Kubernetes API (New Docs Style)"
section:
- title: Version 1.5
path: /docs/api-reference/v1.5/
- title: "Kubectl Commands (New Docs Style)"
section:
- title: Version 1.5
path: /docs/user-guide/kubectl/v1.5/
- title: Kubernetes API
section:
- docs/api.md
- docs/reference/api-overview.md
- title: Accessing the API
section:
- docs/admin/accessing-the-api.md
- docs/admin/authentication.md
- docs/admin/authorization.md
- docs/admin/bootstrap-tokens.md
- docs/admin/admission-controllers.md
- docs/admin/extensible-admission-controllers.md
- docs/admin/service-accounts-admin.md
- docs/api-reference/v1/operations.html
- docs/api-reference/v1/definitions.html
- docs/api-reference/labels-annotations-taints.md
- kubernetes/third_party/swagger-ui/index.md
- title: Authorization
section:
- docs/admin/authorization/index.md
- docs/admin/authorization/abac.md
- docs/admin/authorization/rbac.md
- docs/admin/authorization/node.md
- docs/admin/authorization/webhook.md
- docs/reference/deprecation-policy.md
- title: Autoscaling API
- title: API Reference
section:
- docs/api-reference/autoscaling/v1/operations.html
- docs/api-reference/autoscaling/v1/definitions.html
- title: v1.7
path: /docs/api-reference/v1.7/
- title: v1.6
path: /docs/api-reference/v1.6/
- title: v1.5
path: /docs/api-reference/v1.5/
- docs/reference/labels-annotations-taints.md
- title: OpenAPI and Swagger
section:
- title: OpenAPI Spec
path: https://git.k8s.io/kubernetes/api/openapi-spec/
- title: Swagger Spec
path: https://git.k8s.io/kubernetes/api/swagger-spec/
- title: Batch API
- title: Federation API
section:
- docs/api-reference/batch/v1/operations.html
- docs/api-reference/batch/v1/definitions.html
- title: Apps API
section:
- title: Apps API Operations
path: /docs/api-reference/apps/v1beta1/operations/
- title: Apps API Definitions
path: /docs/api-reference/apps/v1beta1/definitions/
- title: Extensions API
section:
- docs/api-reference/extensions/v1beta1/operations.html
- docs/api-reference/extensions/v1beta1/definitions.html
- docs/reference/federation/v1/operations.html
- docs/reference/federation/v1/definitions.html
- docs/reference/federation/v1beta1/operations.html
- docs/reference/federation/v1beta1/definitions.html
- docs/reference/federation/extensions/v1beta1/operations.html
- docs/reference/federation/extensions/v1beta1/definitions.html
- title: kubectl CLI
section:
- docs/user-guide/kubectl-overview.md
- title: v1.7 Commands
path: /docs/user-guide/kubectl/v1.7/
- title: v1.6 Commands
path: /docs/user-guide/kubectl/v1.6/
- title: v1.5 Commands
path: /docs/user-guide/kubectl/v1.5/
- docs/user-guide/docker-cli-to-kubectl.md
- docs/user-guide/kubectl-conventions.md
- docs/user-guide/jsonpath.md
- docs/user-guide/kubectl-cheatsheet.md
- title: kubectl Commands
section:
- docs/user-guide/kubectl/index.md
- docs/user-guide/kubectl/kubectl_annotate.md
- docs/user-guide/kubectl/kubectl_api-versions.md
- docs/user-guide/kubectl/kubectl_apply.md
- docs/user-guide/kubectl/kubectl_attach.md
- docs/user-guide/kubectl/kubectl_autoscale.md
- docs/user-guide/kubectl/kubectl_certificate.md
- docs/user-guide/kubectl/kubectl_certificate_approve.md
- docs/user-guide/kubectl/kubectl_certificate_deny.md
- docs/user-guide/kubectl/kubectl_cluster-info.md
- docs/user-guide/kubectl/kubectl_cluster-info_dump.md
- docs/user-guide/kubectl/kubectl_completion.md
- docs/user-guide/kubectl/kubectl_config.md
- docs/user-guide/kubectl/kubectl_config_current-context.md
- docs/user-guide/kubectl/kubectl_config_delete-cluster.md
- docs/user-guide/kubectl/kubectl_config_delete-context.md
- docs/user-guide/kubectl/kubectl_config_get-clusters.md
- docs/user-guide/kubectl/kubectl_config_get-contexts.md
- docs/user-guide/kubectl/kubectl_config_set-cluster.md
- docs/user-guide/kubectl/kubectl_config_set-context.md
- docs/user-guide/kubectl/kubectl_config_set-credentials.md
- docs/user-guide/kubectl/kubectl_config_set.md
- docs/user-guide/kubectl/kubectl_config_unset.md
- docs/user-guide/kubectl/kubectl_config_use-context.md
- docs/user-guide/kubectl/kubectl_config_view.md
- docs/user-guide/kubectl/kubectl_convert.md
- docs/user-guide/kubectl/kubectl_cordon.md
- docs/user-guide/kubectl/kubectl_cp.md
- docs/user-guide/kubectl/kubectl_create.md
- docs/user-guide/kubectl/kubectl_create_configmap.md
- docs/user-guide/kubectl/kubectl_create_deployment.md
- docs/user-guide/kubectl/kubectl_create_namespace.md
- docs/user-guide/kubectl/kubectl_create_quota.md
- docs/user-guide/kubectl/kubectl_create_secret_docker-registry.md
- docs/user-guide/kubectl/kubectl_create_secret.md
- docs/user-guide/kubectl/kubectl_create_secret_generic.md
- docs/user-guide/kubectl/kubectl_create_secret_tls.md
- docs/user-guide/kubectl/kubectl_create_serviceaccount.md
- docs/user-guide/kubectl/kubectl_create_service_clusterip.md
- docs/user-guide/kubectl/kubectl_create_service_loadbalancer.md
- docs/user-guide/kubectl/kubectl_create_service_nodeport.md
- docs/user-guide/kubectl/kubectl_delete.md
- docs/user-guide/kubectl/kubectl_describe.md
- docs/user-guide/kubectl/kubectl_drain.md
- docs/user-guide/kubectl/kubectl_edit.md
- docs/user-guide/kubectl/kubectl_exec.md
- docs/user-guide/kubectl/kubectl_explain.md
- docs/user-guide/kubectl/kubectl_expose.md
- docs/user-guide/kubectl/kubectl_get.md
- docs/user-guide/kubectl/kubectl_label.md
- docs/user-guide/kubectl/kubectl_logs.md
- docs/user-guide/kubectl/kubectl_options.md
- docs/user-guide/kubectl/kubectl_patch.md
- docs/user-guide/kubectl/kubectl_port-forward.md
- docs/user-guide/kubectl/kubectl_proxy.md
- docs/user-guide/kubectl/kubectl_replace.md
- docs/user-guide/kubectl/kubectl_rolling-update.md
- docs/user-guide/kubectl/kubectl_rollout.md
- docs/user-guide/kubectl/kubectl_rollout_history.md
- docs/user-guide/kubectl/kubectl_rollout_pause.md
- docs/user-guide/kubectl/kubectl_rollout_resume.md
- docs/user-guide/kubectl/kubectl_rollout_status.md
- docs/user-guide/kubectl/kubectl_rollout_undo.md
- docs/user-guide/kubectl/kubectl_run.md
- docs/user-guide/kubectl/kubectl_scale.md
- docs/user-guide/kubectl/kubectl_set.md
- docs/user-guide/kubectl/kubectl_set_image.md
- docs/user-guide/kubectl/kubectl_set_resources.md
- docs/user-guide/kubectl/kubectl_taint.md
- docs/user-guide/kubectl/kubectl_top.md
- docs/user-guide/kubectl/kubectl_top_node.md
- docs/user-guide/kubectl/kubectl_top_pod.md
- docs/user-guide/kubectl/kubectl_uncordon.md
- docs/user-guide/kubectl/kubectl_version.md
- title: Superseded and Deprecated Commands
section:
- /docs/user-guide/kubectl/kubectl_namespace/
- docs/user-guide/kubectl/kubectl_stop.md
- title: Kubernetes Components
- docs/admin/kubeadm.md
- title: Config Reference
section:
- docs/admin/kubelet.md
- docs/admin/kube-apiserver.md
- docs/admin/kube-controller-manager.md
- docs/admin/kube-proxy.md
- docs/admin/kube-scheduler.md
- title: kubelet
section:
- docs/admin/kubelet.md
- docs/admin/master-node-communication.md
- docs/admin/kubelet-tls-bootstrapping.md
- docs/admin/kubelet-authentication-authorization.md
- title: Glossary
section:
- docs/user-guide/annotations.md
- docs/admin/daemons.md
- docs/user-guide/deployments.md
- docs/user-guide/horizontal-pod-autoscaling/index.md
- docs/user-guide/images.md
- docs/user-guide/ingress.md
- docs/user-guide/jobs.md
- docs/user-guide/labels.md
- docs/user-guide/identifiers.md
- docs/user-guide/namespaces.md
- docs/user-guide/networkpolicies.md
- docs/admin/node.md
- docs/user-guide/persistent-volumes/index.md
- docs/user-guide/petset.md
- docs/user-guide/pods/index.md
- docs/user-guide/pod-security-policy/index.md
- docs/user-guide/replicasets.md
- docs/user-guide/replication-controller/index.md
- docs/admin/resourcequota/index.md
- docs/user-guide/cron-jobs.md
- docs/user-guide/secrets/index.md
- docs/user-guide/security-context.md
- docs/user-guide/services/index.md
- docs/user-guide/service-accounts.md
- docs/user-guide/thirdpartyresources.md
- docs/user-guide/volumes.md
- docs/admin/federation-apiserver.md
- docs/admin/federation-controller-manager.md
- title: Kubernetes Design Docs
section:
- title: Kubernetes Architecture
path: https://github.com/kubernetes/kubernetes/blob/release-1.5/docs/design/architecture.md
path: https://git.k8s.io/community/contributors/design-proposals/architecture.md
- title: Kubernetes Design Overview
path: https://github.com/kubernetes/kubernetes/blob/release-1.5/docs/design/
path: https://github.com/kubernetes/kubernetes/tree/release-1.6/docs/design
- title: Kubernetes Identity and Access Management
path: https://github.com/kubernetes/kubernetes/blob/release-1.5/docs/design/access.md
path: https://git.k8s.io/community/contributors/design-proposals/access.md
- docs/admin/ovs-networking.md
- title: Security Contexts
path: https://github.com/kubernetes/kubernetes/blob/release-1.5/docs/design/security_context.md
path: https://git.k8s.io/community/contributors/design-proposals/security_context.md
- title: Security in Kubernetes
path: https://github.com/kubernetes/kubernetes/blob/release-1.5/docs/design/security.md
path: https://git.k8s.io/community/contributors/design-proposals/security.md
- title: Kubernetes Issues and Security
section:
- title: Kubernetes Issue Tracker on GitHub
path: https://github.com/kubernetes/kubernetes/issues/
- docs/reference/security.md
-75
View File
@@ -1,75 +0,0 @@
bigheader: "Samples"
abstract: "A collection of example applications that show how to use Kubernetes."
toc:
- docs/samples.md
- title: Storage / Database / KV
section:
- title: Apache Cassandra Database
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/storage/cassandra
- title: Ceph
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/volumes/rbd/
- title: CephFS
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/volumes/cephfs/
- title: CockroachDB
path: https://github.com/kubernetes/kubernetes/tree/release-1.4/examples/cockroachdb/
- title: GlusterFS
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/volumes/glusterfs/
- title: Hazelcast
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/storage/hazelcast
- title: iSCSI
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/volumes/iscsi/
- title: MySQL Galera
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/storage/mysql-galera
- title: NFS
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/volumes/nfs/
- title: Redis
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/storage/redis/
- title: RethinkDB
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/storage/rethinkdb/
- title: Vitess
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/storage/vitess/
- title: Big Data
section:
- title: Apache Spark
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/spark
- title: Apache Storm
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/storm
- title: Messaging / Queueing
section:
- title: Hazelcast
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/storage/hazelcast
- title: Miscellaneous
section:
- title: Meteor Applications
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/meteor/
- title: OpenShift Origin
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/openshift-origin/
- title: Selenium
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/selenium/
- title: Monitoring and Logging
section:
- title: Elasticsearch
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/elasticsearch/
- title: NewRelic
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/newrelic
- title: Multi-tier Applications
section:
- title: Guestbook - Go Server
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/guestbook-go/
- title: GuestBook - PHP Server
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/guestbook/
- docs/getting-started-guides/meanstack.md
- title: MySQL + Wordpress
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/mysql-wordpress-pd/
- title: MySQL + Phabricator Server
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/phabricator/
- title: Nodejs + Mongo
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/nodesjs-mongodb
- title: Petstore
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/k8petstore/
+4
View File
@@ -0,0 +1,4 @@
bigheader: ""
abstract: ""
toc:
- docs/search.md
+107
View File
@@ -0,0 +1,107 @@
bigheader: "Setup"
abstract: "Instructions for setting up a Kubernetes cluster."
toc:
- docs/setup/index.md
- docs/setup/pick-right-solution.md
- title: Independent Solutions
section:
- docs/getting-started-guides/minikube.md
- title: Bootstrapping Clusters with kubeadm
section:
- docs/setup/independent/install-kubeadm.md
- docs/setup/independent/create-cluster-kubeadm.md
- docs/getting-started-guides/scratch.md
- docs/getting-started-guides/alternatives.md
- title: Hosted Solutions
section:
- title: Running Kubernetes on Google Container Engine
path: https://cloud.google.com/container-engine/docs/before-you-begin/
- title: Running Kubernetes on Azure Container Service
path: https://docs.microsoft.com/en-us/azure/container-service/container-service-kubernetes-walkthrough
- title: Running Kubernetes on IBM Bluemix Container Service
path: https://console.ng.bluemix.net/docs/containers/container_index.html
- title: Turn-key Cloud Solutions
section:
- docs/getting-started-guides/gce.md
- docs/getting-started-guides/aws.md
- docs/getting-started-guides/azure.md
- docs/getting-started-guides/clc.md
- title: Running Kubernetes on IBM Bluemix
path: https://github.com/patrocinio/kubernetes-softlayer
- docs/getting-started-guides/stackpoint.md
- title: Custom Solutions
section:
- title: Custom Cloud Solutions
section:
- docs/getting-started-guides/coreos/index.md
- docs/getting-started-guides/ubuntu/index.md
- docs/getting-started-guides/kops.md
- docs/getting-started-guides/kubespray.md
- docs/getting-started-guides/running-cloud-controller.md
- title: On-Premise VMs
section:
- docs/getting-started-guides/coreos/index.md
- docs/getting-started-guides/cloudstack.md
- docs/getting-started-guides/vsphere.md
- docs/getting-started-guides/photon-controller.md
- docs/getting-started-guides/dcos.md
- docs/getting-started-guides/libvirt-coreos.md
- docs/getting-started-guides/ovirt.md
- docs/getting-started-guides/openstack-heat.md
- title: rkt
section:
- docs/getting-started-guides/rkt/index.md
- docs/getting-started-guides/rkt/notes.md
- docs/getting-started-guides/mesos/index.md
- docs/getting-started-guides/mesos-docker.md
- title: Bare Metal
section:
- docs/getting-started-guides/coreos/bare_metal_offline.md
- docs/getting-started-guides/fedora/fedora_ansible_config.md
- docs/getting-started-guides/fedora/fedora_manual_config.md
- docs/getting-started-guides/fedora/flannel_multi_node_cluster.md
- docs/getting-started-guides/centos/centos_manual_config.md
- docs/getting-started-guides/coreos/index.md
- docs/getting-started-guides/ubuntu/index.md
- title: Ubuntu
section:
- docs/getting-started-guides/ubuntu/index.md
- docs/getting-started-guides/ubuntu/validation.md
- docs/getting-started-guides/ubuntu/backups.md
- docs/getting-started-guides/ubuntu/upgrades.md
- docs/getting-started-guides/ubuntu/scaling.md
- docs/getting-started-guides/ubuntu/installation.md
- docs/getting-started-guides/ubuntu/monitoring.md
- docs/getting-started-guides/ubuntu/networking.md
- docs/getting-started-guides/ubuntu/security.md
- docs/getting-started-guides/ubuntu/storage.md
- docs/getting-started-guides/ubuntu/troubleshooting.md
- docs/getting-started-guides/ubuntu/decommissioning.md
- docs/getting-started-guides/ubuntu/operational-considerations.md
- docs/getting-started-guides/ubuntu/glossary.md
- docs/getting-started-guides/ubuntu/local.md
- docs/getting-started-guides/ubuntu/logging.md
- docs/getting-started-guides/ubuntu/manual.md
- docs/getting-started-guides/windows/index.md
- docs/admin/node-conformance.md
- docs/concepts/cluster-administration/addons.md
- docs/admin/salt.md
- docs/admin/cluster-large.md
- docs/admin/multiple-zones.md
- docs/admin/high-availability/index.md
- docs/getting-started-guides/binary_release.md
-44
View File
@@ -1,44 +0,0 @@
bigheader: "Support"
abstract: "Troubleshooting resources, frequently asked questions, and community support channels."
toc:
- docs/troubleshooting.md
- title: Troubleshooting
section:
- docs/user-guide/debugging-pods-and-replication-controllers.md
- docs/user-guide/introspection-and-debugging.md
- docs/user-guide/application-troubleshooting.md
- docs/admin/cluster-troubleshooting.md
- docs/user-guide/debugging-services.md
- title: Frequently Asked Questions
section:
- title: User FAQ
path: https://github.com/kubernetes/kubernetes/wiki/User-FAQ/
- title: Debugging FAQ
path: https://github.com/kubernetes/kubernetes/wiki/Debugging-FAQ/
- title: Services FAQ
path: https://github.com/kubernetes/kubernetes/wiki/Services-FAQ/
- title: Contributing to the Kubernetes Docs
section:
- editdocs.md
- docs/contribute/create-pull-request.md
- docs/contribute/write-new-topic.md
- docs/contribute/stage-documentation-changes.md
- docs/contribute/page-templates.md
- docs/contribute/review-issues.md
- docs/contribute/style-guide.md
- title: Other Resources
section:
- title: Kubernetes Issue Tracker on GitHub
path: https://github.com/kubernetes/kubernetes/issues/
- docs/reporting-security-issues.md
- title: Release Notes
path: https://github.com/kubernetes/kubernetes/releases/
- title: Release Roadmap
path: https://github.com/kubernetes/kubernetes/milestones/
- title: Deprecation Policy
path: /docs/deprecation-policy.md
+116 -32
View File
@@ -3,72 +3,153 @@ abstract: "Step-by-step instructions for performing operations with Kubernetes."
toc:
- docs/tasks/index.md
- title: Using the kubectl Command-Line
- title: Install Tools
section:
- docs/tasks/kubectl/install.md
- docs/tasks/kubectl/list-all-running-container-images.md
- docs/tasks/kubectl/get-shell-running-container.md
- docs/tasks/tools/install-kubectl.md
- docs/tasks/tools/install-minikube.md
- docs/setup/independent/install-kubeadm.md
- title: Configuring Pods and Containers
- title: Configure Pods and Containers
section:
- docs/tasks/configure-pod-container/define-environment-variable-container.md
- docs/tasks/configure-pod-container/define-command-argument-container.md
- docs/tasks/configure-pod-container/assign-cpu-ram-container.md
- docs/tasks/configure-pod-container/limit-range.md
- docs/tasks/configure-pod-container/apply-resource-quota-limit.md
- docs/tasks/configure-pod-container/configure-volume-storage.md
- docs/tasks/configure-pod-container/configure-persistent-volume-storage.md
- docs/tasks/configure-pod-container/configure-projected-volume-storage.md
- docs/tasks/configure-pod-container/projected-volume.md
- docs/tasks/configure-pod-container/security-context.md
- docs/tasks/configure-pod-container/environment-variable-expose-pod-information.md
- docs/tasks/configure-pod-container/downward-api-volume-expose-pod-information.md
- docs/tasks/configure-pod-container/distribute-credentials-secure.md
- docs/tasks/configure-pod-container/configure-service-account.md
- docs/tasks/configure-pod-container/pull-image-private-registry.md
- docs/tasks/configure-pod-container/configure-liveness-readiness-probes.md
- docs/tasks/configure-pod-container/communicate-containers-same-pod.md
- docs/tasks/configure-pod-container/assign-pods-nodes.md
- docs/tasks/configure-pod-container/configure-pod-initialization.md
- docs/tasks/configure-pod-container/attach-handler-lifecycle-event.md
- docs/tasks/configure-pod-container/configure-pod-disruption-budget.md
- docs/tasks/configure-pod-container/configmap.md
- docs/tasks/configure-pod-container/configure-pod-configmap.md
- docs/tools/kompose/user-guide.md
- title: Running Applications
- title: Inject Data Into Applications
section:
- docs/tasks/run-application/rolling-update-replication-controller.md
- docs/tasks/inject-data-application/define-command-argument-container.md
- docs/tasks/inject-data-application/define-environment-variable-container.md
- docs/tasks/inject-data-application/environment-variable-expose-pod-information.md
- docs/tasks/inject-data-application/downward-api-volume-expose-pod-information.md
- docs/tasks/inject-data-application/distribute-credentials-secure.md
- docs/tasks/inject-data-application/podpreset.md
- title: Running Jobs
- title: Run Applications
section:
- docs/tasks/run-application/run-stateless-application-deployment.md
- docs/tasks/run-application/run-single-instance-stateful-application.md
- docs/tasks/run-application/run-replicated-stateful-application.md
- docs/tasks/run-application/upgrade-pet-set-to-stateful-set.md
- docs/tasks/run-application/scale-stateful-set.md
- docs/tasks/run-application/delete-stateful-set.md
- docs/tasks/run-application/force-delete-stateful-set-pod.md
- docs/tasks/run-application/rolling-update-replication-controller.md
- docs/tasks/run-application/horizontal-pod-autoscale.md
- docs/tasks/run-application/horizontal-pod-autoscale-walkthrough.md
- docs/tasks/run-application/configure-pdb.md
- title: Run Jobs
section:
- docs/tasks/job/parallel-processing-expansion.md
- docs/tasks/job/coarse-parallel-processing-work-queue/index.md
- docs/tasks/job/fine-parallel-processing-work-queue/index.md
- title: Accessing Applications in a Cluster
- title: Access Applications in a Cluster
section:
- docs/tasks/access-application-cluster/web-ui-dashboard.md
- docs/tasks/access-application-cluster/access-cluster.md
- docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig.md
- docs/tasks/access-application-cluster/port-forward-access-application-cluster.md
- docs/tasks/access-application-cluster/load-balance-access-application-cluster.md
- docs/tasks/access-application-cluster/service-access-application-cluster.md
- docs/tasks/access-application-cluster/connecting-frontend-backend.md
- docs/tasks/access-application-cluster/create-external-load-balancer.md
- docs/tasks/access-application-cluster/configure-cloud-provider-firewall.md
- docs/tasks/access-application-cluster/list-all-running-container-images.md
- docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume.md
- title: Configuring DNS for a Cluster
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/cluster-dns
- title: Monitoring, Logging, and Debugging
- title: Monitor, Log, and Debug
section:
- docs/tasks/debug-application-cluster/resource-usage-monitoring.md
- docs/tasks/debug-application-cluster/get-shell-running-container.md
- docs/tasks/debug-application-cluster/monitor-node-health.md
- docs/tasks/debug-application-cluster/logging-stackdriver.md
- docs/tasks/debug-application-cluster/events-stackdriver.md
- docs/tasks/debug-application-cluster/logging-elasticsearch-kibana.md
- docs/tasks/debug-application-cluster/determine-reason-pod-failure.md
- docs/tasks/debug-application-cluster/debug-init-containers.md
- docs/tasks/debug-application-cluster/logging-stackdriver.md
- docs/tasks/debug-application-cluster/monitor-node-health.md
- docs/tasks/debug-application-cluster/logging-elasticsearch-kibana.md
- docs/tasks/debug-application-cluster/debug-pod-replication-controller.md
- docs/tasks/debug-application-cluster/debug-service.md
- docs/tasks/debug-application-cluster/debug-cluster.md
- docs/tasks/debug-application-cluster/debug-application.md
- docs/tasks/debug-application-cluster/debug-stateful-set.md
- docs/tasks/debug-application-cluster/debug-application-introspection.md
- docs/tasks/debug-application-cluster/audit.md
- title: Use Explorer to Examine the Runtime Environment
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/explorer
- title: Accessing the Kubernetes API
- title: Access and Extend the Kubernetes API
section:
- docs/tasks/access-kubernetes-api/http-proxy-access-api.md
- docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions.md
- docs/tasks/access-kubernetes-api/extend-api-third-party-resource.md
- docs/tasks/access-kubernetes-api/migrate-third-party-resource.md
- docs/tasks/access-kubernetes-api/configure-aggregation-layer.md
- docs/tasks/access-kubernetes-api/setup-extension-api-server.md
- title: Administering a Cluster
- title: TLS
section:
- docs/tasks/administer-cluster/overview.md
- docs/tasks/administer-cluster/assign-pods-nodes.md
- docs/tasks/tls/managing-tls-in-a-cluster.md
- title: Administer a Cluster
section:
- docs/tasks/administer-cluster/access-cluster-api.md
- docs/tasks/administer-cluster/access-cluster-services.md
- docs/tasks/administer-cluster/securing-a-cluster.md
- docs/tasks/administer-cluster/encrypt-data.md
- docs/tasks/administer-cluster/configure-upgrade-etcd.md
- docs/tasks/administer-cluster/apply-resource-quota-limit.md
- docs/tasks/administer-cluster/out-of-resource.md
- docs/tasks/administer-cluster/cpu-memory-limit.md
- docs/tasks/administer-cluster/reserve-compute-resources.md
- docs/tasks/administer-cluster/static-pod.md
- docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods.md
- docs/tasks/administer-cluster/cluster-management.md
- docs/tasks/administer-cluster/upgrade-1-6.md
- docs/tasks/administer-cluster/kubeadm-upgrade-1-7.md
- docs/tasks/administer-cluster/namespaces.md
- docs/tasks/administer-cluster/namespaces-walkthrough.md
- docs/tasks/administer-cluster/dns-horizontal-autoscaling.md
- docs/tasks/administer-cluster/safely-drain-node.md
- docs/tasks/administer-cluster/declare-network-policy.md
- docs/tasks/administer-cluster/calico-network-policy.md
- docs/tasks/administer-cluster/romana-network-policy.md
- docs/tasks/administer-cluster/weave-network-policy.md
- docs/tasks/administer-cluster/change-pv-reclaim-policy.md
- docs/tasks/administer-cluster/configure-pod-disruption-budget.md
- docs/tasks/administer-cluster/limit-storage-consumption.md
- docs/tasks/administer-cluster/change-default-storage-class.md
- docs/tasks/administer-cluster/share-configuration.md
- docs/tasks/administer-cluster/running-cloud-controller.md
- docs/tasks/administer-cluster/highly-available-master.md
- docs/tasks/administer-cluster/configure-multiple-schedulers.md
- docs/tasks/administer-cluster/ip-masq-agent.md
- docs/tasks/administer-cluster/dns-custom-nameservers.md
- title: Change Cluster Size
path: https://github.com/kubernetes/kubernetes/wiki/User-FAQ#how-do-i-change-the-size-of-my-cluster/
- title: Administering Federation
- title: Federation - Run an App on Multiple Clusters
section:
- docs/tasks/federation/federation-service-discovery.md
- docs/tasks/federation/set-up-cluster-federation-kubefed.md
- docs/tasks/federation/set-up-coredns-provider-federation.md
- docs/tasks/federation/set-up-placement-policies-federation.md
- docs/tasks/administer-federation/cluster.md
- docs/tasks/administer-federation/configmap.md
- docs/tasks/administer-federation/daemonset.md
- docs/tasks/administer-federation/deployment.md
@@ -78,10 +159,13 @@ toc:
- docs/tasks/administer-federation/replicaset.md
- docs/tasks/administer-federation/secret.md
- title: Managing Stateful Applications
- title: Manage Cluster Daemons
section:
- docs/tasks/manage-stateful-set/upgrade-pet-set-to-stateful-set.md
- docs/tasks/manage-stateful-set/scale-stateful-set.md
- docs/tasks/manage-stateful-set/deleting-a-statefulset.md
- docs/tasks/manage-stateful-set/debugging-a-statefulset.md
- docs/tasks/manage-stateful-set/delete-pods.md
- docs/tasks/manage-daemon/update-daemon-set.md
- docs/tasks/manage-daemon/rollback-daemon-set.md
- title: Manage GPUs
section:
- docs/tasks/manage-gpus/scheduling-gpus.md
+11 -11
View File
@@ -32,6 +32,9 @@ toc:
- title: Online Training Course
path: https://www.udacity.com/course/scalable-microservices-with-kubernetes--ud615
- docs/tutorials/stateless-application/hello-minikube.md
- title: Configuration
section:
- docs/tutorials/configuration/configure-redis-using-configmap.md
- title: Object Management Using kubectl
section:
- docs/tutorials/object-management-kubectl/object-management.md
@@ -40,25 +43,22 @@ toc:
- docs/tutorials/object-management-kubectl/declarative-object-management-configuration.md
- title: Stateless Applications
section:
- docs/tutorials/stateless-application/run-stateless-application-deployment.md
- docs/tutorials/stateless-application/expose-external-ip-address-service.md
- docs/tasks/run-application/run-stateless-application-deployment.md
- docs/tutorials/stateless-application/guestbook.md
- docs/tasks/access-application-cluster/service-access-application-cluster.md
- docs/tutorials/stateless-application/expose-external-ip-address.md
- docs/tutorials/stateless-application/run-stateless-ap-replication-controller.md
- title: Stateful Applications
section:
- docs/tutorials/stateful-application/basic-stateful-set.md
- docs/tutorials/stateful-application/run-stateful-application.md
- docs/tutorials/stateful-application/run-replicated-stateful-application.md
- docs/tasks/run-application/run-single-instance-stateful-application.md
- docs/tasks/run-application/run-replicated-stateful-application.md
- docs/tutorials/stateful-application/mysql-wordpress-persistent-volume.md
- docs/tutorials/stateful-application/cassandra.md
- docs/tutorials/stateful-application/zookeeper.md
- title: Connecting Applications
section:
- docs/tutorials/connecting-apps/connecting-frontend-backend.md
- title: Clusters
section:
- docs/tutorials/clusters/apparmor.md
- title: Services
section:
- docs/tutorials/services/source-ip.md
- title: Federated Cluster Administration
section:
- docs/tutorials/federation/set-up-cluster-federation-kubefed.md
-1
View File
@@ -1 +0,0 @@
***NOTE: This feature is beta in Kubernetes 1.5.***
+2
View File
@@ -0,0 +1,2 @@
The topics in the `/docs/api-reference/` section of the Kubernetes docs
are being moved to the [Reference](/docs/reference/) section. The content in this topic has moved to:
+28
View File
@@ -0,0 +1,28 @@
<a href="#" id="feature-state-dialog-link" class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-newwin"></span>{{ dialog_title }}</a>
<div id="feature-state-dialog" class="ui-dialog-content" title="{{ dialog_title }}">
{{ dialog_content | markdownify }}
</div>
{% raw %}<script>
$(function(){
$( "#feature-state-dialog" ).dialog({
autoOpen: false,
width: {% endraw %}{{ dialog_width | default: "600" }}{% raw %},
buttons: [
{
text: "Ok",
click: function() {
$( this ).dialog( "close" );
}
}
]
});
// Link to open the dialog
$( "#feature-state-dialog-link" ).click(function( event ) {
$( "#feature-state-dialog" ).dialog( "open" );
event.preventDefault();
});
});
</script>{% endraw %}
+13
View File
@@ -0,0 +1,13 @@
{% assign dialog_title = "alpha" %}
{% capture dialog_content %}
This feature is currently in a *alpha* state, meaning:
* The version names contain alpha (e.g. v1alpha1).
* Might be buggy. Enabling the feature may expose bugs. Disabled by default.
* Support for feature may be dropped at any time without notice.
* The API may change in incompatible ways in a later software release without notice.
* Recommended for use only in short-lived testing clusters, due to increased risk of bugs and lack of long-term support.
{% endcapture %}
**FEATURE STATE:** `Kubernetes {{ for_k8s_version | default: page.version }}` {% include feature-dialog.md %}
+14
View File
@@ -0,0 +1,14 @@
{% assign dialog_title = "beta" %}
{% capture dialog_content %}
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.**
{% endcapture %}
**FEATURE STATE:** `Kubernetes {{ for_k8s_version | default: page.version }}` {% include feature-dialog.md %}
+6
View File
@@ -0,0 +1,6 @@
{% assign dialog_title = "deprecated" %}
{% capture dialog_content %}
This feature is *deprecated*. For more information on this state, see the [Kubernetes Deprecation Policy](/docs/reference/deprecation-policy/).
{% endcapture %}
**DEPRECATION NOTICE:** As of `Kubernetes {{ for_k8s_version | default: page.version }}`, this has been {% include feature-dialog.md %}
+10
View File
@@ -0,0 +1,10 @@
{% assign dialog_title = "stable" %}
{% capture dialog_content %}
This feature is *stable*, meaning:
* The version name is vX where X is an integer.
* Stable versions of features will appear in released software for many subsequent versions.
{% endcapture %}
**FEATURE STATE:** `Kubernetes {{ for_k8s_version | default: page.version }}` {% include feature-dialog.md %}
@@ -0,0 +1,8 @@
This guide assumes that you have a running Kubernetes Cluster
Federation installation. If not, then head over to the
[federation admin guide](/docs/tutorials/federation/set-up-cluster-federation-kubefed/) to learn how to
bring up a cluster federation (or have your cluster administrator do
this for you).
Other tutorials, such as Kelsey Hightower's
[Federated Kubernetes Tutorial](https://github.com/kelseyhightower/kubernetes-cluster-federation),
might also help you create a Federated Kubernetes cluster.
+2
View File
@@ -0,0 +1,2 @@
The topics in the [Federation API](/docs/federation/api-reference/) section of the Kubernetes docs
are being moved to the [Reference](/docs/reference/) section. The content in this topic has moved to:
+5 -5
View File
@@ -1,8 +1,8 @@
<footer>
<main class="light-text">
<nav>
<a href="/docs/hellonode/">Get Started</a>
<a href="/docs/">Documentation</a>
<a href="/docs/tutorials/stateless-application/hello-minikube/">Get Started</a>
<a href="/docs/home/">Documentation</a>
<a href="http://blog.kubernetes.io/">Blog</a>
<a href="/partners/">Partners</a>
<a href="/community/">Community</a>
@@ -20,12 +20,12 @@
<a href="https://calendar.google.com/calendar/embed?src=nt2tcnbtbied3l6gi2h29slvc0%40group.calendar.google.com" class="calendar"><span>Events Calendar</span></a>
</div>
<div>
<a href="//get.k8s.io" class="button">Download K8s</a>
<a href="https://github.com/kubernetes/kubernetes" class="button">Contribute to the K8s codebase</a>
<a href="/docs/setup/pick-right-solution/" class="button">Get Kubernetes</a>
<a href="https://github.com/kubernetes/kubernetes" class="button">Contribute</a>
</div>
</div>
<div id="miceType" class="center">
&copy; {{ 'now' | date: "%Y" }} The Kubernetes Authors | Documentation Distributed under <a href="https://github.com/kubernetes/kubernetes.github.io/blob/master/LICENSE" class="light-text">CC BY 4.0</a>
&copy; {{ 'now' | date: "%Y" }} The Kubernetes Authors | Documentation Distributed under <a href="https://git.k8s.io/kubernetes.github.io/LICENSE" class="light-text">CC BY 4.0</a>
</div>
<div id="miceType" class="center">
Copyright &copy; {{ 'now' | date: "%Y" }} The Linux Foundation&reg;. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: <a href="https://www.linuxfoundation.org/trademark-usage" class="light-text">https://www.linuxfoundation.org/trademark-usage</a>
+13 -6
View File
@@ -2,12 +2,19 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" type="image/png" href="/images/favicon.png">
<link href='https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href='https://fonts.googleapis.com/css?family=Roboto+Mono' type='text/css'>
<link rel="stylesheet" href="/css/styles.css"/>
<link rel="stylesheet" href="/css/jquery-ui.min.css">
<link rel="stylesheet" href="/css/sweetalert.css">
{% if page.class == "gridPage" %}<link rel="stylesheet" href="/css/gridpage.css">{% endif %}
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900,900italic">
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto+Mono">
<link rel="stylesheet" type="text/css" href="/css/styles.css">
<link rel="stylesheet" type="text/css" href="/css/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="/css/sweetalert.css">
{% if page.class == "gridPage" %}<link rel="stylesheet" type="text/css" href="/css/gridpage.css">{% endif %}
{% if page.description %}
<meta name="description" content="{{ page.description }}" />
{% else %}
<meta name="description" content="{{ page.title }}" />
{% endif %}
<script src="/js/jquery-2.2.0.min.js"></script>
<script src="/js/jquery-ui.min.js"></script>
<script src="/js/script.js"></script>
+4 -4
View File
@@ -5,13 +5,13 @@
<div class="nav-buttons" data-auto-burger="primary">
<ul class="global-nav">
<li><a href="/docs/">Documentation</a></li>
<li><a href="/docs/home/">Documentation</a></li>
<li><a href="http://blog.kubernetes.io/">Blog</a></li>
<li><a href="/partners/">Partners</a></li>
<li><a href="/community/">Community</a></li>
<li><a href="/case-studies/">Case Studies</a></li>
</ul>
<!-- <a href="/docs/" class="button" id="viewDocs" data-auto-burger-exclude>View Documentation</a> -->
<!-- <a href="/docs/home" class="button" id="viewDocs" data-auto-burger-exclude>View Documentation</a> -->
<a href="/docs/tutorials/kubernetes-basics/" class="button" id="tryKubernetes" data-auto-burger-exclude>Try Kubernetes</a>
<button id="hamburger" onclick="kub.toggleMenu()" data-auto-burger-exclude><div></div></button>
</div>
@@ -19,11 +19,11 @@
<nav id="mainNav">
<main data-auto-burger="primary">
<div class="nav-box">
<h3><a href="/docs/hellonode/">Get Started</a></h3>
<h3><a href="/docs/tutorials/stateless-application/hello-minikube/">Get Started</a></h3>
<p>Ready to get your hands dirty? Build a simple Kubernetes cluster that runs "Hello World" for Node.js.</p>
</div>
<div class="nav-box">
<h3><a href="/docs/">Documentation</a></h3>
<h3><a href="/docs/home/">Documentation</a></h3>
<p>Learn how to use Kubernetes with the use of walkthroughs, samples, and reference documentation. You can even <a href="/editdocs/" data-auto-burger-exclude>help contribute to the docs</a>!</p>
</div>
<div class="nav-box">
+126
View File
@@ -391,6 +391,132 @@
logo: 'avinetworks',
link: 'https://kb.avinetworks.com/avi-vantage-openshift-installation-guide/',
blurb: 'Avis elastic application services fabric provides scalable, feature rich & integrated L4-7 networking for K8S environments.'
},
{
type: 1,
name: 'codecrux web technologies pvt ltd',
logo: 'codecrux',
link: 'http://codecrux.com/kubernetes/',
blurb: 'At CodeCrux we help your organization get the most out of Containers and Kubernetes, regardless of where you are in your journey'
},
{
type: 0,
name: 'Greenqloud',
logo: 'qstack',
link: 'https://www.qstack.com/application-orchestration/',
blurb: 'Qstack provides self-serviceable on-site Kubernetes clusters with an intuitive User Interface for Infrastructure and Kubernetes management.'
},
{
type: 1,
name: 'StackOVerdrive.io',
logo: 'stackoverdrive',
link: 'http://www.stackoverdrive.net/kubernetes-consulting/',
blurb: 'We are a devops consulting firm and we do alot of work with containers and Kunbernetes is one of our go to tools.'
},
{
type: 0,
name: 'F5 Networks',
logo: 'f5networks',
link: 'https://f5.com/about-us/news/press-kit',
blurb: 'Integration of our ADC services with Kubernetes'
},
{
type: 0,
name: 'StackIQ, Inc.',
logo: 'stackiq',
link: 'https://www.stackiq.com/kubernetes/',
blurb: 'With Stacki and the Stacki Pallet for Kubernetes, you can go from bare metal to containers in one step very quickly and easily.'
},
{
type: 0,
name: 'Cobe',
logo: 'cobe',
link: 'https://cobe.io/blog/posts/problems-within-your-kubernetes-cluster/',
blurb: 'Manage Kubernetes clusters with a live, searchable model that captures all relationships and performance data in full visualised context.'
},
{
type: 0,
name: 'Datawire',
logo: 'datawire',
link: 'http://www.datawire.io',
blurb: 'Datawires open source tools let your microservices developers be awesomely productive on Kubernetes, while letting ops sleep at night.'
},
{
type: 0,
name: 'Mashape, Inc.',
logo: 'mashape',
link: 'https://getkong.org/install/kubernetes/',
blurb: 'Kong is a scalable open source API layer that runs in front of any RESTful API and can be provisioned to a Kubernetes cluster.'
},
{
type: 0,
name: 'F5 Networks',
logo: 'f5networks',
link: 'http://github.com/f5networks',
blurb: 'We have a LB integration into Kubernetes.'
},
{
type: 1,
name: 'Lovable Tech',
logo: 'lovable',
link: 'https://drive.google.com/file/d/0BxCnAyMK1pgBTUFOdEZsUndLa01xMGJYZWtUVmVOdldadk80/view?usp=sharing',
blurb: ''
},
{
type: 0,
name: 'StackState',
logo: 'stackstate',
link: 'http://stackstate.com/platform/container-monitoring',
blurb: 'Operational Analytics across teams and tools. Includes topology visualization, root cause analysis and anomaly detection for Kubernetes.'
},
{
type: 1,
name: 'INEXCCO INC',
logo: 'inexcco',
link: 'https://www.inexcco.com/',
blurb: 'Strong DevOps and Cloud talent working with couple clients on kubernetes and helm implementations. '
},
{
type: 0,
name: 'Bitnami',
logo: 'bitnami',
link: 'http://bitnami.com/kubernetes',
blurb: 'Bitnami brings a catalog of trusted, up to date, and easy to use applications and application building blocks to Kubernetes.'
},
{
type: 1,
name: 'Nebulaworks',
logo: 'nebulaworks',
link: 'http://www.nebulaworks.com/container-platforms',
blurb: 'Nebulaworks provides services to help the enterprise adopt modern container platforms and optimized processes to enable innovation at scale.'
},
{
type: 1,
name: 'EASYNUBE LTD',
logo: 'easynube',
link: 'https://www.carrefour.es/supermercado/?ic_source=portal-home&ic_medium=menu-links&ic_content=section-home',
blurb: 'Provide consultancy, architecture and implementation'
},
{
type: 1,
name: 'Opcito Technologies',
logo: 'opcito',
link: 'http://www.opcito.com/kubernetes/',
blurb: 'Opcito is a software consultancy that uses Kubernetes to help organisations build, architect & deploy highly scalable applications.'
},
{
type: 0,
name: 'Huawei Technologies Co., Ltd.',
logo: 'huawei',
link: 'http://developer.huawei.com/ict/en/site-paas',
blurb: 'FusionStage is an enterprise-grade PaaS, the core of which is based on open source container technology including Kubernetes and Docker.'
},
{
type: 0,
name: '{code} by Dell EMC',
logo: 'codedellemc',
link: 'https://blog.codedellemc.com',
blurb: 'Respected as a thought leader in storage persistence for containerized applications. Contributed significant work to K8 and Ecosystem'
}
]
-17
View File
@@ -1,17 +0,0 @@
{% assign tabsraw = tabspec | newline_to_br | split: '<br />' %}
{% assign tabsetname = tabsraw[0] %}
<script>$(function(){$("#{{tabsetname}}").tabs();});</script>
<div id="{{tabsetname}}">
<ul>{% for tab in tabsraw offset:1 %}{% assign thisTab = tab | split: ',' %}
<li><a href="#{{ thisTab[0] | strip | handleize }}">{{ thisTab[0] | strip}}</a></li>{% endfor %}
</ul>
{% for tab in tabsraw offset:1 %}
{% assign thisTab = tab | split: ',' %}
{% assign tabLang=thisTab[1] %}
{% assign tabFile=thisTab[2] %}
{% assign tabGHLink=thisTab[3] %}
<div id="{{ thisTab[0] | strip | handleize }}">
{% include code.html language=tabLang file=tabFile ghlink=tabGHLink %}
</div>
{% endfor %}
</div>
+15
View File
@@ -0,0 +1,15 @@
{% comment %} See /docs/tabs-example.md for usage example. {% endcomment %}
{% assign tab_set_id = tab_set_name | default: "tabset" | slugify %}
<div id="{{tab_set_id}}">
<ul>
{% for name in tab_names %}
<li><a href="#{{tab_set_id}}-{{forloop.index0}}">{{ name | strip }}</a></li>
{% endfor %}
</ul>
{% for content in tab_contents %}
<div id="{{tab_set_id}}-{{forloop.index0}}">
{{ content | markdownify }}
</div>
{% endfor %}
</div>
<script>$(function(){$("#{{tab_set_id}}").tabs();});</script>
-121
View File
@@ -1,121 +0,0 @@
{% if page.cards %}<!-- check for this before going any further; if not present, skip to else at bottom -->
<style>
h2, h3, h4 {
border-bottom: 0px !important;
font-size: 22px !important;
padding-bottom: 20px !important;
}
.colContainer {
padding-top:2px;
padding-left: 2px;
overflow: auto;
}
#samples a {
color: #000;
}
.col3rd {
display: block;
float: left;
margin-right: 30px;
margin-bottom: 30px;
overflow: hidden;
}
.col3rd h3, .col2nd h3 {
margin-bottom: 0px !important;
}
.col3rd .button, .col2nd .button {
margin-top: 20px;
border-radius: 2px;
}
.col3rd p, .col2nd p {
margin-left: 2px;
}
.col2nd {
display: block;
width: 400px;
float: left;
margin-right: 30px;
margin-bottom: 30px;
overflow: hidden;
}
.shadowbox {
width: 250px;
display: inline;
float: left;
text-transform: none;
font-weight: bold;
text-overflow: ellipsis;
overflow: hidden;
line-height: 24px;
position: relative;
display: block;
cursor: pointer;
box-shadow: 0 2px 2px rgba(0,0,0,.24),0 0 2px rgba(0,0,0,.12);
border-radius: 5px;
background: #fff;
transition: all .3s;
padding: 16px;
margin: 0 16px 16px 0;
text-decoration: none;
letter-spacing: .01em;
height: 220px;
}
.shadowbox img {
min-width: 100px;
max-width: 100px;
max-height: 50px;
margin-right: 5px;
margin-bottom: 5px;
float: left;
}
</style>
<div class="colContainer">
{% for card in page.cards %}{% if card.title %}
<div class="col3rd shadowbox">
<h3>{{card.title}}</h3>
<p>{% if card.image %}<img src="{{card.image}}">{% endif %}{{card.description}}</p>
</div>
{% endif %}{% endfor %}
</div>
{% else %}
### ERROR: You must define "cards" front-matter YAML
{: style="color:red" }
This template requires that you insert YAML at the top of your document
that defines the "cards" you'd like to display on the page. The cards will
render in clickable boxes.
To get rid of this message and take advantage of this template, define `cards`:
```yaml
---
cards:
- progression: no
- card:
title: Mean Stack
image: /docs/meanstack/image_0.png
description: Lorem ipsum dolor it verberum.
- card:
title: Guestbook + Redis
image: /images/docs/redis.svg
description: Lorem ipsum dolor it verberum.
- card:
title: Cloud Native Cassandra
image: /images/docs/cassandra.svg
description: Lorem ipsum dolor it verberum.
- card:
title: WordPress + MySQL
image: /images/docs/wordpress.svg
description: Lorem ipsum dolor it verberum.
---
```
**Note:** If `progression` is set to `yes` then a "Start Here!" icon will be
placed on the first card and arrows suggesting linear reading will be overlayed
between the other cards, telling the reader that they should explore the content
in a certain order.
{% endif %}
+2 -2
View File
@@ -4,8 +4,8 @@
<tr>
<td>
<p><b>NOTICE</b></p>
<p>As of March 14, 2017, the Kubernetes SIG-Docs-Maintainers group have begun migration of the User Guide content as announced previously to the <a href="https://github.com/kubernetes/community/tree/master/sig-docs">SIG Docs community</a> through the <a href="https://groups.google.com/forum/#!forum/kubernetes-sig-docs">kubernetes-sig-docs</a> group and <a href="https://kubernetes.slack.com/messages/sig-docs/">kubernetes.slack.com #sig-docs</a> channel.</p>
<p>The user guides within this section are being refactored into topics within Tutorials, Tasks, and Concepts. Anything that has been moved will have a notice placed in its previous location as well as a link to its new location. The reorganization implements the table of contents (ToC) outlined in the <a href="https://docs.google.com/a/google.com/document/d/18hRCIorVarExB2eBVHTUR6eEJ2VVk5xq1iBmkQv8O6I/edit?usp=sharing">kubernetes-docs-toc</a> document and should improve the documentation's findability and readability for a wider range of audiences.</p>
<p>As of March 14, 2017, the Kubernetes SIG-Docs-Maintainers group have begun migration of the User Guide content as announced previously to the <a href="https://git.k8s.io/community/sig-docs">SIG Docs community</a> through the <a href="https://groups.google.com/forum/#!forum/kubernetes-sig-docs">kubernetes-sig-docs</a> group and <a href="https://kubernetes.slack.com/messages/sig-docs/">kubernetes.slack.com #sig-docs</a> channel.</p>
<p>The user guides within this section are being refactored into topics within Tutorials, Tasks, and Concepts. Anything that has been moved will have a notice placed in its previous location as well as a link to its new location. The reorganization implements a new table of contents and should improve the documentation's findability and readability for a wider range of audiences.</p>
<p>For any questions, please contact: <a href="mailto:kubernetes-sig-docs@googlegroups.com">kubernetes-sig-docs@googlegroups.com</a></p>
</td>
</tr>
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+1 -1
View File
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+1 -1
View File
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+1 -1
View File
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+1 -1
View File
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
@@ -3557,14 +3557,14 @@ Populated by the system when a graceful deletion is requested. Read-only. More i
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">postStart</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: <a href="http://kubernetes.io/docs/user-guide/container-environment#hook-details">http://kubernetes.io/docs/user-guide/container-environment#hook-details</a></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: <a href="http://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks#hook-details">http://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks#hook-details</a></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_v1_handler">v1.Handler</a></p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">preStop</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PreStop is called immediately before a container is terminated. The container is terminated after the handler completes. The reason for termination is passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. Other management of the container blocks until the hook completes. More info: <a href="http://kubernetes.io/docs/user-guide/container-environment#hook-details">http://kubernetes.io/docs/user-guide/container-environment#hook-details</a></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PreStop is called immediately before a container is terminated. The container is terminated after the handler completes. The reason for termination is passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. Other management of the container blocks until the hook completes. More info: <a href="http://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks#hook-details">http://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks#hook-details</a></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_v1_handler">v1.Handler</a></p></td>
<td class="tableblock halign-left valign-top"></td>
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+1 -1
View File
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+1 -1
View File
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+5 -10
View File
@@ -22,15 +22,12 @@
<h5>{{ toc.abstract }}</h5>
<div id="vendorStrip" class="light-text">
<ul>
<li><a href="/docs/" {% if toc.bigheader == "Kubernetes Documentation" %}class="YAH"{% endif %}>DOCS HOME</a></li>
<li><a href="/docs/user-guide/" {% if toc.bigheader == "Guides" %}class="YAH"{% endif %}>GUIDES</a></li>
<li><a href="/docs/tutorials/" {% if toc.bigheader == "Tutorials" %}class="YAH"{% endif %}>TUTORIALS</a></li>
<li><a href="/docs/tasks/" {% if toc.bigheader == "Tasks" %}class="YAH"{% endif %}>TASKS</a></li>
<li><a href="/docs/home/" {% if toc.bigheader == "Kubernetes Documentation" %}class="YAH"{% endif %}>HOME</a></li>
<li><a href="/docs/setup/" {% if toc.bigheader == "Setup" %}class="YAH"{% endif %}>SETUP</a></li>
<li><a href="/docs/concepts/" {% if toc.bigheader == "Concepts" %}class="YAH"{% endif %}>CONCEPTS</a></li>
<li><a href="/docs/tasks/" {% if toc.bigheader == "Tasks" %}class="YAH"{% endif %}>TASKS</a></li>
<li><a href="/docs/tutorials/" {% if toc.bigheader == "Tutorials" %}class="YAH"{% endif %}>TUTORIALS</a></li>
<li><a href="/docs/reference/" {% if toc.bigheader == "Reference Documentation" %}class="YAH"{% endif %}>REFERENCE</a></li>
<li><a href="/docs/tools/" {% if toc.bigheader == "Tools" %}class="YAH"{% endif %}>TOOLS</a></li>
<li><a href="/docs/samples/" {% if toc.bigheader == "Samples" %}class="YAH"{% endif %}>SAMPLES</a></li>
<li><a href="/docs/troubleshooting/" {% if toc.bigheader == "Support" %}class="YAH"{% endif %}>SUPPORT</a></li>
</ul>
<div id="searchBox">
<input type="text" id="search" placeholder="Search" onkeydown="if (event.keyCode==13) window.location.replace('/docs/search/?q=' + this.value)" autofocus="autofocus">
@@ -41,9 +38,7 @@
<section id="encyclopedia">
<div id="docsToc">
<div class="pi-accordion">
{% if toc.bigheader != "Kubernetes Documentation" %}
{% include_cached tree.html tree=toc.toc %}
{% endif %}
</div> <!-- /pi-accordion -->
<button class="push-menu-close-button" onclick="kub.toggleToc()"></button>
</div> <!-- /docsToc -->
@@ -69,7 +64,7 @@
(function(d,c,j){if(!document.getElementById(j)){var pd=d.createElement(c),s;pd.id=j;pd.src=('https:'==document.location.protocol)?'https://polldaddy.com/js/rating/rating.js':'http://i0.poll.fm/js/rating/rating.js';s=document.getElementsByTagName(c)[0];s.parentNode.insertBefore(pd,s);}}(document,'script','pd-rating-js'));
</script>
<a href="" onclick="window.open('https://github.com/kubernetes/kubernetes.github.io/issues/new?title=Issue%20with%20' +
window.location.pathname)" class="button issue">Create an Issue</a>
'k8s.io'+window.location.pathname)" class="button issue">Create an Issue</a>
<a href="/editdocs#{{ page.path }}" class="button issue">Edit this Page</a>
{% endif %}
</div>
+1
View File
@@ -0,0 +1 @@
{{ content }}
+280 -5
View File
@@ -864,6 +864,9 @@ dd
font-size: inherit
background-color: transparent
.includecode
table-layout: fixed
.includecode, .includecode th, .includecode td
padding: 0 !important
@@ -965,8 +968,8 @@ dd
//font-weight: 700
text-decoration: underline
a:visited
color: blueviolet
// a:visited
// color: blueviolet
a.button
border-radius: 2px
@@ -1302,6 +1305,270 @@ $feature-box-div-margin-bottom: 40px
width: 100%
height: 100%
// Dialog
.ui-icon
display: inline-block !important
#feature-state-dialog-link
text-decoration: none !important
padding: 5px !important
a:visited
color: #454545 !important
a code
display: inline-block !important
box-sizing: border-box !important
background-color: #f7f7f7 !important
color: #303030 !important
font-family: "Roboto Mono", monospace !important
vertical-align: baseline !important
font-size: 14px !important
font-weight: bold !important
padding: 0px 4px !important
#feature-state-dialog
background: #fff !important
border: 1px solid #ddd !important
padding: 0.5em 1em !important
ul, li
list-style: disc !important
margin: 4px 12px !important
p
margin: 8px 0px !important
code
display: inline-block !important
box-sizing: border-box !important
background-color: #f7f7f7 !important
color: #303030 !important
font-family: "Roboto Mono", monospace !important
vertical-align: baseline !important
font-size: 14px !important
font-weight: bold !important
padding: 0px 4px !important
.ui-dialog
background: #f7f7f7 !important
padding: 0.5em
.ui-dialog-content
position: relative
float: right
width: 100%
$toc-margin: 15px
$header-clearance: $header-height + 20px
* + h2, * + h3, * + h4, * + h5, * + h6
margin-top: 30px
h1, h2, h3, h4, h5, h6
line-height: normal
font-weight: 500
margin-bottom: 30px
padding-bottom: 10px
// Make sure anchor links aren't hidden by the header
&:before
display: block
content: " "
margin-top: -$header-clearance
height: $header-clearance
visibility: hidden
h1,h2
border-bottom: 1px solid #cccccc
h1
font-size: 32px
padding-right: 60px
h2
font-size: 28px
h3
font-size: 24px
font-weight: 300
margin-bottom: 5px
h4
font-size: 20px
margin-bottom: 0px
h5, h6
font-size: 16px
font-weight: 500
p
font-size: 16px
font-weight: 300
line-height: 1.75em
p + p
margin-top: 10px
code
display: inline-block
box-sizing: border-box
background-color: $light-grey
color: $dark-grey
font-family: $mono-font
vertical-align: baseline
font-size: 14px
font-weight: bold
padding: 2px 4px
a code
color: $blue
text-decoration: underline
pre .pi, pre .s
margin: 0
padding: 0
.highlight code span, code, pre code
font-family: "Roboto Mono", monospace
code, pre code
color: #303030
pre code
padding: 0
pre
background-color: #f7f7f7
display: block
margin: 20px 0
padding: 15px
position: relative
overflow-x: auto
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code
font-family: inherit
font-size: inherit
background-color: transparent
.includecode
table-layout: fixed
.includecode, .includecode th, .includecode td
padding: 0 !important
.includecode th
text-align: right !important
padding: 10px !important
.includecode th a, .includecode th a code
color: white !important
background-color: transparent !important
.includecode pre
margin: 0 !important
ul li
list-style: disc
ol li
list-style: decimal
ul, ol
margin: 20px 0
padding-left: 30px
font-weight: 300
ul ul, ol ol, ul ol, ol ul
margin: 0.75em 0
li
margin-bottom: 0.75em
font-size: 16px
line-height: 1.75em
table
width: 100%
border: 1px solid #ccc
border-spacing: 0
margin-top: 30px
margin-bottom: 30px
thead, tr:nth-child(even)
background-color: $light-grey
thead
background-color: #555
color: white
th, td
padding: 8px
text-align: left
margin: 0
th
font-weight: normal
td
font-size: 0.85em
#editPageButton
position: absolute
top: -25px
right: 5px
width: 50px
height: 50px
line-height: 50px
border-radius: 50%
white-space: nowrap
text-indent: 50px
overflow: hidden
background: $blue url(/images/icon-pencil.svg) no-repeat
background-position: 12px 10px
background-size: 29px 29px
#markdown-toc
margin-bottom: 20px
ul, li
list-style: disc
color: $blue
ul
padding: 0 15px
margin: 0
li
padding: 0
line-height: 1.5em
margin-bottom: 0
a
position: relative
color: $blue
font-weight: 700
img
max-width: 100%
a
//font-weight: 700
text-decoration: underline
// a:visited
// color: blueviolet
a.button
border-radius: 2px
text-decoration: none
&:visited
color: white
a.issue
margin-left: 0px
.ui-dialog-buttonpane
background: #f7f7f7 !important
// Tabs
.ui-widget-header
background: transparent !important
@@ -1313,19 +1580,27 @@ $feature-box-div-margin-bottom: 40px
padding: 0px !important
list-style: none !important
margin-bottom: 0px !important
margin-left: 1px !important
margin-left: 4px !important
.ui-tabs-panel
ul li
list-style: disc !important
ol li
list-style: decimal !important
.ui-widget-content
border: 0px !important
.ui-widget-content
table
margin: 0px !important
.ui-tabs .ui-tabs-panel
padding: 0px !important
border: 1px solid #ccc !important
.ui-tabs-anchor
text-decoration: none !important
// Talk to us
#talkToUs
h3, h4
+127
View File
@@ -0,0 +1,127 @@
---
title: Box Case Study
layout: none
class: gridPage
cid: caseStudies
---
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/css/style_box.css">
<title>Box Case Study</title>
</head>
<body>
<div class="banner1">
<h1>CASE STUDY: <img src="/images/box_logo.png" class="logo" width="10%" style="margin-bottom:-6px"><br>
<div class="subhead">An Early Adopter Envisions
a New Cloud Platform</div>
</h1>
</div>
<div class="details">
Company &nbsp;<b>Box</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Redwood City, California</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Technology</b>
</div>
<hr>
<section class="section1">
<div class="cols">
<div class="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. <a href="https://www.box.com/home">Box</a> was built primarily with bare metal inside the companys 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. "Its been a huge challenge because different clouds, especially bare metal, have very different interfaces."
<br>
</div>
<div class="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, <a href="http://kubernetes.io/">Kubernetes</a> container orchestration. Kubernetes, Ghods says, has allowed Boxs 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 were working on getting it to an hour."
</div>
</div>
</section>
<div class="banner2">
<div class="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&nbsp;well."<br><br><span style="font-size:15px;letter-spacing:0.08em">- SAM GHOUDS, CO-FOUNDER AND SERVICES ARCHITECT OF BOX</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>In the summer of 2014, Box was feeling the pain of a decades worth of hardware and software infrastructure that wasnt keeping up with the companys needs.</h2>
A platform that allows its more than 50 million users (including governments and big businesses like <a href="https://www.ge.com/">General Electric</a>) to manage and share content in the cloud, Box was originally a <a href="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 weve been expanding into regions around the globe, and as the public cloud wars have been heating up, weve 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. "Its been a huge challenge thus far because all these different providers, especially bare metal, have very different interfaces and ways in which you work with them."<br><br>
Boxs cloud native journey accelerated that June, when Ghods attended <a href="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 <a href="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 Googles internal container orchestrator Borg. "The fact that on day one it was designed to run on bare metal just as well as <a href="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 <a href="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 <a href="https://www.openshift.com/">OpenShift</a> or <a href="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 Ghodss 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 wouldnt fail synchronous incoming requests from customers."
</div>
</section>
<div class="banner3">
<div class="banner3text">
"As weve been expanding into regions around the globe, and as the public cloud wars have been heating up, weve 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>
<section class="section3">
<div class="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 thats ended up to about 100 servers in each data center that are dedicated purely to Kubernetes. And thats going to be expanding a lot over the next 12 months, probably to 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&nbsp;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><div class="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 wed 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 didnt 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 <a href="https://www.nagios.org/">Nagios</a>, our monitoring infrastructure. But overall Kubernetes has been remarkably flexible with fitting into many of our constraints, and weve 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 its not very incremental," Ghods says. "Were 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 its important to keep in mind that its not nearly as proven as many other solutions out there. You cant say how long this or that company took to do it because there just arent that many yet. Our team had to really fight for resources because our project was a bit of a moonshot."
</div>
</section>
<div class="banner4">
<div class="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 weve been running it very successfully on our bare metal infrastructure."
</div>
</div>
<section class="section4">
<div class="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 Boxs 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&nbsp;doesnt.</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, its 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 were 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&nbsp;it."</br></br>
By Ghodss estimate, Box is still several years away from his goal of being a 90-plus percent Kubernetes shop. "Were 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 well likely be between 20 to 50 percent. Were working hard on enabling all stateless service use cases, and shift our focus to stateful services after&nbsp;that."
</div>
</section>
<div class="banner5">
<div class="banner5text">
"Ghods predicts that Kubernetes has the opportunity to be the new cloud platform. '...because its 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>
<section class="section5">
<div class="fullcol">
In fact, thats 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 dont think people have seen the full potential of whats possible when you can program against one single interface," he says. "The same way <a href="https://aws.amazon.com/">AWS</a> changed infrastructure so that you dont have to think about servers or cabinets or networking equipment anymore, Kubernetes enables you to focus exclusively on the containers that youre running, which is pretty exciting. Thats 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 <a href="https://coreos.com/">CoreOS</a>s etcd operator. "I honestly believe its the most exciting thing Ive seen in cloud infrastructure," he says, "because its 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 dont 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 doesnt make sense to deviate from Linux because its 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 youre 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 its really going to be shocking if you run your infrastructure any other way."
</div>
</section>
</body>
</html>
+138
View File
@@ -0,0 +1,138 @@
---
title: GolfNow Case Study
layout: none
class: gridPage
cid: caseStudies
---
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/css/style_golfnow.css">
<title>GolfNow Case Study</title>
</head>
<body>
<div class="banner1">
<h1>CASE STUDY: <img src="/images/golfnow_logo.png" class="logo" width="20%" style="margin-bottom:-6px"><br>
<div class="subhead">Saving Time and Money with Cloud Native Infrastructure</div>
</h1>
</div>
<div class="details">
Company&nbsp;<b>GolfNow</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location&nbsp;<b>Orlando, Florida</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry&nbsp;<b>Golf Industry Technology and Services Provider</b>
</div>
<hr>
<section class="section1">
<div class="cols">
<div class="col1">
<h2>Challenge</h2>
A member of the <a href="http://www.nbcunicareers.com/our-businesses/nbc-sports-group">NBC Sports Group</a>, <a href="https://www.golfnow.com/">GolfNow</a> is the golf industrys 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, GolfNows monolithic application became problematic. "We kept growing our infrastructure vertically rather than horizontally, and the cost of doing business became problematic," says Sheriff Mohamed, GolfNows Director, Architecture. "We wanted the ability to more easily expand globally."
<br>
</div>
<div class="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 <a href="https://www.docker.com/">Docker</a> and <a href="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>
<div class="banner2">
<div class="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><span style="font-size:15px;letter-spacing:0.08em">- SHERIFF MOHAMED, DIRECTOR, ARCHITECTURE AT GOLFNOW</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>Its not every day that you can say youve slashed an operating expense by half.</h2>
But Sheriff Mohamed and Josh Chandler did just that when they helped lead their company, <a href="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, GolfNows Director, Architecture. "Our costs were growing exponentially. And on top of that, we had to build a Disaster Recovery (DR) environment, which then meant wed 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 GolfNows 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 GolfNows 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 <a href="https://www.microsoft.com/net">C#.NET</a> and <a href="https://www.microsoft.com/en-cy/sql-server/sql-server-2016">SQL Server</a> since it didnt run very well on Linux, where everything container was running smoothly."
<br> <br>
To that end, the team shifted to working with <a href="https://nodejs.org/">Node.js</a>, the open-source, cross-platform JavaScript runtime environment for developing tools and applications, and <a href="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 thats the way the industry is heading."
</div>
</section>
<div class="banner3">
<div class="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 didnt have to pay extra money at all.'"
</div>
</div>
<section class="section3">
<div class="fullcol">
GolfNows 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 companys needs. Sheriff says the first few options they tried were either too heavy or "didnt feel quite right." In late summer 2015, they discovered the just-released <a href="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, <a href="http://www.nbc.com/">NBC</a>, GolfNows parent company, also asked them to comparison shop with another company. Sheriff and his team liked the competing companys platform user interface, but didnt like that its platform would not allow containers to run natively on Docker. With no clear decision in sight, Sheriffs VP at GolfNow, Steve McElwee, set up a three-month trial during which a GolfNow team (consisting of Sheriff and Josh, whos now Lead Architect, Open Platforms) would build out a Kubernetes environment, and a large NBC team would build out one with the other companys 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, its 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 wasnt quite finished yet. At the time, it was running in <a href="https://devcenter.heroku.com/articles/mongohq">Heroku Compose</a> and other third-party services—resulting in a large monthly bill.
</div>
</section>
<div class="banner4">
<div class="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 havent come from the Kubernetes world you wouldnt believe me.' Sheriff puts it in these terms: 'Before Kubernetes I wasnt sleeping at night, literally. I was woken up all the time, because things were down. After Kubernetes, Ive been sleeping at night.'"
</div>
</div>
<section class="section4">
<div class="fullcol">
"The goal was to take all of that out and put it within this new platform weve created with Kubernetes on <a href="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. Wed 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 didnt 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 havent come from the Kubernetes world you wouldnt believe me." Sheriff puts it in these terms: "Before Kubernetes I wasnt sleeping at night, literally. I was woken up all the time, because things were down. After Kubernetes, Ive 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 <a href="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 <a href="https://github.com/drone/drone">Drone</a>, an open-source continuous delivery platform, to make it more developer-centric. "Now theyre able to manage configuration, theyre 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>
<div class="banner5">
<div class="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. Theyre faster, theyre more resilient.'"
</div>
</div>
<section class="section5">
<div class="fullcol">
And long-term, Sheriff has an even bigger goal for getting more people into the Kubernetes fold. "Were 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 thats 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. Weve tried to simplify the security configuration as much as possible. We hope this will be our major thank you to Kubernetes, for everything youve 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 theyve learned: "Youve 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 cant have people who are half in, half out." And if you dont 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. Theyre faster, theyre more resilient."
</div>
</section>
</body>
</html>
+12 -6
View File
@@ -14,17 +14,23 @@ cid: caseStudies
<main>
<div class="content">
<div class="case-studies">
<div class="case-study">
<img src="/images/case_studies/golfnow.png" alt="GolfNow">
<p class="quote">"We can move data centers in incredible amounts of time. If you havent come from the Kubernetes world and I tell you this is what Ive been doing, you wouldnt believe me."</p>
<!--<p class="attrib">— Josh Chandler, Lead Architect, Open Platforms at GolfNow</p>-->
<a href="/case-studies/golfnow/">Read about GolfNow</a>
</div>
<div class="case-study">
<img src="/images/case_studies/pearson.png" alt="Pearson">
<p class="quote">"We chose Kubernetes because of its flexibility, ease of management and the way it improves our engineers' productivity."</p>
<!--<p class="attrib">— Chris Jackson, Director for Cloud Product Engineering, Pearson</p>-->
<a href="./pearson/">Read about Pearson</a>
<a href="/case-studies/pearson/">Read about Pearson</a>
</div>
<div class="case-study">
<img src="/images/case_studies/wikimedia.png" alt="Wikimedia">
<p class="quote">"With Kubernetes, we're simplifying our environment and making it easier for developers to build the tools that make wikis run better."</p>
<!--<p class="attrib">— Yuvi Panda, Operations Engineer, Wikimedia Foundation</p>-->
<a href="./wikimedia/">Read about Wikimedia</a>
<a href="/case-studies/wikimedia/">Read about Wikimedia</a>
</div>
<div class="case-study">
<img src="/images/case_studies/ebay.png" alt="eBay">
@@ -33,8 +39,8 @@ cid: caseStudies
</div>
<div class="case-study">
<img src="/images/case_studies/box.png" alt="box">
<p class="quote">Kubernetes at Box: Microservices at Maximum Velocity</p>
<a href="https://blog.box.com/blog/kubernetes-box-microservices-maximum-velocity/">Read about Box</a>
<p class="quote">"Kubernetes has the opportunity to be the new cloud platform. Because its a never-before-seen level of automation and intelligence surrounding infrastructure that is portable and agnostic to every way you can run your infrastructure."</p>
<a href="/case-studies/box/">Read about Box</a>
</div>
</div>
</div>
@@ -82,8 +88,8 @@ cid: caseStudies
<a target="_blank" href="https://cloud.google.com/customers/philips/"><img src="/images/case_studies/philips_logo.png" alt="Philips"></a>
<a target="_blank" href="https://youtu.be/EC_ZRLsw58M"><img src="/images/case_studies/buffer_logo.png" alt="buffer"></a>
<a target="_blank" href="https://youtu.be/lmeFkH-rHII"><img src="/images/case_studies/comcast_logo.png" alt="Comcast"></a>
<a href="./wikimedia/"><img src="/images/case_studies/wikimedia_logo.png" alt="Wikimedia"></a>
<a href="./pearson/"><img src="/images/case_studies/pearson_logo.png" alt="Pearson"></a>
<a href="/case-studies/wikimedia/"><img src="/images/case_studies/wikimedia_logo.png" alt="Wikimedia"></a>
<a href="/case-studies/pearson/"><img src="/images/case_studies/pearson_logo.png" alt="Pearson"></a>
<a target="_blank" href="#" onclick="event.preventDefault(); kub.showVideo()"><img src="/images/case_studies/zulily_logo.png" alt="zulily"></a>
<a target="_blank" href="http://www.nextplatform.com/2015/11/12/inside-ebays-shift-to-kubernetes-and-containers-atop-openstack/"><img src="/images/case_studies/ebay_logo.png" alt="Ebay"></a>
<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/e/1FAIpQLScuI7Ye3VQHQTwBASrgkjQDSS5TP0g3AXfFhwSM9YpHgxRKFA/viewform" class="tell-your-story"><img src="/images/case_studies/story.png" alt="Tell your story"></a>
+18
View File
@@ -0,0 +1,18 @@
## 如何参与 Kubernetes 文档汉化工作
我们非常欢迎,非常希望您参与 Kubernetes 文档汉化做出贡献。
您可以单击屏幕右上角的 **Fork** 按钮,在您的 Github 账户中创建一外名为 *fork* 的存储库副本。在您的分支中进行更改,当您准备好将这些更改发送给我们时,请转到您的仓库创建新的 pull 请求,让我们知道这一点。
关于更多的贡献信息,请参阅:
* [贡献于 Kubernetes 文档](http://kubernetes.io/editdocs/)
* [创建文档拉取请求](http://kubernetes.io/docs/contribute/create-pull-request/)
* [写一个新的话题](http://kubernetes.io/docs/contribute/write-new-topic/)
* [暂停您的文档更改](http://kubernetes.io/docs/contribute/stage-documentation-changes/)
* [更用页面模板](http://kubernetes.io/docs/contribute/page-templates/)
* [文档样式指南](http://kubernetes.io/docs/contribute/style-guide/)
## 谢谢您!
Kubernetes 在社区参与中茁壮成长,我们非常感谢您对我们的网站和文档的贡献!
+2
View File
@@ -0,0 +1,2 @@
Kubernetes 文档的 [用户指南](/docs/user-guide/) 部分中的主题将被移动到 [任务](/docs/tasks/)、[教程](/docs/tutorials/)和
[概念](/docs/concepts) 部分。 本主题的内容已转移到:
@@ -0,0 +1,118 @@
---
assignees:
- k8s-merge-robot
title: 认识 Kubernetes?
---
Kubernetes 是一个跨主机集群的 [开源的容器调度平台,它可以自动化应用容器的部署、扩展和操作](http://www.slideshare.net/BrianGrant11/wso2con-us-2015-kubernetes-a-platform-for-automating-deployment-scaling-and-operations) , 提供以容器为中心的基础架构。
使用 Kubernetes, 您可以快速高效地响应客户需求:
- 快速、可预测地部署您的应用程序
- 拥有即时扩展应用程序的能力
- 不影响现有业务的情况下,无缝地发布新功能
- 优化硬件资源,降低成本
我们的目标是构建一个软件和工具的生态系统,以减轻您在公共云或私有云运行应用程序的负担。
#### Kubernetes 具有如下特点:
* **便携性**: 无论公有云、私有云、混合云还是多云架构都全面支持
* **可扩展**: 它是模块化、可插拔、可挂载、可组合的,支持各种形式的扩展
* **自修复**: 它可以自保持应用状态、可自重启、自复制、自缩放的,通过声明式语法提供了强大的自修复能力
Kubernetes 项目由 Google 公司在 2014 年启动。Kubernetes 建立在 [Google 公司超过十余年的运维经验基础之上,Google 所有的应用都运行在容器上](https://research.google.com/pubs/pub43438.html), 再与社区中最好的想法和实践相结合,也许它是最受欢迎的容器平台。
##### 准备好 [开始](/docs/getting-started-guides/)?
## 为什么是容器?
查看此文,可以了解为什么您要使用容器 [容器](http://aucouranton.com/2014/06/13/linux-containers-parallels-lxc-openvz-docker-and-more/)?
![为什么是容器?](/images/docs/why_containers.svg)
*传统* 部署应用程序的方式,一般是使用操作系统自带的包管理器在主机上安装应用依赖,之后再安装应用程序。这无疑将应用程序的可执行文件、应用的配置、应用依赖库和应用的生命周期与宿主机操作系统进行了紧耦合。在此情境下,可以通过构建不可改变的虚拟机镜像版本,通过镜像版本实现可预测的发布和回滚,但是虚拟机实在是太重量级了,且镜像体积太庞大,便捷性差。
*新方式* 是基于操作系统级虚拟化而不是硬件级虚拟化方法来部署容器。容器之间彼此隔离并与主机隔离:它们具有自己的文件系统,不能看到彼此的进程,并且它们所使用的计算资源是可以被限制的。它们比虚拟机更容易构建,并且因为它们与底层基础架构和主机文件系统隔离,所以它们可以跨云和操作系统快速分发。
由于容器体积小且启动快,因此可以在每个容器镜像中打包一个应用程序。这种一对一的应用镜像关系拥有很多好处。使用容器,不需要与外部的基础架构环境绑定, 因为每一个应用程序都不需要外部依赖,更不需要与外部的基础架构环境依赖。完美解决了从开发到生产环境的一致性问题。
容器同样比虚拟机更加透明,这有助于监测和管理。尤其是容器进程的生命周期由基础设施管理,而不是由容器内的进程对外隐藏时更是如此。最后,每个应用程序用容器封装,管理容器部署就等同于管理应用程序部署。
容器优点摘要:
* **敏捷的应用程序创建和部署**:
与虚拟机镜像相比,容器镜像更容易创建,提升了硬件的使用效率。
* **持续开发、集成和部署**:
提供可靠与频繁的容器镜像构建和部署,可以很方便及快速的回滚 (由于镜像不可变性).
* **关注开发与运维的分离**:
在构建/发布时创建应用程序容器镜像,从而将应用程序与基础架构分离。
* **开发、测试和生产环境的一致性**:
在笔记本电脑上运行与云中一样。
* **云和操作系统的可移植性**:
可运行在 Ubuntu, RHEL, CoreOS, 内部部署, Google 容器引擎和其他任何地方。
* **以应用为中心的管理**:
提升了操作系统的抽象级别,以便在使用逻辑资源的操作系统上运行应用程序。
* **松耦合、分布式、弹性伸缩 [微服务](http://martinfowler.com/articles/microservices.html)**:
应用程序被分成更小,更独立的部分,可以动态部署和管理 - 而不是巨型单体应用运行在专用的大型机上。
* **资源隔离**:
通过对应用进行资源隔离,可以很容易的预测应用程序性能。
* **资源利用**:
高效率和高密度。
#### 为什么我们需要 Kubernetes,它能做什么?
最基础的,Kubernetes 可以在物理或虚拟机集群上调度和运行应用程序容器。然而,Kubernetes 还允许开发人员从物理和虚拟机'脱离',从以**主机为中心**的基础架构转移到以**容器为中心**的基础架构,这样可以提供容器固有的全部优点和益处。Kubernetes 提供了基础设施来构建一个真正以**容器为中心**的开发环境。
Kubernetes 满足了生产中运行应用程序的许多常见的需求,例如:
* [Pod](/docs/user-guide/pods/) 提供复合应用并保留一个应用一个容器的容器模型,
* [挂载外部存储](/docs/user-guide/volumes/),
* [Secret管理](/docs/user-guide/secrets/),
* [应用健康检查](/docs/user-guide/production-pods/#liveness-and-readiness-probes-aka-health-checks),
* [副本应用实例](/docs/user-guide/replication-controller/),
* [横向自动扩缩容](/docs/user-guide/horizontal-pod-autoscaling/),
* [服务发现](/docs/user-guide/connecting-applications/),
* [负载均衡](/docs/user-guide/services/),
* [滚动更新](/docs/user-guide/update-demo/),
* [资源监测](/docs/user-guide/monitoring/),
* [日志采集和存储](/docs/user-guide/logging/overview/),
* [支持自检和调试](/docs/user-guide/introspection-and-debugging/),
* [认证和鉴权](/docs/admin/authorization/).
这提供了平台即服务 (PAAS) 的简单性以及基础架构即服务 (IAAS) 的灵活性,并促进跨基础设施供应商的可移植性。
有关详细信息,请参阅 [用户指南](/docs/user-guide/).
#### 为什么 Kubernetes 是一个平台?
Kubernetes 提供了很多的功能,总会有新的场景受益于新特性。它可以简化应用程序的工作流,加快开发速度。被大家认可的应用编排通常需要有较强的自动化能力。这就是为什么 Kubernetes 被设计作为构建组件和工具的生态系统平台,以便更轻松地部署、扩展和管理应用程序。
[Label](/docs/user-guide/labels/) 允许用户按照自己的方式组织管理对应的资源。 [注解](/docs/user-guide/annotations/) 使用户能够以自定义的描述信息来修饰资源,以适用于自己的工作流,并为管理工具提供检查点状态的简单方法。
此外,[Kubernetes 控制面 (Controll Plane)](/docs/admin/cluster-components) 是构建在相同的 [APIs](/docs/api/) 上面,开发人员和用户都可以用。用户可以编写自己的控制器, [调度器](https://github.com/kubernetes/kubernetes/tree/{{page.githubbranch}}/docs/devel/scheduler.md)等等,如果这么做,根据新加的[自定义 API](https://github.com/kubernetes/kubernetes/blob/{{page.githubbranch}}/docs/design/extending-api.md) ,可以扩展当前的通用 [CLI 命令行工具](/docs/user-guide/kubectl-overview/)。
这种 [设计](https://git.k8s.io/community/contributors/design-proposals/principles.md) 使得许多其他系统可以构建在 Kubernetes 之上。
#### Kubernetes 不是什么:
Kubernetes 不是一个传统意义上,包罗万象的 PaaS (平台即服务) 系统。我们保留用户选择的自由,这非常重要。
* Kubernetes 不限制支持的应用程序类型。 它不插手应用程序框架 (例如 [Wildfly](http://wildfly.org/)), 不限制支持的语言运行时 (例如 Java, Python, Ruby),只迎合符合 [12种因素的应用程序](http://12factor.net/),也不区分"应用程序"与"服务"。Kubernetes 旨在支持极其多样化的工作负载,包括无状态、有状态和数据处理工作负载。如果应用可以在容器中运行,它就可以在 Kubernetes 上运行。
* Kubernetes 不提供作为内置服务的中间件 (例如 消息中间件)、数据处理框架 (例如 Spark)、数据库 (例如 mysql)或集群存储系统 (例如 Ceph)。这些应用可以运行在 Kubernetes 上。
* Kubernetes 没有提供点击即部署的服务市场
* Kubernetes 从源代码到镜像都是非垄断的。 它不部署源代码且不构建您的应用程序。 持续集成 (CI) 工作流是一个不同用户和项目都有自己需求和偏好的领域。 所以我们支持在 Kubernetes 分层的 CI 工作流,但不指定它应该如何工作。
* Kubernetes 允许用户选择其他的日志记录,监控和告警系统 (虽然我们提供一些集成作为概念验证)
* Kubernetes 不提供或授权一个全面的应用程序配置语言/系统 (例如 [jsonnet](https://github.com/google/jsonnet)).
* Kubernetes 不提供也不采用任何全面机器配置、保养、管理或自我修复系统
另一方面,许多 PaaS 系统*运行*在 Kubernetes 上面,例如 [Openshift](https://github.com/openshift/origin), [Deis](http://deis.io/), and [Eldarion](http://eldarion.cloud/)。 您也可以自定义您自己的 PaaS, 与您选择的 CI 系统集成,或与 Kubernetes 一起使用: 将您的容器镜像部署到 Kubernetes。
由于 Kubernetes 在应用级别而不仅仅在硬件级别上运行,因此它提供 PaaS 产品通用的一些功能,例如部署、扩展、负载均衡、日志记录、监控等。但是,Kubernetes 不是单一的,默认解决方案是可选和可插拔的。
此处,Kubernetes 不仅仅是一个 "编排系统";它消除了编排的需要。 "编排"技术定义的是工作流的执行: 从 A 到 B,然后到 C。相反,Kubernetes 是包括一套独立、可组合的控制过程,通过声明式语法使其连续地朝着期望状态驱动当前状态。 不需要告诉它具体从 A 到 C 的过程,只要告诉到 C 的状态即可。 也不需要集中控制;该方法更类似于"编舞"。这使得系统更容易使用并且更强大、更可靠、更具弹性和可扩展性。
#### *Kubernetes* 是什么意思? K8s?
名称 **Kubernetes** 源于希腊语,意为 "舵手" 或 "飞行员" 且是英文 "governor" 和 ["cybernetic"](http://www.etymonline.com/index.php?term=cybernetics)的词根。 **K8s** 是通过将 8 个字母 "ubernete" 替换为 8 而导出的缩写。另外,在中文里,k8s 的发音与 Kubernetes 的发音比较接近。
@@ -0,0 +1,35 @@
---
title: 互动教程 - 创建集群
---
<!DOCTYPE html>
<html lang="en">
<body>
<link href="/docs/tutorials/kubernetes-basics/public/css/styles.css" rel="stylesheet">
<script src="https://katacoda.com/embed.js"></script>
<div class="layout" id="top">
<main class="content katacoda-content">
<div class="katacoda">
<div class="katacoda__alert">
To interact with the Terminal, please use the desktop/tablet version
</div>
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/1" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-font="Roboto" data-katacoda-fontheader="Roboto Slab" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;"></div>
</div>
<div class="row">
<div class="col-md-12">
<a class="btn btn-lg btn-success" href="/docs/tutorials/kubernetes-basics/deploy-intro/" role="button">Continue to Module 2<span class="btn__next"></span></a>
</div>
</div>
</main>
</div>
</body>
</html>
@@ -0,0 +1,110 @@
---
redirect_from:
- "/docs/tutorials/getting-started/create-cluster/"
- "/docs/tutorials/getting-started/create-cluster.html"
title: 使用 Minikube 创建一个集群
---
<!DOCTYPE html>
<html lang="en">
<body>
<link href="/docs/tutorials/kubernetes-basics/public/css/styles.css" rel="stylesheet">
<div class="layout" id="top">
<main class="content">
<div class="row">
<div class="col-md-8">
<h3>目标</h3>
<ul>
<li>了解什么是 Kubernetes 集群</li>
<li>了解什么是 Minikube</li>
<li>使用在线终端启动 Kubernetes 集群</li>
</ul>
</div>
<div class="col-md-8">
<h3>Kubernetes 集群</h3>
<p>
<b>Kubernetes 用于协调高度可用的计算机集群,这些计算机群集被连接作为单个单元工作。</b> Kubernetes 的抽象性允许您将容器化的应用程序部署到集群,而不必专门将其绑定到单个计算机。为了利用这种新的部署模型,应用程序需要以将它们与各个主机分离的方式打包: 它们需要被容器化。容器化应用程序比过去的部署模型更灵活和可用,其中应用程序直接安装到特定机器上,作为深入集成到主机中的软件包。 <b>Kubernetes 在一个集群上以更有效的方式自动分发和调度容器应用程序。</b> Kubernetes 是一个 <a href="https://github.com/kubernetes/kubernetes">开源</a> 平台,可满足生产环境的需要。
</p>
<p>Kubernetes 集群由两种类型的资源组成:
<ul>
<li>一个 <b>Master</b> 是集群的调度节点</li>
<li><b>Nodes</b> 是应用程序实际运行的工作节点</li>
</ul>
</p>
</div>
<div class="col-md-4">
<div class="content__box content__box_lined">
<h3>概要:</h3>
<ul>
<li>Kubernetes 集群</li>
<li>Minikube</li>
</ul>
</div>
<div class="content__box content__box_fill">
<p><i>
Kubernetes 是一个生产级的开源平台,用于协调计算机集群内部和跨计算机集群的应用程序容器的分发(调度)和运行。
</i></p>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<h2 style="color: #3771e3;">集群图</h2>
</div>
</div>
<div class="row">
<div class="col-md-8">
<p><img src="/docs/tutorials/kubernetes-basics/public/images/module_01_cluster.svg"></p>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<p><b>Master 负责管理集群。</b> master 协调集群中的所有活动,例如调度应用程序、维护应用程序的所需状态、扩展应用程序和滚动更新。</p>
<p><b>节点 是 Kubernetes 集群中的工作机器,可以是物理机或虚拟机。</b> 每个工作节点都有一个 Kubelet,它是管理 节点 并与 Kubernetes Master 节点进行通信的代理。节点 上还应具有处理容器操作的工作,例如 <a href="https://www.docker.com/">Docker</a><a href="https://coreos.com/rkt/">rkt</a>。一个 Kubernetes 工作集群至少有三个节点。</p>
</div>
<div class="col-md-4">
<div class="content__box content__box_fill">
<p><i> Master 管理集群,而 节点 用于托管正在运行的应用程序。 </i></p>
</div>
</div>
</div>
<div class="row">
<div class="col-md-8">
<p>当您在 Kubernetes 上部署应用程序时,您可以告诉 master 启动应用程序容器。Master 调度容器在集群的 节点 上运行。<b> 节点 使用 Master 公开的 Kubernetes API 与 Master 通信</b>。最终用户还可以直接使用 Kubernetes 的 API 与集群交互。</p>
<p>Kubernetes 集群可以部署在物理机或虚拟机上。要开始使用 Kubernetes 开发,您可以使用 <a href="https://github.com/kubernetes/minikube">Minikube</a>。Minikube 是一个轻量级的 Kubernetes 实现,会在本机创建一台虚拟机,并部署一个只包含一个节点的简单集群。 Minikube 适用于 Linux, Mac OS 和 Windows 系统。Minikube CLI 提供了集群的基本引导操作,包括启动、停止、状态和删除。为了完成此基础训练,您将使用预先安装了 Minikube 的在线终端。</p>
<p>现在您已经知道 Kubernetes 是什么,让我们使用在线教程,开始我们的第一个集群!</p>
</div>
</div>
<br>
<div class="row">
<div class="col-md-12">
<a class="btn btn-lg btn-success" href="/docs/tutorials/kubernetes-basics/cluster-interactive/" role="button">启动互动教程 <span class="btn__next"></span></a>
</div>
</div>
</main>
</div>
</body>
</html>
@@ -0,0 +1,39 @@
---
title: 互动教程 - 部署应用程序
---
<!DOCTYPE html>
<html lang="en">
<body>
<link href="/docs/tutorials/kubernetes-basics/public/css/styles.css" rel="stylesheet">
<script src="https://katacoda.com/embed.js"></script>
<div class="layout" id="top">
<main class="content katacoda-content">
<br>
<div class="katacoda">
<div class="katacoda__alert">
To interact with the Terminal, please use the desktop/tablet version
</div>
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/7" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-font="Roboto" data-katacoda-fontheader="Roboto Slab" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
</div>
</div>
<div class="row">
<div class="col-md-12">
<a class="btn btn-lg btn-success" href="/docs/tutorials/kubernetes-basics/explore-intro/" role="button">Continue to Module 3<span class="btn__next"></span></a>
</div>
</div>
</main>
</div>
</body>
</html>
@@ -0,0 +1,108 @@
---
title: 使用 kubectl 创建部署
---
<!DOCTYPE html>
<html lang="en">
<body>
<link href="/docs/tutorials/kubernetes-basics/public/css/styles.css" rel="stylesheet">
<div class="layout" id="top">
<main class="content">
<div class="row">
<div class="col-md-8">
<h3>目标</h3>
<ul>
<li>了解应用程序部署</li>
<li>使用 kubectl 在 Kubernetes 上部署您的第一个应用程序</li>
</ul>
</div>
<div class="col-md-8">
<h3>Kubernetes 部署</h3>
<p>
一旦运行了 Kubernetes 集群,您可以在其上部署容器化应用程序。为此,您可以创建一个 Kubernetes <b>Deployment</b>。Deployment 负责创建和更新应用程序实例。创建 Deployment 后, Kubernetes master 会将 Deployment 创建的应用程序实例调度到集群中的各个节点。
</p>
<p>创建应用程序实例后,Kubernetes 部署控制器会持续监视这些实例。如果托管它的节点不可用或删除,则部署控制器将替换实例。 <b>这提供了一种解决机器故障或维护的自愈机制。</b></p>
<p>在编排诞生前的世界中,通常会使用安装脚本启动应用程序,但是它们并不能从机器故障中恢复。通过创建应用程序实例并使其运行在跨节点的机器之间,Kubernetes 部署提供了截然不同的应用管理方法。 </p>
</div>
<div class="col-md-4">
<div class="content__box content__box_lined">
<h3>概要:</h3>
<ul>
<li>部署</li>
<li>Kubectl</li>
</ul>
</div>
<div class="content__box content__box_fill">
<p><i>
部署负责创建和更新应用程序的实例
</i></p>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<h2 style="color: #3771e3;">在 Kubernetes 上部署您的第一个应用程序</h2>
</div>
</div>
<div class="row">
<div class="col-md-8">
<p><img src="/docs/tutorials/kubernetes-basics/public/images/module_02_first_app.svg"></p>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<p>您可以使用 Kubernetes 命令行工具 <b>Kubectl</b>创建和管理部署。Kubectl 使用 Kubernetes API 与集群进行交互。在本模块中,您将学习在 Kubernetes 集群上运行应用程序部署所需的最常见的 Kubectl 命令。</p>
<p>创建部署时,您需要为应用程序指定容器镜像以及要运行的副本数。您可以稍后通过更新部署来更改该信息;基础训练模块 <a href="/docs/tutorials/kubernetes-basics/scale-intro/">5</a><a href="/docs/tutorials/kubernetes-basics/update-intro/">6</a> 讨论如何扩展和更新您的部署。</p>
</div>
<div class="col-md-4">
<div class="content__box content__box_fill">
<p><i> 应用程序需要打包成支持的容器格式之一,以便部署在 Kubernetes 上。</i></p>
</div>
</div>
</div>
<div class="row">
<div class="col-md-8">
<p>对于我们的第一个部署,我们将使用 <a href="https://nodejs.org">Node.js</a> 应用程序打包到 Docker 容器。源代码和 Dockerfile 可在 Kubernetes Bootcamp 的 <a href="https://github.com/kubernetes/kubernetes-bootcamp">GitHub 存储库</a> 中找到。</p>
<p>现在您已经知道部署是什么,我来再来看看在线教程,并部署我们的第一个应用程序!</p>
</div>
</div>
<br>
<div class="row">
<div class="col-md-12">
<a class="btn btn-lg btn-success" href="/docs/tutorials/kubernetes-basics/deploy-interactive/" role="button">启动互动教程 <span class="btn__next"></span></a>
</div>
</div>
</main>
</div>
</body>
</html>
@@ -0,0 +1,39 @@
---
title: 互动教程 - 应用程序探索
---
<!DOCTYPE html>
<html lang="en">
<body>
<link href="/docs/tutorials/kubernetes-basics/public/css/styles.css" rel="stylesheet">
<script src="https://katacoda.com/embed.js"></script>
<div class="layout" id="top">
<main class="content katacoda-content">
<br>
<div class="katacoda">
<div class="katacoda__alert">
To interact with the Terminal, please use the desktop/tablet version
</div>
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/4" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-font="Roboto" data-katacoda-fontheader="Roboto Slab" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
</div>
</div>
<div class="row">
<div class="col-md-12">
<a class="btn btn-lg btn-success" href="/docs/tutorials/kubernetes-basics/expose-intro/" role="button">Continue to Module 4<span class="btn__next"></span></a>
</div>
</div>
</main>
</div>
</body>
</html>
@@ -0,0 +1,142 @@
---
title: 查看 Pods 和节点
---
<!DOCTYPE html>
<html lang="en">
<body>
<link href="/docs/tutorials/kubernetes-basics/public/css/styles.css" rel="stylesheet">
<div class="layout" id="top">
<main class="content">
<div class="row">
<div class="col-md-8">
<h3>目标</h3>
<ul>
<li>了解 Kubernetes Pods</li>
<li>了解 Kubernetes Nodes</li>
<li>已部署应用的故障排除</li>
</ul>
</div>
<div class="col-md-8">
<h2>Kubernetes Pods</h2>
<p>当您在模块 <a href="/docs/tutorials/kubernetes-basics/deploy-intro/">2</a>中创建部署时,Kubernetes 创建了一个 <b>Pod</b> 来托管您的应用程序实例。Pod 是一个 Kubernetes 的资源抽象,表示一个或多个应用容器 (例如 Docker 或 rkt) 组,以及一些用于这些容器的共享资源。这些资源包括:</p>
<ul>
<li>共享存储,如卷</li>
<li>网络,作为唯一的集群 IP 地址</li>
<li>每个容器如何运行的信息,例如容器镜像版本或要使用的特定端口</li>
</ul>
<p>Pod 模型可以理解为应用程序特定的 "逻辑主机",并且可以包含相对紧密耦合的不同应用程序容器。例如,Pod 可能包含带有 Node.js 应用程序的容器以及另一个要吸收 Node.js Web 服务器提供的数据的不同容器。Pod 中的容器共享 IP 地址和端口空间,始终位于同一位置并且统一调度,并在相同的节点上运行,共享上下文环境。</p>
<p>Pods 是 Kubernetes 平台上原子级别的单元。当我们在 Kubernetes 上创建一个部署时,该部署将在其中创建包含容器的 Pod (而不是直接创建容器)。每个 Pod 都绑定到它被调度的节点,并且始终在那里,直到终止 (根据重启策略) 或删除。在节点故障的情况下,在集群中的其他可用节点上调度相同的 Pod。</p>
</div>
<div class="col-md-4">
<div class="content__box content__box_lined">
<h3>概要:</h3>
<ul>
<li>Pods</li>
<li>节点</li>
<li>Kubectl 主要命令</li>
</ul>
</div>
<div class="content__box content__box_fill">
<p><i>
Pod是由一个或者多个应用程序容器构成的(例如 Docker 或 rkt),包含共享存储 (卷),IP 地址以及有关如何运行它们的信息。
</i></p>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<h2 style="color: #3771e3;">Pods 概览</h2>
</div>
</div>
<div class="row">
<div class="col-md-8">
<p><img src="/docs/tutorials/kubernetes-basics/public/images/module_03_pods.svg"></p>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<h2>节点</h2>
<p>Pod 总是运行在 <b>Node</b>上。Node 是 Kubernetes 的工作机器,可以是虚拟机或物理机,这取决于在集群的安装情况。每个节点由 Master 管理。一个节点上可以有多个 Pod, Kubernetes master 会自动处理调度集群各个节点上的 Pod。 Master 在自动调度时,会考虑每个 Node 上的可用资源。</p>
<p>每个 Kubernetes 节点至少运行以下组件:</p>
<ul>
<li>Kubelet 是负责 Kubernetes Master 和 所有节点之间通信的进程,它管理机器上运行的 Pod 和容器。</li>
<li>容器运行时(例如 Docker, rkt) 负责从镜像仓库中拉取容器镜像,解包容器并运行应用程序。</li>
</ul>
</div>
<div class="col-md-4">
<div class="content__box content__box_fill">
<p><i> 如果一些容器属于强耦合并且需要共享资源(例如 磁盘),那么这些容器应该放到单个 Pod 中一起调度。 </i></p>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<h2 style="color: #3771e3;">节点概述</h2>
</div>
</div>
<div class="row">
<div class="col-md-8">
<p><img src="/docs/tutorials/kubernetes-basics/public/images/module_03_nodes.svg"></p>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<h2>使用 kubectl 进行故障排除</h2>
<p>在模块 <a href="/docs/tutorials/kubernetes-basics/deploy-intro/">2</a>中,您使用了 Kubectl 命令行接口。您将在模块 3 中继续使用它来获取有关已部署应用程序及其环境的信息。最常见的操作可以通过以下 kubectl 命令完成:</p>
<ul>
<li><b>kubectl get</b> - 列出可用资源</li>
<li><b>kubectl describe</b> - 显示有关资源的详细信息</li>
<li><b>kubectl logs</b> - 从 Pod 中的容器打印日志</li>
<li><b>kubectl exec</b> - 在 Pod 中的容器执行命令</li>
</ul>
<p>您可以使用这些命令来查看应用程序部署的时间,它们当前的状态,运行的位置及其配置。</p>
<p>现在我们更多地了解了集群组件和命令行交互,接下来,一起来探索分析我们的应用程序。</p>
</div>
<div class="col-md-4">
<div class="content__box content__box_fill">
<p><i> 节点是 Kubernetes 中的工作机器,可能是物理机或虚拟机,具体取决于集群的安装配置。多个 Pod 可以在一个节点上运行。 </i></p>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-md-12">
<a class="btn btn-lg btn-success" href="/docs/tutorials/kubernetes-basics/explore-interactive/" role="button">启动互动教程<span class="btn__next"></span></a>
</div>
</div>
</main>
</div>
</body>
</html>
@@ -0,0 +1,36 @@
---
title: 互动教程 - 应用外部可见
---
<!DOCTYPE html>
<html lang="en">
<body>
<link href="/docs/tutorials/kubernetes-basics/public/css/styles.css" rel="stylesheet">
<script src="https://katacoda.com/embed.js"></script>
<div class="layout" id="top">
<main class="content katacoda-content">
<div class="katacoda">
<div class="katacoda__alert">
To interact with the Terminal, please use the desktop/tablet version
</div>
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/8" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-font="Roboto" data-katacoda-fontheader="Roboto Slab" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
</div>
</div>
<div class="row">
<div class="col-md-12">
<a class="btn btn-lg btn-success" href="/docs/tutorials/kubernetes-basics/scale-intro/" role="button">Continue to Module 5<span class="btn__next"></span></a>
</div>
</div>
</main>
</div>
</body>
</html>
@@ -0,0 +1,111 @@
---
title: 使用服务发布您的应用程序
---
<!DOCTYPE html>
<html lang="en">
<body>
<link href="/docs/tutorials/kubernetes-basics/public/css/styles.css" rel="stylesheet">
<div class="layout" id="top">
<main class="content">
<div class="row">
<div class="col-md-8">
<h3>目标</h3>
<ul>
<li>了解 Kubernetes 中的服务</li>
<li>了解标签和标签选择器对象如何与服务相关联</li>
<li>通过 Service 在 Kubernetes 集群外发布应用程序</li>
</ul>
</div>
<div class="col-md-8">
<h3>Kubernetes 服务概述</h3>
<p>Kubernetes <a href="/docs/concepts/workloads/pods/pod-overview/">Pods</a> 终有一死. Pods 实际上有一个 <a href="/docs/concepts/workloads/pods/pod-lifecycle/">生命周期</a>. 当工作节点死机时, 节点上运行的Pod也将丢失。 一个 <a href="/docs/user-guide/replication-controller/#what-is-a-replicationcontroller">ReplicationController</a> 可能会通过创建新的Pod以动态地将集群恢复到所需的状态,以保持您的应用程序运行。还有一种方法就是:决定是否使用具有3个副本的图像处理后端。这些副本是可替代的前端系统不应关心后端副本,即使Pod丢失并重建也不会更改。 也就是说,Kubernetes 集群中的每个 Pod 都有一个唯一的IP地址,即使在同一个节点上的 Pods 也是如此,所以此时就需要一种自动调整更改 Pod 的方法, 以便您的应用程序继续运行。输入 <i>服务</i>. Kubernetes 中的服务是一个抽象对象,它定义了一组逻辑的 Pods 和一个访问它们的策略。 服务让互相依赖的 Pod 之间的耦合松动。 服务由 YAML <a href="/docs/concepts/configuration/overview/#general-config-tips">(首选)</a> 或 JSON 定义。像所有 Kubernetes 对象一样。 针对服务的一组 Pod 通常由<i>Label选择器</i>确定(参见下文,为什么您可能希望不将 <code>选择器</code> 包含在规范中。</p>
<p>虽然每个 Pod 都有一个唯一的 IP 地址,但是这些 IP 不会在没有服务的情况下公开在群集之外。服务允许您的应用程序接收流量。 可以通过在 ServiceSpec 中指定<code>类型</code> 以不同方式显示服务:</p>
<ul>
<li><i>ClusterIP</i>(默认) - 在集群中的内部IP上公开服务。此类型使服务只能从集群中访问。</li>
<li><i>NodePort</i> —— 使用NAT在群集中每个选定的节点的同一端口上显示该服务。使用 <code><NodeIP>:<NodePort></code>可以从群集外部访问服务。建立 ClusterIP 的超集.</li>
<li><i>LoadBalancer</i> —— 在当前云中创建外部负载平衡器(如果支持),并为服务分配固定的外部IP。建立 NodePort 的超集。</li>
<li><i>ExternalName</i> —— 使用任意名称显示该服务(由规范中的<code>externalName</code> 指定),本过程通过使用该名称返回 CNAME 记录达成。无须使用代理。这种类型需要 v1.7 或更高版本的 <code>kube-dns</code>.</li>
</ul>
<p>有关不同类型服务的详细信息,请参见 <a href="/docs/tutorials/services/source-ip/">使用源IP</a> 教程。另请参阅 <a href="/docs/concepts/services-networking/connect-applications-service">使用服务连接应用程序</a>.</p>
<p>另外,请注意,服务中有一些使用案例涉及在规范中不定义<code>选择器</code> 。不使用 <code>选择器</code> 创建的服务也不会创建相应的端点对象。 这允许用户手动将服务映射到特定端点。没有选择器还有可能是因为您严格地使用了 <code>type: ExternalName</code>.</p>
</div>
<div class="col-md-4">
<div class="content__box content__box_lined">
<h3>摘要</h3>
<ul>
<li>对外部流量曝光 Pod </li>
<li>跨多个 Pods 进行流量负载均衡</li>
<li>使用标签</li>
</ul>
</div>
<div class="content__box content__box_fill">
<p><i>Kubernetes 服务是一个抽象层,它定义了一组逻辑的Pods,并为这些Pods启用了外部流量曝光、负载平衡和服务发现。</i></p>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<h3>服务和标签</h3>
</div>
</div>
<div class="row">
<div class="col-md-8">
<p><img src="/docs/tutorials/kubernetes-basics/public/images/module_04_services.svg" width="150%" height="150%"></p>
</div>
</div>
<div class="row">
<div class="col-md-8">
<p> A服务可以跨一组 Pod 路由流量。服务是允许 Pod 在 Kubernetes 中死亡和复制而不影响应用程序的抽象层。相关 Pod 之间的发现和路由(如应用程序中的前端和后端组件)是由 Kubernetes Services 处理的。</p>
<p> 服务使用 <a href="/docs/concepts/overview/working-with-objects/labels">标签和选择器</a>, 匹配一组 Pod,成为分组原语,此原语允许在 Kubernetes 中的对象进行逻辑运算。标签是一对附加到对象的关键/重要组,可以以多种方式使用,方式如下: </p>
<ul>
<li>指定用于开发、测试和生产的对象</li>
<li>嵌入版本标签</li>
<li>使用标签分类对象</li>
</ul>
</div>
<div class="col-md-4">
<div class="content__box content__box_fill">
<p><i>您可以在使用<br><code>--expose</code> 在 kubectl 中创建部署的同时创建服务.</i></p>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<p><img src="/docs/tutorials/kubernetes-basics/public/images/module_04_labels.svg"></p>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<p>标签可以在创建时或之后附加到对象后,并支持随时修改。让我们现在开始使用服务公开我们的应用程序并应用一些标签吧。</p>
</div>
</div>
<br>
<div class="row">
<div class="col-md-12">
<a class="btn btn-lg btn-success" href="/docs/tutorials/kubernetes-basics/expose-interactive/" role="button">启动互动教程<span class="btn__next"></span></a>
</div>
</div>
</main>
</div>
</body>
</html>
@@ -0,0 +1,106 @@
---
title: 概述
---
<!DOCTYPE html>
<html lang="en">
<body>
<link href="./public/css/styles.css" rel="stylesheet">
<div class="layout" id="top">
<main class="content">
<div class="row">
<div class="col-md-9">
<h2>Kubernetes 基础</h2>
<p>本教程介绍了 Kubernetes 集群编排系统的基础知识。每个模块包含关于 Kubernetes 主要特性和概念的一些背景信息,并包括一个在线互动教程。这些互动教程让您可以自己管理一个简单的集群及其容器化应用程序。</p>
<p>使用互动教程,您可以学习:</p>
<ul>
<li>在集群上部署容器化应用程序</li>
<li>弹性部署</li>
<li>使用新的软件版本,更新容器化应用程序</li>
<li>调试容器化应用程序</li>
</ul>
<p>教程 Katacoda 在您的浏览器中运行一个虚拟终端,在浏览器中运行 Minikube,这是一个可在任何地方小规模本地部署的 Kubernetes 集群。不需要安装任何软件或进行任何配置; 每个交互性教程都直接从您的网页浏览器上运行。</p>
</div>
</div>
<br>
<div class="row">
<div class="col-md-9">
<h2>Kubernetes 可以为您做些什么?</h2>
<p>通过现代的 Web 服务,用户希望应用程序能够 24/7 全天候使用,开发人员希望每天可以多次发布部署新版本的应用程序。 容器化可以帮助软件包达成这些目标,使应用程序能够以简单快速的方式发布和更新,而无需停机。Kubernetes 帮助您确保这些容器化的应用程序在您想要的时间和地点运行,并帮助应用程序找到它们需要的资源和工具。 <a href="http://kubernetes.io/docs/whatisk8s/">Kubernetes</a> 是一个可用于生产的开源平台,根据 Google 容器集群方面积累的经验,以及来自社区的最佳实践而设计。</p>
</div>
</div>
<div class="content__modules">
<h2>Kubernetes 基础模块</h2>
<div class="row">
<div class="col-md-4">
<div class="thumbnail">
<a href="/docs/tutorials/kubernetes-basics/cluster-intro/"><img src="./public/images/module_01.svg?v=1469803628347" alt=""></a>
<div class="caption">
<a href="cluster-intro/"><h5>1. 创建一个 Kubernetes 集群</h5></a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="thumbnail">
<a href="/docs/tutorials/kubernetes-basics/deploy-intro/"><img src="./public/images/module_02.svg?v=1469803628347" alt=""></a>
<div class="caption">
<a href="deploy-intro/"><h5>2. 部署应用程序</h5></a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="thumbnail">
<a href="/docs/tutorials/kubernetes-basics/explore-intro/"><img src="./public/images/module_03.svg?v=1469803628347" alt=""></a>
<div class="caption">
<a href="explore-intro/"><h5>3. 应用程序探索</h5></a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="thumbnail">
<a href="/docs/tutorials/kubernetes-basics/expose-intro/"><img src="./public/images/module_04.svg?v=1469803628347" alt=""></a>
<div class="caption">
<a href="expose-intro/"><h5>4. 应用外部可见</h5></a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="thumbnail">
<a href="/docs/tutorials/kubernetes-basics/scale-intro/"><img src="./public/images/module_05.svg?v=1469803628347" alt=""></a>
<div class="caption">
<a href="scale-intro/"><h5>5. 应用可扩展</h5></a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="thumbnail">
<a href="/docs/tutorials/kubernetes-basics/update-intro/"><img src="./public/images/module_06.svg?v=1469803628347" alt=""></a>
<div class="caption">
<a href="update-intro/"><h5>6. 应用更新</h5></a>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<a class="btn btn-lg btn-success" href="/docs/tutorials/kubernetes-basics/cluster-intro/" role="button">开始教程<span class="btn__next"></span></a>
</div>
</div>
</main>
</div>
</body>
</html>
@@ -0,0 +1,38 @@
---
title: 互动教程 - 扩展您的应用程序
---
<!DOCTYPE html>
<html lang="en">
<body>
<link href="/docs/tutorials/kubernetes-basics/public/css/styles.css" rel="stylesheet">
<script src="https://katacoda.com/embed.js"></script>
<div class="layout" id="top">
<main class="content katacoda-content">
<div class="katacoda">
<div class="katacoda__alert">
To interact with the Terminal, please use the desktop/tablet version
</div>
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/5" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-font="Roboto" data-katacoda-fontheader="Roboto Slab" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
</div>
</div>
<div class="row">
<div class="col-md-12">
<a class="btn btn-lg btn-success" href="/docs/tutorials/kubernetes-basics/update-intro/" role="button">Continue to Module 6<span class="btn__next"></span></a>
</div>
</div>
</main>
<a class="scrolltop" href="#top"></a>
</div>
</body>
</html>
@@ -0,0 +1,121 @@
---
title: 运行应用程序的多个实例
---
<!DOCTYPE html>
<html lang="en">
<body>
<link href="/docs/tutorials/kubernetes-basics/public/css/styles.css" rel="stylesheet">
<div class="layout" id="top">
<main class="content">
<div class="row">
<div class="col-md-8">
<h3>目标</h3>
<ul>
<li>使用 kubectl 伸缩应用程序</li>
</ul>
</div>
<div class="col-md-8">
<h3>应用程序伸缩</h3>
<p>在之前的模块中,我们创建了一个 <a href="http://kubernetes.io/docs/user-guide/deployments/"> Deployment</a>,然后通过 <a href="http://kubernetes.io/docs/user-guide/services/">Service</a>让应用程序外部可见。Deployment 仅为我们的应用程序创建了一个 Pod。 当流量增加时,我们将需要
应用程序以跟上用户需求。</p>
<p><b>Scaling</b> 是通过更改 Deployment 中的副本数量实现的。</p>
</div>
<div class="col-md-4">
<div class="content__box content__box_lined">
<h3>摘要:</h3>
<ul>
<li>Deployment 的伸缩</li>
</ul>
</div>
<div class="content__box content__box_fill">
<p><i> 您可以使用 kubectl run 命令的 --replicas 参数,在创建 Deployment 时指定多个实例。 </i></p>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<h2 style="color: #3771e3;">Scaling 概述</h2>
</div>
</div>
<div class="row">
<div class="col-md-1"></div>
<div class="col-md-8">
<div id="myCarousel" class="carousel" data-ride="carousel" data-interval="3000">
<ol class="carousel-indicators">
<li data-target="#myCarousel" data-slide-to="0" class="active"></li>
<li data-target="#myCarousel" data-slide-to="1"></li>
</ol>
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="/docs/tutorials/kubernetes-basics/public/images/module_05_scaling1.svg">
</div>
<div class="item">
<img src="/docs/tutorials/kubernetes-basics/public/images/module_05_scaling2.svg">
</div>
</div>
<a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
<span class="sr-only ">Previous</span>
</a>
<a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
<span class="sr-only">Next</span>
</a>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<p>扩展 Deployment 将确保新创建的 Pods 会调度到可用资源的 Node 节点上,收缩会保证 Pods 数量减少至新的所需状态。 Kubernetes 还支持 Pods 的 <a href="http://kubernetes.io/docs/user-guide/horizontal-pod-autoscaling/"> 自动缩放版 </a> ,但不在本教程范围之内。收缩到零也是可以的,此时它将终止指定 Deployment 的所有 Pod。 </p>
<p>运行应用程序的多个实例需要一种将流量分发给所有实例的方法。服务有内置的负载均衡器,可将网络流量分配给 Deployment 暴露的所有 Pods。服务通过使用 endpoints 持续监控运行的 Pods,以确保流量仅发送到可用的 Pods。</p>
</div>
<div class="col-md-4">
<div class="content__box content__box_fill">
<p><i>通过更改 Deployment 中的副本数可以实现伸缩应用程序。</i></p>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<p> 一旦您有应用程序的多个实例,您将能够滚动更新,而不会停止服务————我们将在下一个模块中介绍这些。现在,我们去在线终端对我们的应用程序进行伸缩。</p>
</div>
</div>
<br>
<div class="row">
<div class="col-md-12">
<a class="btn btn-lg btn-success" href="/docs/tutorials/kubernetes-basics/scale-interactive/" role="button">启动互动教程 <span class="btn__next"></span></a>
</div>
</div>
</main>
</div>
</body>
</html>
@@ -0,0 +1,31 @@
---
title: 互动教程 - 更新您的应用程序
---
<!DOCTYPE html>
<html lang="en">
<body>
<link href="/docs/tutorials/kubernetes-basics/public/css/styles.css" rel="stylesheet">
<script src="https://katacoda.com/embed.js"></script>
<div class="layout" id="top">
<main class="content katacoda-content">
<div class="katacoda">
<div class="katacoda__alert">
To interact with the Terminal, please use the desktop/tablet version
</div>
<div class="katacoda__box" id="inline-terminal-1" data-katacoda-id="kubernetes-bootcamp/6" data-katacoda-color="326de6" data-katacoda-secondary="273d6d" data-katacoda-hideintro="false" data-katacoda-font="Roboto" data-katacoda-fontheader="Roboto Slab" data-katacoda-prompt="Kubernetes Bootcamp Terminal" style="height: 600px;">
</div>
</div>
</main>
</div>
</body>
</html>
@@ -0,0 +1,135 @@
---
title: 执行滚动更新
---
<!DOCTYPE html>
<html lang="en">
<body>
<link href="/docs/tutorials/kubernetes-basics/public/css/styles.css" rel="stylesheet">
<div class="layout" id="top">
<main class="content">
<div class="row">
<div class="col-md-8">
<h3>目标</h3>
<ul>
<li>使用 kubectl 执行滚动更新</li>
</ul>
</div>
<div class="col-md-8">
<h3>更新应用程序</h3>
<p>用户期望应用程序始终可用,并且希望开发人员每天部署新版本。在 Kubernetes 上这通过滚动更新(Rolling updates)达成。 <b>Rolling updates</b> 允许通过使用新的 Pods 实例逐个更新来实现零停机的部署更新。新的 Pods 会被调度到可用资源的 Node 节点上。</p>
<p>在上一个模块中,我们将应用程序扩展为运行多个实例。这也是执行更新但不影响应用可用性所需的条件。默认情况下,更新期间最大数量的不可用 Pod 以及最大数量的新 Pod 是一。 这两个选项可以配置为数字或百分比(Pods)。
在 Kubernetes 中,更新已版本化,任何部署更新都可以恢复到以前的 (稳定) 版本。</p>
</div>
<div class="col-md-4">
<div class="content__box content__box_lined">
<h3>摘要:</h3>
<ul>
<li>更新应用程序</li>
</ul>
</div>
<div class="content__box content__box_fill">
<p><i>滚动更新允许通过使用新的 Pods 实例逐个更新来实现零停机的部署更新。 </i></p>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<h2 style="color: #3771e3;">滚动更新概述</h2>
</div>
</div>
<div class="row">
<div class="col-md-1"></div>
<div class="col-md-8">
<div id="myCarousel" class="carousel" data-ride="carousel" data-interval="3000">
<ol class="carousel-indicators">
<li data-target="#myCarousel" data-slide-to="0" class="active"></li>
<li data-target="#myCarousel" data-slide-to="1"></li>
<li data-target="#myCarousel" data-slide-to="2"></li>
<li data-target="#myCarousel" data-slide-to="3"></li>
</ol>
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="/docs/tutorials/kubernetes-basics/public/images/module_06_rollingupdates1.svg" >
</div>
<div class="item">
<img src="/docs/tutorials/kubernetes-basics/public/images/module_06_rollingupdates2.svg">
</div>
<div class="item">
<img src="/docs/tutorials/kubernetes-basics/public/images/module_06_rollingupdates3.svg">
</div>
<div class="item">
<img src="/docs/tutorials/kubernetes-basics/public/images/module_06_rollingupdates4.svg">
</div>
</div>
<a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
<span class="sr-only ">Previous</span>
</a>
<a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
<span class="sr-only">Next</span>
</a>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<p>与应用程序伸缩类似,如果 Deployment 外部可见,则服务将在更新期间将流量负载均衡到可用的 Pod。可用的 Pod 指的是应用程序用户可用的实例。</p>
<p>滚动更新允许以下操作:</p>
<ul>
<li>将应用程序从一个环境升级到另一个环境 (通过容器镜像更新)</li>
<li>回滚到以前的版本</li>
<li>持续集成和持续交付,实现应用程序零停机</li>
</ul>
</div>
<div class="col-md-4">
<div class="content__box content__box_fill">
<p><i>如果部署外部可见,则服务将在更新期间将流量负载均衡到可用的 Pod。 </i></p>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-md-8">
<p> 在下面的互动教程中,我们将把应用程序更新到一个新版本,并执行回滚。</p>
</div>
</div>
<br>
<div class="row">
<div class="col-md-12">
<a class="btn btn-lg btn-success" href="/docs/tutorials/kubernetes-basics/update-interactive/" role="button">启动交互式教程<span class="btn__next"></span></a>
</div>
</div>
</main>
</div>
</body>
</html>
@@ -0,0 +1,145 @@
---
title: 使用命令式的方式管理 Kubernetes 对象
redirect_from:
- "/docs/concepts/tools/kubectl/object-management-using-imperative-commands/"
- "/docs/concepts/tools/kubectl/object-management-using-imperative-commands.html"
---
{% capture overview %}
直接使用内置的 `kubectl` 命令行工具,以命令式方式可以快速创建,更新和删除 Kubernetes 对象。本文档介绍了这些命令是如何组织的,以及如何使用它们来管理活动对象。
{% endcapture %}
{% capture body %}
## 权衡
`kubectl` 工具支持三种对象的管理:
* 命令式的方式
* 命令式的对象配置
* 声明式的对象配置
参见[Kubernetes对象管理](/docs/concepts/tools/kubectl/object-management-overview/)
讨论各种对象管理的优缺点.
## 如何创建对象
`kubectl` 工具支持用于创建一些最常用的对象类型的动词驱动命令,这些命令被命名为对于不熟悉的用户也是一目了然。
- `run`: 创建一个新的 Deployment 对象以在一个或多个 Pod 中运行 Containers。
- `expose`: 创建一个新的 Service 对象用于负载均衡 Pods 上的的网络流量。
- `autoscale`: 创建一个新的 Autoscaler 对象,即自动水平扩展控制器,提供 Deployment 自动水平伸缩支持。
`kubectl` 工具也支持由对象类型驱动的创建命令。 这些命令支持更多的对象类型,并且对其意图更为明确,但要求用户知道他们打算创建的对象的类型。
- `create <objecttype> [<subtype>] <instancename>`
某些对象类型具有您可以在“create"命令中指定的子类型.
例如,Service对象有几种子类型,包括ClusterIP,
LoadBalancer和NodePort. 以下是创建一个服务的示例
子类型NodePort:
一些对象类型允许你在 `create` 命令中指定子命令。例如,Service 对象拥有几个子命令,包括 ClusterIP、LoadBalancer 和 NodePort。以下是使用子命令 NodePort 创建服务的示例:
```shell
kubectl create service nodeport <myservicename>
```
在前面的例子中,调用 `create service nodeport`命令是 `create service`命令的子命令.
您可以使用 `-h` 标志来查找子命令支持的参数和标志:
```shell
kubectl create service nodeport -h
```
## 如何更新对象
`kubectl` 命令支持一些常见更新操作的动词驱动命令。这样命名可以让不熟悉 Kubernetes 对象的用户,在不知道必须设置的特定字段的情况下也可以执行更新操作:
- `scale`: 通过更新控制器的副本数量,水平扩展控制器以添加或删除 Pod。
- `annotate`: 从对象添加或删除注释。
- `label`: 为对象添加或删除标签。
`kubectl`命令还支持由对象的一个​​切面驱动的更新命令.设置此切面可能会为不同的对象类型设置不同的字段:
- `set` <field>: 设置对象的一个​​切面.
**注**: 在 Kubernetes 版本 1.5 中,并不是每个动词驱动的命令都有一个相关的切面驱动的命令.
`kubectl` 工具支持直接更新活动对象的其他方法,然而,它们需要更好的了解 Kubernetes 对象模式。
- `edit`: 通过在编辑器中打开其配置,直接编辑活动对象的原始配置。
- `patch`: 通过使用补丁字符串直接修改活动对象的特定字段。
有关补丁字符串的更多详细信息,请参阅补丁部分
[API 公约](https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#patch-operations).
## 如何删除对象
您可以使用 `delete` 命令从集群中删除一个对象:
- `delete <type>/<name>`
**注意**: 您可以对命令式命令和命令式对象配置都使用 `kubectl delete` 方法。两者的差异在于传递的命令参数不同。要将
`kubectl delete` 作为命令式命令使用,将要删除的对象作为参数传递。以下是传递名为 nginx 的 Deployment 对象的示例:
```shell
kubectl delete deployment/nginx
```
## 如何查看对象
{% comment %}
TODO(pwittrock): 实现时取消注释.
您可以使用 `kubectl view` 打印指定对象的字段。
- `view`: 打印对象的特定字段的值。
{% endcomment %}
有几个命令用于打印有关对象的信息:
- `get`: 打印有关匹配对象的基本信息。使用 `get -h` 来查看选项列表。
- `describe`: 打印有关匹配对象的聚合详细信息。
- `logs`: 打印 Pod 运行容器的 stdout 和 stderr 信息。
## 使用 `set` 命令在创建之前修改对象
有一些对象字段没有可以使用的标志,在 `create` 命令中。在某些情况下,您可以使用组合 `set``create` 为对象之前的字段指定一个值创建。这是通过将 `create` 命令的输出管道连接到 `set` 命令,然后回到 `create` 命令。以下是一个例子:
```sh
kubectl create service clusterip <myservicename> -o yaml --dry-run | kubectl set selector --local -f - 'environment=qa' -o yaml | kubectl create -f -
```
1. 使用 `create service -o yaml --dry-run` 创建服务配置,并将其作为 YAML 打印到 stdout,而不是将其发送到 Kubernetes API 服务器。
1. 使用 `set --local -f - -o yaml` 从 stdin 读取配置,并将更新后的配置作为 YAML 写入 stdout。
1. 使用 `kubectl create -f -` 从 stdin 提供的配置创建对象。
## 使用 `--edit` 在创建之前修改对象
您可以使用 `kubectl create --edit` 命令在对象创建之前,对对象进行任意更改。以下是一个例子:
```sh
kubectl create service clusterip my-svc -o yaml --dry-run > /tmp/srv.yaml
kubectl create --edit -f /tmp/srv.yaml
```
1. 使用`create service` 创建服务的配置并将其保存到 `/tmp/srv.yaml`
1. 使用`create --edit` 在创建对象之前打开配置文件进行编辑。
{% endcapture %}
{% capture whatsnext %}
- [使用对象配置管理 Kubernetes 对象(必要)](/docs/tutorials/object-management-kubectl/imperative-object-management-configuration/)
- [使用对象配置(声明式)管理 Kubernetes 对象](/docs/tutorials/object-management-kubectl/declarative-object-management-configuration/)
- [Kubectl 命令参考](/docs/user-guide/kubectl/v1.6/)
- [Kubernetes 对象模式参考](/docs/resources-reference/v1.6/)
{% endcapture %}
{% include templates/concept.md %}
@@ -0,0 +1,157 @@
---
title: Kubernetes 对象管理
redirect_from:
- "/docs/concepts/tools/kubectl/object-management-overview/"
- "/docs/concepts/tools/kubectl/object-management-overview.html"
- "/docs/user-guide/working-with-resources/"
- "/docs/user-guide/working-with-resources.html"
---
{% capture overview %}
`kubectl` 命令行工具支持 Kubernetes 对象几种不同的创建和管理方法。本文档简要介绍了这些方法.
{% endcapture %}
{% capture body %}
## 管理技巧
**警告:** Kubernetes 对象应该只使用一种技术进行管理。混合使用不同的技术,会导致相同对象出现未定义的行为。
| 管理技术 | 操作 |推荐环境 | 支持撰写 | 学习曲线 |
|----------------------------------|----------------------|------------------------|--------------------|----------------|
| 命令式的方式 | 活动对象 | 开发项目 | 1+ | 最低 |
| 命令式对象配置 | 单文件 | 生产项目 | 1 | 中等 |
| 声明式对象配置 | 文件目录 | 生产项目 | 1+ | 最高 |
## 命令式的方式
当使用命令式的命令时,用户直接对集群中的活动对象进行操作。用户提供 `kubectl` 命令的参数或标记进行操作。
这是在集群中启动或运行一次性任务的最简单的方法。因为这种技术直接在活动对象上运行,所以它没有提供以前配置的历史记录。
### 例子
通过创建 Deployment 对象来运行 nginx 容器的实例:
```sh
kubectl run nginx --image nginx
```
使用不同的语法做同样的事情:
```sh
kubectl create deployment nginx --image nginx
```
### 权衡
与对象配置相比的优点:
- 命令简单易学,易于记忆。
- 命令只需要一个步骤即可对群集进行更改。
与对象配置相比的缺点:
- 命令不与变更审核流程整合。
- 命令不提供与更改相关联的审计跟踪。
- 除了活动对象之外,命令不提供记录来源。
- 命令不提供用于创建新对象的模板。
## 命令式对象配置
在命令式对象配置中,`kubectl` 命令指定操作(创建,替换等),可选标志和至少一个文件名称。指定的文件必须包含对象的完整定义以 YAML 或 JSON 格式。
请参阅[参考资源](https://kubernetes.io/docs/resources-reference/v1.6/)
查看有关对象定义的更多细节。
**警告:** 命令式 `replace` 命令用新提供的命令替换现有资源规格,将对配置文件中缺少的对象的所有更改都丢弃。这种方法不应更新与配置文件无关的资源类型。例如,`LoadBalancer` 类型的服务使其 `externalIPs` 字段与集群的配置无关。
### 例子
创建对象定义配置文件:
```sh
kubectl create -f nginx.yaml
```
删除两个配置文件中定义的对象:
```sh
kubectl delete -f nginx.yaml -f redis.yaml
```
通过覆写实时配置更新配置文件中定义的对象:
```sh
kubectl replace -f nginx.yaml
```
### 权衡
与命令式的命令相比的优点:
- 对象配置可以存储在源码控制系统中,如Git。
- 对象配置可以与进程集成,例如在推送和审计跟踪之前查看更改。
- 对象配置提供了一个用于创建新对象的模板。
与命令式的命令相比的缺点:
- 对象配置需要对对象模式有基本的了解。
- 对象配置需要编写 YAML 文件的附加步骤。
与声明式对象配置相比的优势:
- 命令对象配置行为更简单易懂。
- 至于 Kubernetes 1.5 版本,命令式对象配置更为成熟。
与声明式对象配置相比的缺点:
- 命令对象配置最适合于文件,而不是目录。
- 活动对象的更新必须反映在配置文件中,否则在下次更替时将丢失。
## 声明式对象配置
当使用声明式对象配置时,用户对本地存储的对象配置文件进行操作,但是用户没有定义要对文件执行的操作。通过 `kubectl` 自动检测每个对象进行创建、更新和删除操作。这样可以在目录层级上工作,因为不同的对象可能需要不同的操作。
**注意:** 声明式对象配置保留由其他对象进行的更改,即使更改未合并到对象配置文件中。这可以通过使用 `patch` API 操作来写入观察到的差异,而不是使用`replace` API 操作来替换整个对象的配置。
### 例子
处理`configs` 目录中的所有对象配置文件,创建或修补(patch)活动对象:
```sh
kubectl apply -f configs/
```
递归处理目录:
```sh
kubectl apply -R -f configs/
```
### 权衡
与命令式对象配置相比的优点:
- 直接对活动对象进行的更改将被保留,即使它们未被并入到配置文件中。
- 声明式对象配置更好地支持目录操作,并自动检测每个对象的操作类型 (创建、修补,删除)。
与命令式对象配置相比的缺点:
- 声明式对象配置在意外情况下难以调试和了解结果。
- 使用差异的部分更新会创建复杂的合并和补丁操作。
{% endcapture %}
{% capture whatsnext %}
- [使用命令式的命令管理 Kubernetes 对象](/docs/tutorials/object-management-kubectl/imperative-object-management-command/)
- [使用对象配置管理 Kubernetes 对象(必要)](/docs/tutorials/object-management-kubectl/imperative-object-management-configuration/)
- [使用对象配置(声明式)管理 Kubernetes 对象](/docs/tutorials/object-management-kubectl/declarative-object-management-configuration/)
- [Kubectl 命令参考](/docs/user-guide/kubectl/v1.6/)
- [Kubernetes 对象模式参考](/docs/resources-reference/v1.6/)
{% comment %}
{% endcomment %}
{% endcapture %}
{% include templates/concept.md %}
+10
View File
@@ -0,0 +1,10 @@
---
assignees:
- k8s-merge-robot
title: 认识 Kubernetes?
---
{% include user-guide-content-moved.md %}
[认识 Kubernetes?](/docs/concepts/overview/what-is-kubernetes/)
+453
View File
@@ -0,0 +1,453 @@
#caseStudyTitle {
margin-top: 1em !important;
font-family:"Roboto", sans-serif;
}
body {
background-color:#ffffff;
}
p {
font-family:"Roboto", sans-serif;
padding:5%;
}
a {
text-decoration:none;
color:#3366ff;
}
body {
margin:0;
}
h1 {
font-family:"Roboto", sans-serif;
font-weight:bold;
letter-spacing:0.025em;
font-size:42px;
padding-bottom:0px;
}
.subhead {
font-size:26px;
font-weight:100;
line-height:40px;
padding-bottom:1%;
}
.banner1 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:12%;
padding-bottom:0.5%;
padding-left:9.9%;
font-size:32px;
background: url('/images/CaseStudy_box_banner1.jpg');
background-size:100% auto;
background-repeat:no-repeat;
}
.banner2 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:3%;
padding-bottom:3%;
font-size:21px;
letter-spacing:0.03em;
line-height:32px;
float:left;
background-size:100% auto;
background-color:#666666;
background-repeat:no-repeat;
}
.banner3 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:5%;
padding-bottom:5%;
font-size:21px;
letter-spacing:0.03em;
line-height:32px;
float:left;
background: url('/images/CaseStudy_box_banner3.jpg');
background-size:100% auto;
}
.banner4 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:5%;
padding-bottom:5%;
font-size:21px;
letter-spacing:0.03em;
line-height:32px;
float:left;
background: url('/images/CaseStudy_box_banner4.jpg');
background-size:100% auto;
}
.banner5 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:3%;
padding-bottom:3%;
font-size:21px;
letter-spacing:0.03em;
line-height:32px;
float:left;
background-size:100% auto;
background-color:#666666;
background-repeat:no-repeat;
}
.banner2text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:60%;
padding-left:19%;
float:left;
text-align:center;
}
.banner3text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:55%;
padding-left:21%;
text-align:center;
}
.banner4text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:55%;
padding-left:21%;
text-align:center;
}
.banner5text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:60%;
padding-left:19%;
float:left;
text-align:center;
}
h2 {
font-family:"Roboto", sans-serif;
font-weight:300;
font-size:24px;
line-height:34px;
color:#3366ff;
}
.quote {
font-family:"Roboto", sans-serif;
font-weight:300;
font-size:22px;
line-height:32px;
color:#3366ff;
}
.details {
font-family:"Roboto", sans-serif;
font-weight:300;
font-size:18px;
color:#3366ff;
letter-spacing:0.03em;
padding-bottom:1.5%;
padding-top:2%;
padding-left:10%;
}
hr {
border-bottom:0px solid;
width:100%;
opacity:0.5;
color:#aaaaaa;
height:1px;
}
.col1 {
width: 38%;
padding-left:5%;
padding-right:8%;
float:left;
font-family:"Roboto", sans-serif;
font-weight:100;
color:#606060;
line-height:20px;
letter-spacing:0.03em;
font-size:14px;
}
.col2 {
width: 44%;
font-family:"Roboto", sans-serif;
font-weight:300;
float:left;
line-height:20px;
color:#606060;
letter-spacing:0.03em;
font-size:14px;
}
.fullcol {
width:77%;
margin-left:11%;
margin-right:10%;
margin-top:4%;
margin-bottom:6%;
font-family:"Roboto", sans-serif;
font-weight:300;
float:left;
line-height:22px;
color:#606060;
letter-spacing:0.03em;
font-size:14px;
}
.cols {
width:77%;
margin-left:6%;
margin-top:1%;
margin-bottom:4%;
font-family:"Roboto", sans-serif;
font-weight:300;
float:left;
}
h4 {
font-family:"Roboto", sans-serif;
font-weight:400;
letter-spacing:0.9;
font-size:20px;
padding-bottom:0px;
}
@media screen and (max-width: 910px){
h1 {
font-family:"Roboto", sans-serif;
font-weight:bold;
line-height:36px;
letter-spacing:0.03em;
font-size:30px !important;
padding-bottom:0px;
width:80%;
}
.subhead {
font-size:18px;
font-weight:100;
line-height:27px;
}
.details {
font-family:"Roboto", sans-serif;
font-weight:300;
font-size:16px;
color:#3366ff;
letter-spacing:0.03em;
padding-bottom:2%;
line-height:28px;
padding-top:4%;
padding-left:10%;
}
.logo {
width:8%;
}
.col1 {
width: 100%;
padding-left:5%;
padding-right:8%;
float:left;
font-family:"Roboto", sans-serif;
font-weight:300;
color:#606060;
line-height:20px;
letter-spacing:0.03em;
font-size:14px;
}
.col2 {
width: 100%;
padding-left:5%;
padding-top:5%;
padding-bottom:5%;
font-family:"Roboto", sans-serif;
font-weight:300;
float:left;
line-height:20px;
color:#606060;
letter-spacing:0.03em;
font-size:14px;
}
.banner1 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:15%;
padding-bottom:2%;
padding-left:10%;
font-size:18px;
background: url('/images/CaseStudy_box_banner1.jpg');
background-size:100% auto;
}
.banner2 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:4%;
padding-bottom:4%;
padding-left:0%;
font-size:18px;
letter-spacing:0.03em;
line-height:24px;
width:100%;
float:left;
background:none;
background-color:#666666;
}
.banner3 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:5%;
padding-bottom:5%;
font-size:18px;
letter-spacing:0.03em;
line-height:24px;
width:100%;
float:left;
background: url('/images/CaseStudy_box_banner3.jpg');
}
.banner4 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:5%;
padding-bottom:5%;
font-size:18px;
letter-spacing:0.03em;
line-height:24px;
width:100%;
float:left;
background: url('/images/CaseStudy_box_banner4.jpg');
}
.banner5 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:4%;
padding-bottom:4%;
padding-left:0%;
font-size:18px;
letter-spacing:0.03em;
line-height:24px;
width:100%;
float:left;
background:none;
background-color:#666666;
}
.banner2text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:80%;
padding-left:10%;
float:left;
text-align:center;
color:#ffffff;
}
.banner4text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:80%;
padding-left:10%;
text-align:center;
}
.banner3text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:80%;
padding-left:10%;
text-align:center;
}
.banner5text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:80%;
padding-left:10%;
float:left;
text-align:center;
color:#ffffff;
}
.fullcol {
margin-top:6%;
}
h2 {
line-height:26px;
font-size:18px;
}
.quote {
font-size:18px;
line-height:24px;
}
.logo {
width:15%;
}
@media screen and (max-width: 480px){
.logo {
width:22%;
padding-bottom:2%;
}
}
+454
View File
@@ -0,0 +1,454 @@
#caseStudyTitle {
margin-top: 1em !important;
font-family:"Roboto", sans-serif;
}
p {
font-family:"Roboto", sans-serif;
padding:5%;
}
a {
text-decoration:none;
color:#3366ff;
}
body {
margin:0;
}
h1 {
font-family:"Roboto", sans-serif;
font-weight:bold;
letter-spacing:0.025em;
font-size:42px;
padding-bottom:0px;
}
.subhead {
font-size:26px;
font-weight:100;
line-height:40px;
padding-bottom:1%;
}
.banner1 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:12%;
padding-bottom:0.5%;
padding-left:9.9%;
font-size:32px;
background: url('/images/CaseStudy_golfnow_banner1.jpg');
background-size:100% auto;
background-repeat:no-repeat;
}
.banner2 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:3%;
padding-bottom:3%;
font-size:21px;
letter-spacing:0.03em;
line-height:32px;
float:left;
background-size:100% auto;
background-color:#666666;
background-repeat:no-repeat;
}
.banner3 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-left:5%;
padding-right:5%;
padding-top:6%;
padding-bottom:6%;
font-size:21px;
letter-spacing:0.03em;
line-height:32px;
float:left;
background: url('/images/CaseStudy_golfnow_banner3.jpg');
background-size:100% auto;
}
.banner4 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:5%;
padding-bottom:5%;
font-size:21px;
letter-spacing:0.03em;
line-height:32px;
float:left;
background: url('/images/CaseStudy_golfnow_banner4.jpg');
background-size:100% auto;
}
.banner5 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:3%;
padding-bottom:3%;
font-size:21px;
letter-spacing:0.03em;
line-height:32px;
float:left;
background-size:100% auto;
background-color:#666666;
background-repeat:no-repeat;
}
.banner2text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:60%;
padding-left:19%;
float:left;
text-align:center;
}
.banner3text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:70%;
padding-left:15%;
text-align:center;
}
.banner4text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:55%;
padding-left:21%;
text-align:center;
}
.banner5text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:60%;
padding-left:19%;
float:left;
text-align:center;
}
h2 {
font-family:"Roboto", sans-serif;
font-weight:300;
font-size:24px;
line-height:34px;
color:#3366ff;
}
.quote {
font-family:"Roboto", sans-serif;
font-weight:300;
font-size:22px;
line-height:32px;
color:#3366ff;
}
.details {
font-family:"Roboto", sans-serif;
font-weight:300;
font-size:18px;
color:#3366ff;
letter-spacing:0.03em;
padding-bottom:1.5%;
padding-top:2%;
padding-left:10%;
}
hr {
border-bottom:0px solid;
width:100%;
opacity:0.5;
color:#aaaaaa;
height:1px;
}
.col1 {
width: 38%;
padding-left:5%;
padding-right:8%;
float:left;
font-family:"Roboto", sans-serif;
font-weight:100;
color:#606060;
line-height:20px;
letter-spacing:0.03em;
font-size:14px;
}
.col2 {
width: 44%;
font-family:"Roboto", sans-serif;
font-weight:300;
float:left;
line-height:20px;
color:#606060;
letter-spacing:0.03em;
font-size:14px;
}
.fullcol {
width:77%;
margin-left:11%;
margin-right:10%;
margin-top:4%;
margin-bottom:6%;
font-family:"Roboto", sans-serif;
font-weight:300;
float:left;
line-height:22px;
color:#606060;
letter-spacing:0.03em;
font-size:14px;
}
.cols {
width:77%;
margin-left:6%;
margin-top:1%;
margin-bottom:4%;
font-family:"Roboto", sans-serif;
font-weight:300;
float:left;
}
h4 {
font-family:"Roboto", sans-serif;
font-weight:400;
letter-spacing:0.9;
font-size:20px;
padding-bottom:0px;
}
@media screen and (max-width: 910px){
h1 {
font-family:"Roboto", sans-serif;
font-weight:bold;
line-height:36px;
letter-spacing:0.03em;
font-size:30px !important;
padding-bottom:0px;
width:80%;
}
.subhead {
font-size:18px;
font-weight:100;
line-height:27px;
}
.details {
font-family:"Roboto", sans-serif;
font-weight:300;
font-size:16px;
color:#3366ff;
letter-spacing:0.03em;
padding-bottom:2%;
line-height:28px;
padding-top:4%;
padding-left:10%;
}
.logo {
width:8%;
}
.col1 {
width: 100%;
padding-left:5%;
padding-right:8%;
float:left;
font-family:"Roboto", sans-serif;
font-weight:300;
color:#606060;
line-height:20px;
letter-spacing:0.03em;
font-size:14px;
}
.col2 {
width: 100%;
padding-left:5%;
padding-top:5%;
padding-bottom:5%;
font-family:"Roboto", sans-serif;
font-weight:300;
float:left;
line-height:20px;
color:#606060;
letter-spacing:0.03em;
font-size:14px;
}
.banner1 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:15%;
padding-bottom:2%;
padding-left:10%;
font-size:18px;
background: url('/images/CaseStudy_golfnow_banner1.jpg');
background-size:100% auto;
}
.banner2 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:4%;
padding-bottom:4%;
padding-left:0%;
font-size:18px;
letter-spacing:0.03em;
line-height:24px;
width:100%;
float:left;
background:none;
background-color:#666666;
}
.banner3 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:5%;
padding-bottom:5%;
font-size:18px;
letter-spacing:0.03em;
line-height:24px;
width:80%;
padding-left:15%;
padding-right:10%;
float:left;
background: url('/images/CaseStudy_golfnow_banner3.jpg');
}
.banner4 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:5%;
padding-bottom:5%;
font-size:18px;
letter-spacing:0.03em;
line-height:24px;
width:100%;
float:left;
background: url('/images/CaseStudy_golfnow_banner4.jpg');
}
.banner5 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:4%;
padding-bottom:4%;
padding-left:0%;
font-size:18px;
letter-spacing:0.03em;
line-height:24px;
width:100%;
float:left;
background:none;
background-color:#666666;
}
.banner2text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:80%;
padding-left:10%;
float:left;
text-align:center;
color:#ffffff;
}
.banner3text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:80%;
padding-left:2%;
padding-right:10%;
padding-top:5%;
padding-bottom:5%;
text-align:center;
}
.banner4text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:80%;
padding-left:10%;
text-align:center;
}
.banner5text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:80%;
padding-left:10%;
float:left;
text-align:center;
color:#ffffff;
}
.fullcol {
margin-top:6%;
}
h2 {
line-height:26px;
font-size:18px;
}
.quote {
font-size:18px;
line-height:24px;
}
.logo {
width:35%;
}
@media screen and (max-width: 480px){
.logo {
width:50%;
padding-bottom:5%;
}
}
+38 -37
View File
@@ -3,16 +3,12 @@ assignees:
- bgrant0607
- erictune
- lavalamp
title: Overview
title: Controlling Access to the Kubernetes API
---
This document describes how access to the Kubernetes API is controlled.
## Overview
Users [access the API](/docs/user-guide/accessing-the-cluster) using `kubectl`,
client libraries, or by making REST requests. Both human users and
[Kubernetes service accounts](/docs/user-guide/service-accounts/) can be
[Kubernetes service accounts](/docs/tasks/configure-pod-container/configure-service-account/) can be
authorized for API access.
When a request reaches the API, it goes through several stages, illustrated in the
following diagram:
@@ -42,7 +38,7 @@ The input to the authentication step is the entire HTTP request, however, it typ
just examines the headers and/or client certificate.
Authentication modules include Client Certificates, Password, and Plain Tokens,
and JWT Tokens (used for service accounts).
Bootstrap Tokens, and JWT Tokens (used for service accounts).
Multiple authentication modules can be specified, in which case each one is tried in sequence,
until one of them succeeds.
@@ -61,43 +57,48 @@ users in its object store.
## Authorization
Once the request is authenticated as coming from a specific user,
it moves to a generic authorization step. This is shown as step **2** in the
diagram.
After the request is authenticated as coming from a specific user, the request must be authorized. This is shown as step **2** in the diagram.
The input to the Authorization step are attributes of the REST request, including:
- the username determined by the Authentication step.
- a `verb` associated with the API request. Most object support these common operations: `list, watch, create, update, patch, delete`. Some objects have "special verbs"; for example pods and services can be `proxy`-ed.
- any subresource associated with the API request (e.g. `status`).
- the Group, Version, and Kind of the API resource (e.g. `v1 pod`, or `batch/v1 job`) being
operated on.
- the name and namespace of the object.
A request must include the username of the requester, the requested action, and the object affected by the action. The request is authorized if an existing policy declares that the user has permissions to complete the requested action.
There are multiple supported Authorization Modules. The cluster creator configures the API
server with which Authorization Modules should be used. When multiple Authorization Modules
are configured, each is checked in sequence, and if any Module authorizes the request,
then the request can proceed. If all deny the request, then the request is denied (HTTP status
code 403).
For example, if Bob has the policy below, then he can read pods only in the namespace `projectCaribou`:
The [Authorization Modules](/docs/admin/authorization) page describes what authorization modules
are available and how to configure them.
```json
{
"apiVersion": "abac.authorization.kubernetes.io/v1beta1",
"kind": "Policy",
"spec": {
"user": "bob",
"namespace": "projectCaribou",
"resource": "pods",
"readonly": true
}
}
```
If Bob makes the following request, the request is authorized because he is allowed to read objects in the `projectCaribou` namespace:
For version 1.2, clusters created by `kube-up.sh` are configured so that no authorization is
required for any request.
```json
{
"apiVersion": "authorization.k8s.io/v1beta1",
"kind": "SubjectAccessReview",
"spec": {
"resourceAttributes": {
"namespace": "projectCaribou",
"verb": "get",
"group": "unicorn.example.org",
"resource": "pods"
}
}
}
```
If Bob makes a request to write (`create` or `update`) to the objects in the `projectCaribou` namespace, his authorization is denied. If Bob makes a request to read (`get`) objects in a different namespace such as `projectFish`, then his authorization is denied.
As of version 1.3, clusters created by `kube-up.sh` are configured so that the ABAC authorization
modules are enabled. However, its input file is initially set to allow all users to do all
operations. The cluster administrator needs to edit that file, or configure a different authorizer
to restrict what users can do.
Kubernetes authorization requires that you use common REST attributes to interact with existing organization-wide or cloud-provider-wide access control systems. It is important to use REST formatting because these control systems might interact with other APIs besides the Kubernetes API.
Kubernetes supports multiple authorization modules, such as ABAC mode, RBAC Mode, and Webhook mode. When an administrator creates a cluster, they configured the authorization modules that should be used in the API server. If more than one authorization modules are configured, Kubernetes checks each module, and if any module authorizes the request, then the request can proceed. If all of the modules deny the request, then the request is denied (HTTP status code 403).
The Authorization step is designed to operate on attributes that are likely to be common to most
REST requests, such as object name, kind, etc. This is intended to facilitate interation with
existing organization-wide or cloud-provider-wide access control systems (which may handle
other APIs besides the Kubernetes API).
To learn more about Kubernetes authorization, including details about creating policies using the supported authorization modules, see [Authorization Overview](/docs/admin/authorization).
Access controls and policies that depend on specific fields of specific Kinds of objects
are handled by Admission Controllers.
## Admission Control
@@ -142,7 +143,7 @@ By default the Kubernetes API server serves HTTP on 2 ports:
2. `Secure Port`:
- use whenever possible
- use whenever possible
- uses TLS. Set cert with `--tls-cert-file` and key with `--tls-private-key-file` flag.
- default is port 6443, change with `--secure-port` flag.
- default IP is first non-localhost network interface, change with `--bind-address` flag.
-31
View File
@@ -1,31 +0,0 @@
---
title: Installing Addons
---
## Overview
Add-ons extend the functionality of Kubernetes.
This page lists some of the available add-ons and links to their respective installation instructions.
Add-ons in each section are sorted alphabetically - the ordering does not imply any preferential status.
## Networking and Network Policy
* [Calico](http://docs.projectcalico.org/v2.0/getting-started/kubernetes/installation/hosted/) is a secure L3 networking and network policy provider.
* [Canal](https://github.com/tigera/canal/tree/master/k8s-install/kubeadm) unites Flannel and Calico, providing networking and network policy.
* [Contiv](http://contiv.github.io) provides configurable networking (native L3 using BGP, overlay using vxlan, classic L2, and Cisco-SDN/ACI) for various use cases and a rich policy framework. Contiv project is fully [open sourced](http://github.com/contiv). The [installer](http://github.com/contiv/install) provides both kubeadm and non-kubeadm based installation options.
* [Flannel](https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml) is an overlay network provider that can be used with Kubernetes.
* [Romana](http://romana.io) is a Layer 3 networking solution for pod networks that also supports the [NetworkPolicy API](/docs/user-guide/networkpolicies/). Kubeadm add-on installation details available [here](https://github.com/romana/romana/tree/master/containerize).
* [Weave Net](https://www.weave.works/docs/net/latest/kube-addon/) provides networking and network policy, will carry on working on both sides of a network partition, and does not require an external database.
## Visualization &amp; Control
* [Dashboard](https://github.com/kubernetes/dashboard#kubernetes-dashboard) is a dashboard web interface for Kubernetes.
* [Weave Scope](https://www.weave.works/documentation/scope-latest-installing/#k8s) is a tool for graphically visualizing your containers, pods, services etc. Use it in conjunction with a [Weave Cloud account](https://cloud.weave.works/) or host the UI yourself.
## Legacy Add-ons
There are several other add-ons documented in the deprecated [cluster/addons](https://github.com/kubernetes/kubernetes/tree/master/cluster/addons) directory.
Well-maintained ones should be linked to here. PRs welcome!
+58 -5
View File
@@ -87,7 +87,7 @@ The ImagePolicyWebhook plug-in allows a backend webhook to make admission decisi
```
#### Configuration File Format
ImagePolicyWebhook uses the admission config file `--admission-controller-config-file` to set configuration options for the behavior of the backend. This file may be json or yaml and has the following format:
ImagePolicyWebhook uses the admission config file `--admission-control-config-file` to set configuration options for the behavior of the backend. This file may be json or yaml and has the following format:
```javascript
{
@@ -197,7 +197,7 @@ We strongly recommend using this plug-in if you intend to make use of Kubernetes
### SecurityContextDeny
This plug-in will deny any pod with a [SecurityContext](/docs/user-guide/security-context) that defines options that were not available on the `Container`.
This plug-in will deny any pod that attempts to set certain escalating [SecurityContext](/docs/user-guide/security-context) fields. This should be enabled if a cluster doesn't utilize [pod security policies](/docs/user-guide/pod-security-policy) to restrict the set of values a security context can take.
### ResourceQuota
@@ -205,7 +205,7 @@ This plug-in will observe the incoming request and ensure that it does not viola
enumerated in the `ResourceQuota` object in a `Namespace`. If you are using `ResourceQuota`
objects in your Kubernetes deployment, you MUST use this plug-in to enforce quota constraints.
See the [resourceQuota design doc](https://github.com/kubernetes/kubernetes/blob/{{page.githubbranch}}/docs/design/admission_control_resource_quota.md) and the [example of Resource Quota](/docs/admin/resourcequota/) for more details.
See the [resourceQuota design doc](https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md) and the [example of Resource Quota](/docs/concepts/policy/resource-quotas/) for more details.
It is strongly encouraged that this plug-in is configured last in the sequence of admission control plug-ins. This is
so that quota is not prematurely incremented only for the request to be rejected later in admission control.
@@ -218,7 +218,7 @@ your Kubernetes deployment, you MUST use this plug-in to enforce those constrain
be used to apply default resource requests to Pods that don't specify any; currently, the default LimitRanger
applies a 0.1 CPU requirement to all Pods in the `default` namespace.
See the [limitRange design doc](https://github.com/kubernetes/kubernetes/blob/{{page.githubbranch}}/docs/design/admission_control_limit_range.md) and the [example of Limit Range](/docs/admin/limitrange/) for more details.
See the [limitRange design doc](https://git.k8s.io/community/contributors/design-proposals/admission_control_limit_range.md) and the [example of Limit Range](/docs/tasks/configure-pod-container/limit-range/) for more details.
### InitialResources (experimental)
@@ -227,7 +227,7 @@ then the plug-in auto-populates a compute resource request based on historical u
If there is not enough data to make a decision the Request is left unchanged.
When the plug-in sets a compute resource request, it annotates the pod with information on what compute resources it auto-populated.
See the [InitialResouces proposal](https://github.com/kubernetes/kubernetes/blob/{{page.githubbranch}}/docs/proposals/initial-resources.md) for more details.
See the [InitialResouces proposal](https://git.k8s.io/community/contributors/design-proposals/initial-resources.md) for more details.
### NamespaceLifecycle
@@ -257,9 +257,62 @@ storage classes and how to mark a storage class as default.
This plug-in sets the default forgiveness toleration for pods, which have no forgiveness tolerations, to tolerate
the taints `notready:NoExecute` and `unreachable:NoExecute` for 5 minutes.
### PodNodeSelector
This plug-in defaults and limits what node selectors may be used within a namespace by reading a namespace annotation and a global configuration.
#### Configuration File Format
PodNodeSelector uses the admission config file `--admission-control-config-file` to set configuration options for the behavior of the backend.
Note that the configuration file format will move to a versioned file in a future release.
This file may be json or yaml and has the following format:
```yaml
podNodeSelectorPluginConfig:
clusterDefaultNodeSelector: <node-selectors-labels>
namespace1: <node-selectors-labels>
namespace2: <node-selectors-labels>
```
#### Configuration Annotation Format
PodNodeSelector uses the annotation key `scheduler.alpha.kubernetes.io/node-selector` to assign node selectors to namespaces.
```yaml
apiVersion: v1
kind: Namespace
metadata:
annotations:
scheduler.alpha.kubernetes.io/node-selector: <node-selectors-labels>
name: namespace3
```
### PodSecurityPolicy
This plug-in acts on creation and modification of the pod and determines if it should be admitted
based on the requested security context and the available Pod Security Policies.
For Kubernetes < 1.6.0, the API Server must enable the extensions/v1beta1/podsecuritypolicy API
extensions group (`--runtime-config=extensions/v1beta1/podsecuritypolicy=true`).
See also [Pod Security Policy documentation](/docs/concepts/policy/pod-security-policy/)
for more information.
### NodeRestriction
This plug-in limits the `Node` and `Pod` objects a kubelet can modify. In order to be limited by this admission plugin,
kubelets must use credentials in the `system:nodes` group, with a username in the form `system:node:<nodeName>`.
Such kubelets will only be allowed to modify their own `Node` API object, and only modify `Pod` API objects that are bound to their node.
Future versions may add additional restrictions to ensure kubelets have the minimal set of permissions required to operate correctly.
## Is there a recommended set of plug-ins to use?
Yes.
For Kubernetes >= 1.6.0, we strongly recommend running the following set of admission control plug-ins (order matters):
```shell
--admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds
```
For Kubernetes >= 1.4.0, we strongly recommend running the following set of admission control plug-ins (order matters):
-9
View File
@@ -1,9 +0,0 @@
---
assignees:
- stclair
title: AppArmor
---
{% include user-guide-content-moved.md %}
[AppArmor](/docs/tutorials/clusters/apparmor/)
-10
View File
@@ -1,10 +0,0 @@
---
assignees:
- soltysh
- sttts
title: Audit in Kubernetes
---
{% include user-guide-content-moved.md %}
[Auditing](/docs/concepts/cluster-administration/audit/)
+196 -12
View File
@@ -54,7 +54,7 @@ You can enable multiple authentication methods at once. You should usually use a
- service account tokens for service accounts
- at least one other method for user authentication.
When multiple are enabled, the first authenticator module
When multiple authenticator modules are enabled, the first module
to successfully authenticate the request short-circuits evaluation.
The API server does not guarantee the order authenticators run in.
@@ -107,6 +107,41 @@ header as shown below.
Authorization: Bearer 31ada4fd-adec-460c-809a-9e56ceb75269
```
### Bootstrap Tokens
This feature is currently in **alpha**.
To allow for streamlined bootstrapping for new clusters, Kubernetes includes a
dynamically-managed Bearer token type called a *Bootstrap Token*. These tokens
are stored as Secrets in the `kube-system` namespace, where they can be
dynamically managed and created. Controller Manager contains a TokenCleaner
controller that deletes bootstrap tokens as they expire.
The tokens are of the form `[a-z0-9]{6}.[a-z0-9]{16}`. The first component is a
Token ID and the second component is the Token Secret. You specify the token
in an HTTP header as follows:
```http
Authorization: Bearer 781292.db7bc3a58fc5f07e
```
You must enable the Bootstrap Token Authenticator with the
`--experimental-bootstrap-token-auth` flag on the API Server. You must enable
the TokenCleaner controller via the `--controllers` flag on the Controller
Manager. This is done with something like `--controllers=*,tokencleaner`.
`kubeadm` will do this for you if you are using it to bootstrapping a cluster.
The authenticator authenticates as `system:bootstrap:<Token ID>`. It is
included in the `system:bootstrappers` group. The naming and groups are
intentionally limited to discourage users from using these tokens past
bootstrapping. The user names and group can be used (and are used by `kubeadm`)
to craft the appropriate authorization policies to support bootstrapping a
cluster.
Please see [Bootstrap Tokens](/docs/admin/bootstrap-tokens/) for in depth
documentation on the Bootstrap Token authenticator and controllers along with
how to manage these tokens with `kubeadm`.
### Static Password File
Basic authentication is enabled by passing the `--basic-auth-file=SOMEFILE`
@@ -115,9 +150,10 @@ and the password cannot be changed without restarting API server. Note that basi
authentication is currently supported for convenience while we finish making the
more secure modes described above easier to use.
The basic auth file is a csv file with a minimum of 3 columns: password,
user name, user id, followed by optional group names. Note, if you have more than
one group the column must be double quoted e.g.
The basic auth file is a csv file with a minimum of 3 columns: password, user name, user id.
In Kubernetes version 1.6 and later, you can specify an optional fourth column containing
comma-separated group names. If you have more than one group, you must enclose the fourth
column value in double quotes ("). See the following example:
```conf
password,user,uid,"group1,group2,group3"
@@ -145,7 +181,7 @@ talk to the API server. Accounts may be explicitly associated with pods using th
NOTE: `serviceAccountName` is usually omitted because this is done automatically.
```
apiVersion: extensions/v1beta1
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
@@ -459,11 +495,45 @@ HTTP status codes can be used to supply additional error context.
The API server can be configured to identify users from request header values, such as `X-Remote-User`.
It is designed for use in combination with an authenticating proxy, which sets the request header value.
* `--requestheader-username-headers` Required, case-insensitive. Header names to check, in order, for the user identity. The first header containing a value is used as the username.
* `--requestheader-group-headers` 1.6+. Optional, case-insensitive. "X-Remote-Group" is suggested. Header names to check, in order, for the user's groups. All values in all specified headers are used as group names.
* `--requestheader-extra-headers-prefix` 1.6+. Optional, case-insensitive. "X-Remote-Extra-" is suggested. Header prefixes to look for to determine extra information about the user (typically used by the configured authorization plugin). Any headers beginning with any of the specified prefixes have the prefix removed, the remainder of the header name becomes the extra key, and the header value is the extra value.
For example, with this configuration:
```
--requestheader-username-headers=X-Remote-User
--requestheader-group-headers=X-Remote-Group
--requestheader-extra-headers-prefix=X-Remote-Extra-
```
this request:
```
GET / HTTP/1.1
X-Remote-User: fido
X-Remote-Group: dogs
X-Remote-Group: dachshunds
X-Remote-Extra-Scopes: openid
X-Remote-Extra-Scopes: profile
```
would result in this user info:
```yaml
name: fido
groups:
- dogs
- dachshunds
extra:
scopes:
- openid
- profile
```
In order to prevent header spoofing, the authenticating proxy is required to present a valid client
certificate to the API server for validation against the specified CA before the request headers are
checked.
* `--requestheader-username-headers` Required, case-insensitive. Header names to check, in order, for the user identity. The first header containing a value is used as the identity.
* `--requestheader-client-ca-file` Required. PEM-encoded certificate bundle. A valid client certificate must be presented and validated against the certificate authorities in the specified file before the request headers are checked for user names.
* `--requestheader-allowed-names` Optional. List of common names (cn). If set, a valid client certificate with a Common Name (cn) in the specified list must be presented before the request headers are checked for user names. If empty, any Common Name is allowed.
@@ -493,9 +563,6 @@ changes](https://github.com/kubernetes/kubernetes/pull/25536) for more details.
## Anonymous requests
Anonymous access is enabled by default, and can be disabled by passing `--anonymous-auth=false`
option to the API server during startup.
When enabled, requests 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`.
@@ -504,8 +571,119 @@ For example, on a server with token authentication configured, and anonymous acc
a request providing an invalid bearer token would receive a `401 Unauthorized` error.
A request providing no bearer token would be treated as an anonymous request.
If you rely on authentication alone to authorize access, either change to use an
authorization mode other than `AlwaysAllow`, or set `--anonymous-auth=false`.
In 1.5.1-1.5.x, anonymous access is disabled by default, and can be enabled by
passing the `--anonymous-auth=false` option to the API server.
In 1.6+, anonymous access is enabled by default if an authorization mode other than `AlwaysAllow`
is used, and can be disabled by passing the `--anonymous-auth=false` option to the API server.
Starting in 1.6, the ABAC and RBAC authorizers require explicit authorization of the
`system:anonymous` user or the `system:unauthenticated` group, so legacy policy rules
that grant access to the `*` user or `*` group do not include anonymous users.
## User impersonation
A user can act as another user through impersonation headers. These let requests
manually override the user info a request authenticates as. For example, an admin
could use this feature to debug an authorization policy by temporarily
impersonating another user and seeing if a request was denied.
Impersonation requests first authenticate as the requesting user, then switch
to the impersonated user info.
* A user makes an API call with their credentials _and_ impersonation headers.
* API server authenticates the user.
* API server ensures the authenticated users has impersonation privileges.
* Request user info is replaced with impersonation values.
* Request is evaluated, authorization acts on impersonated user info.
The following HTTP headers can be used to performing an impersonation request:
* `Impersonate-User`: The username to act as.
* `Impersonate-Group`: A group name to act as. Can be provided multiple times to set multiple groups. Optional. Requires "Impersonate-User"
* `Impersonate-Extra-( extra name )`: A dynamic header used to associate extra fields with the user. Optional. Requires "Impersonate-User"
An example set of headers:
```http
Impersonate-User: jane.doe@example.com
Impersonate-Group: developers
Impersonate-Group: admins
Impersonate-Extra-dn: cn=jane,ou=engineers,dc=example,dc=com
Impersonate-Extra-scopes: view
Impersonate-Extra-scopes: development
```
When using `kubectl` set the `--as` flag to configure the `Impersonate-User`
header, set the `--as-group` flag to configure the `Impersonate-Group` header.
```shell
$ kubectl drain mynode
Error from server (Forbidden): User "clark" cannot get nodes at the cluster scope. (get nodes mynode)
$ kubectl drain mynode --as=superman --as-group=system:masters
node "mynode" cordoned
node "mynode" drained
```
To impersonate a user, group, or set extra fields, the impersonating user must
have the ability to perform the "impersonate" verb on the kind of attribute
being impersonated ("user", "group", etc.). For clusters that enable the RBAC
authorization plugin, the following ClusterRole encompasses the rules needed to
set user and group impersonation headers:
```yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: impersonator
rules:
- apiGroups: [""]
resources: ["users", "groups", "serviceaccounts"]
verbs: ["impersonate"]
```
Extra fields are evaluated as sub-resources of the resource "userextras". To
allow a user to use impersonation headers for the extra field "scopes," a user
should be granted the following role:
```yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: scopes-impersonator
# Can set "Impersonate-Extra-scopes" header.
- apiGroups: ["authentication.k8s.io"]
resources: ["userextras/scopes"]
verbs: ["impersonate"]
```
The values of impersonation headers can also be restricted by limiting the set
of `resourceNames` a resource can take.
```yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: limited-impersonator
rules:
# Can impersonate the user "jane.doe@example.com"
- apiGroups: [""]
resources: ["users"]
verbs: ["impersonate"]
resourceNames: ["jane.doe@example.com"]
# Can impersonate the groups "developers" and "admins"
- apiGroups: [""]
resources: ["groups"]
- verbs: ["impersonate"]
resourceNames: ["developers","admins"]
# Can impersonate the extras field "scopes" with the values "view" and "development"
- apiGroups: ["authentication.k8s.io"]
resources: ["userextras/scopes"]
verbs: ["impersonate"]
resourceNames: ["view", "development"]
```
## Plugin Development
@@ -525,7 +703,7 @@ using an existing deployment script or manually through `easyrsa` or `openssl.`
#### Using an Existing Deployment Script
**Using an existing deployment script** is implemented at
`cluster/saltbase/salt/generate-cert/make-ca-cert.sh`.
`cluster/saltbase/salt/generate-cert/make-ca-cert.sh`.
Execute this script with two parameters. The first is the IP address
of API server. The second is a list of subject alternate names in the form `IP:<ip-address> or DNS:<dns-name>`.
@@ -586,3 +764,9 @@ Finally, add the following parameters into API server start parameters:
openssl x509 -noout -text -in ./server.crt
Finally, do not forget to fill out and add the same parameters into the API server start parameters.
#### Certificates API
You can use the `certificates.k8s.io` API to provision
x509 certificates to use for authentication as documented
[here](/docs/tasks/tls/managing-tls-in-a-cluster).
-674
View File
@@ -1,674 +0,0 @@
---
assignees:
- erictune
- lavalamp
- deads2k
- liggitt
title: Using Authorization Plugins
---
In Kubernetes, authorization happens as a separate step from authentication.
See the [Accessing Control Overview](/docs/admin/accessing-the-api/) for an
overview of how authentication and authorization are applied to requests.
Authorization applies to all HTTP accesses on the main (secure) apiserver port.
The authorization check for any request compares attributes of the context of
the request, (such as user, resource, and namespace) with access
policies. An API call must be allowed by some policy in order to proceed.
The following implementations are available, and are selected by flag:
- `--authorization-mode=AlwaysDeny` blocks all requests (used in tests).
- `--authorization-mode=AlwaysAllow` allows all requests; use if you don't
need authorization.
- `--authorization-mode=ABAC` allows for a simple local-file-based user-configured
authorization policy. ABAC stands for Attribute-Based Access Control.
- `--authorization-mode=RBAC` is an experimental implementation which allows
for authorization to be driven by the Kubernetes API.
RBAC stands for Role-Based Access Control.
- `--authorization-mode=Webhook` allows for authorization to be driven by a
remote service using REST.
If multiple modes are provided the set is unioned, and only a single authorizer is required to admit the action. This means the flag:
```
--authorization-mode=AlwaysDeny,AlwaysAllow
```
will always allow.
## Request Attributes
A request has the following attributes that can be considered for authorization:
- user (the user-string which a user was authenticated as).
- group (the list of group names the authenticated user is a member of).
- "extra" (a map of arbitrary string keys to string values, provided by the authentication layer)
- whether the request is for an API resource.
- the request path.
- allows authorizing access to miscellaneous non-resource endpoints like `/api` or `/healthz` (see [kubectl](#kubectl)).
- the request verb.
- API verbs `get`, `list`, `create`, `update`, `patch`, `watch`, `proxy`, `redirect`, `delete`, and `deletecollection` are used for resource requests
- HTTP verbs `get`, `post`, `put`, and `delete` are used for non-resource requests
- what resource is being accessed (for resource requests only)
- what subresource is being accessed (for resource requests only)
- the namespace of the object being accessed (for namespaced resource requests only)
- the API group being accessed (for resource requests only); an empty string designates the [core API group](/docs/api/)
The request verb for a resource API endpoint can be determined by the HTTP verb used and whether or not the request acts on an individual resource or a collection of resources:
HTTP verb | request verb
----------|---------------
POST | create
GET, HEAD | get (for individual resources), list (for collections)
PUT | update
PATCH | patch
DELETE | delete (for individual resources), deletecollection (for collections)
## ABAC Mode
### Policy File Format
For mode `ABAC`, also specify `--authorization-policy-file=SOME_FILENAME`.
The file format is [one JSON object per line](http://jsonlines.org/). There
should be no enclosing list or map, just one map per line.
Each line is a "policy object". A policy object is a map with the following
properties:
- Versioning properties:
- `apiVersion`, type string; valid values are "abac.authorization.kubernetes.io/v1beta1". Allows versioning and conversion of the policy format.
- `kind`, type string: valid values are "Policy". Allows versioning and conversion of the policy format.
- `spec` property set to a map with the following properties:
- Subject-matching properties:
- `user`, type string; the user-string from `--token-auth-file`. If you specify `user`, it must match the username of the authenticated user.
- `group`, type string; if you specify `group`, it must match one of the groups of the authenticated user. `system:authenticated` matches all authenticated requests. `system:unauthenticated` matches all unauthenticated requests.
- Resource-matching properties:
- `apiGroup`, type string; an API group.
- Ex: `extensions`
- Wildcard: `*` matches all API groups.
- `namespace`, type string; a namespace.
- Ex: `kube-system`
- Wildcard: `*` matches all resource requests.
- `resource`, type string; a resource type
- Ex: `pods`
- Wildcard: `*` matches all resource requests.
- Non-resource-matching properties:
- `nonResourcePath`, type string; non-resource request paths.
- Ex: `/version` or `/apis`
- Wildcard:
- `*` matches all non-resource requests.
- `/foo/*` matches `/foo/` and all of its subpaths.
- `readonly`, type boolean, when true, means that the policy only applies to get, list, and watch operations.
**NOTES:** An unset property is the same as a property set to the zero value for its type
(e.g. empty string, 0, false). However, unset should be preferred for
readability.
In the future, policies may be expressed in a JSON format, and managed via a
REST interface.
### Authorization Algorithm
A request has attributes which correspond to the properties of a policy object.
When a request is received, the attributes are determined. Unknown attributes
are set to the zero value of its type (e.g. empty string, 0, false).
A property set to `"*"` will match any value of the corresponding attribute.
The tuple of attributes is checked for a match against every policy in the
policy file. If at least one line matches the request attributes, then the
request is authorized (but may fail later validation).
To permit any authenticated user to do something, write a policy with the
group property set to `"system:authenticated"`.
To permit any unauthenticated user to do something, write a policy with the
group property set to `"system:unauthenticated"`.
To permit a user to do anything, write a policy with the apiGroup, namespace,
resource, and nonResourcePath properties set to `"*"`.
### Kubectl
Kubectl uses the `/api` and `/apis` endpoints of api-server to negotiate
client/server versions. To validate objects sent to the API by create/update
operations, kubectl queries certain swagger resources. For API version `v1`
those would be `/swaggerapi/api/v1` & `/swaggerapi/experimental/v1`.
When using ABAC authorization, those special resources have to be explicitly
exposed via the `nonResourcePath` property in a policy (see [examples](#examples) below):
* `/api`, `/api/*`, `/apis`, and `/apis/*` for API version negotiation.
* `/version` for retrieving the server version via `kubectl version`.
* `/swaggerapi/*` for create/update operations.
To inspect the HTTP calls involved in a specific kubectl operation you can turn
up the verbosity:
kubectl --v=8 version
### Examples
1. Alice can do anything to all resources:
```json
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "alice", "namespace": "*", "resource": "*", "apiGroup": "*"}}
```
2. Kubelet can read any pods:
```json
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "kubelet", "namespace": "*", "resource": "pods", "readonly": true}}
```
3. Kubelet can read and write events:
```json
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "kubelet", "namespace": "*", "resource": "events"}}
```
4. Bob can just read pods in namespace "projectCaribou":
```json
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "bob", "namespace": "projectCaribou", "resource": "pods", "readonly": true}}
```
5. Anyone can make read-only requests to all non-resource paths:
```json
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"group": "system:authenticated", "readonly": true, "nonResourcePath": "*"}}
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"group": "system:unauthenticated", "readonly": true, "nonResourcePath": "*"}}
```
[Complete file example](http://releases.k8s.io/{{page.githubbranch}}/pkg/auth/authorizer/abac/example_policy_file.jsonl)
### A quick note on service accounts
A service account automatically generates a user. The user's name is generated
according to the naming convention:
```shell
system:serviceaccount:<namespace>:<serviceaccountname>
```
Creating a new namespace also causes a new service account to be created, of
this form:
```shell
system:serviceaccount:<namespace>:default
```
For example, if you wanted to grant the default service account in the
kube-system full privilege to the API, you would add this line to your policy
file:
```json
{"apiVersion":"abac.authorization.kubernetes.io/v1beta1","kind":"Policy","spec":{"user":"system:serviceaccount:kube-system:default","namespace":"*","resource":"*","apiGroup":"*"}}
```
The apiserver will need to be restarted to pickup the new policy lines.
## RBAC Mode
When specified "RBAC" (Role-Based Access Control) uses the
"rbac.authorization.k8s.io" API group to drive authorization decisions,
allowing admins to dynamically configure permission policies through the
Kubernetes API.
As of 1.3 RBAC mode is in alpha and considered experimental.
To use RBAC, you must both enable the authorization module with `--authorization-mode=RBAC`,
and [enable the API version](
/docs/admin/cluster-management/#turn-on-or-off-an-api-version-for-your-cluster),
with a `--runtime-config=` that includes `rbac.authorization.k8s.io/v1alpha1`.
### Privilege Escalation Prevention and Bootstrapping
The `rbac.authorization.k8s.io` API group inherently attempts to prevent users
from escalating privileges. Simply put, __a user can't grant permissions they
don't already have even when the RBAC authorizer it disabled__. If "user-1"
does not have the ability to read secrets in "namespace-a", they cannot create
a binding that would grant that permission to themselves or any other user.
When bootstrapping, superuser credentials should include the `system:masters`
group, for example by creating a client cert with `/O=system:masters`. This
gives those credentials full access to the API and allows an admin to then set
up bindings for other users.
In Kubernetes versions 1.4 and 1.5, there was a similar flag that gave a user
full access:
```
--authorization-rbac-super-user=admin
```
__This flag will be removed in 1.6__. Admins should prefer the `system:masters`
group when setting up clusters.
### Roles, RolesBindings, ClusterRoles, and ClusterRoleBindings
The RBAC API Group declares four top level types which will be covered in this
section. Users can interact with these resources as they would with any other
API resource. Through `kubectl`, direct calls to the API, etc. For instance,
`kubectl create -f (resource).yml` can be used with any of these examples,
though readers who wish to follow along should review the following section on
bootstrapping first.
In the RBAC API Group, roles hold a logical grouping of permissions. These
permissions map very closely to ABAC policies, but only contain information
about requests being made. Permission are purely additive, rules may only omit
permissions they do not wish to grant.
Here's an example of a role which grants read access to pods within the
"default" namespace.
```yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""] # The API group "" indicates the core API Group.
resources: ["pods"]
verbs: ["get", "watch", "list"]
```
`ClusterRoles` hold the same information as a `Role` but can apply to any
namespace as well as non-namespaced resources (such as `Nodes`,
`PersistentVolume`, etc.). The following `ClusterRole` can grant permissions to
read secrets in any namespace.
```yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
# "namespace" omitted since ClusterRoles are not namespaced.
name: secret-reader
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "watch", "list"]
nonResourceURLs: []
```
`RoleBindings` perform the task of granting the permission to a user or set of
users. They hold a list of subjects which they apply to, and a reference to the
`Role` being assigned.
The following `RoleBinding` assigns the "pod-reader" role to the user "jane"
within the "default" namespace, and allows jane to read pods.
```yaml
# This role binding allows "jane" to read pods in the namespace "default"
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
name: read-pods
namespace: default
subjects:
- kind: User # May be "User", "Group" or "ServiceAccount"
name: jane
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
```
`RoleBindings` may also refer to a `ClusterRole`. However, a `RoleBinding` that
refers to a `ClusterRole` only applies in the `RoleBinding`'s namespace, not at
the cluster level. This allows admins to define a set of common roles for the
entire cluster, then reuse them in multiple namespaces.
For instance, even though the following `RoleBinding` refers to a `ClusterRole`,
"dave" (the subject) will only be able read secrets in the "development"
namespace, the namespace of the `RoleBinding`.
```yaml
# This role binding allows "dave" to read secrets in the namespace "development"
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
name: read-secrets
namespace: development # This binding only applies in the "development" namespace
subjects:
- kind: User # May be "User", "Group" or "ServiceAccount"
name: dave
roleRef:
kind: ClusterRole
name: secret-reader
apiGroup: rbac.authorization.k8s.io
```
Finally a `ClusterRoleBinding` may be used to grant permissions in all
namespaces. The following `ClusterRoleBinding` allows any user in the group
"manager" to read secrets in any namespace.
```yaml
# This cluster role binding allows anyone in the "manager" group to read secrets in any namespace.
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
name: read-secrets-global
subjects:
- kind: Group # May be "User", "Group" or "ServiceAccount"
name: manager
roleRef:
kind: ClusterRole
 name: secret-reader
apiGroup: rbac.authorization.k8s.io
```
### Referring to Resources
Most resources are represented by a string representation of their name, such as "pods", just as it
appears in the URL for the relevant API endpoint. However, some Kubernetes APIs involve a
"subresource" such as the logs for a pod. The URL for the pods logs endpoint is:
```
GET /api/v1/namespaces/{namespace}/pods/{name}/log
```
In this case, "pods" is the namespaced resource, and "log" is a subresource of pods. To represent
this in an RBAC role, use a slash to delimit the resource and subresource names. To allow a subject
to read both pods and pod logs, you would write:
```yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
namespace: default
name: pod-and-pod-logs-reader
rules:
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "list"]
```
### Referring to Subjects
RoleBindings and ClusterRoleBindings bind "subjects" to "roles".
Subjects can be groups, users or service accounts.
Users are represented by strings. These can be plain usernames, like
"alice", or email style names, like "bob@example.com", or numeric ids
as string. It is up to the Kubernetes admin to configure
the [authentication modules](/docs/admin/authentication/) to produce
usernames in the desired format. The RBAC authorization system does
not require any particular format. However, the prefix `system:` is
reserved for Kubernetes system use, and so the admin should ensure
usernames should not contain this prefix by accident.
Groups information in Kubernetes is currently provided by the Authenticator
modules. (In the future we may add a separate way for the RBAC Authorizer
to query groups information for users.) Groups, like users, are represented
by a string, and that string has no format requirements, other than that the
prefix `system:` is reserved.
Service Accounts have usernames with the `system:` prefix and belong
to groups with the `system:` prefix.
#### Role Binding Examples
Only the `subjects` section of a RoleBinding object shown in the following examples.
For a user called `alice@example.com`, specify
```yaml
subjects:
- kind: User
name: "alice@example.com"
```
For a group called `frontend-admins`, specify:
```yaml
subjects:
- kind: Group
name: "frontend-admins"
```
For the default service account in the kube-system namespace:
```yaml
subjects:
- kind: ServiceAccount
name: default
namespace: kube-system
```
For all service accounts in the `qa` namespace:
```yaml
subjects:
- kind: Group
name: system:serviceaccounts:qa
```
For all service accounts everywhere:
```yaml
subjects:
- kind: Group
name: system:serviceaccounts
```
For all authenticated users:
```yaml
subjects:
- kind: Group
name: system:authenticated
```
For all unauthenticated users:
```yaml
subjects:
- kind: Group
name: system:unauthenticated
```
For all users:
```yaml
subjects:
- kind: Group
name: system:authenticated
- kind: Group
name: system:unauthenticated
```
## Webhook Mode
When specified, mode `Webhook` causes Kubernetes to query an outside REST
service when determining user privileges.
### Configuration File Format
Mode `Webhook` requires a file for HTTP configuration, specify by the
`--authorization-webhook-config-file=SOME_FILENAME` flag.
The configuration file uses the [kubeconfig](/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/)
file format. Within the file "users" refers to the API Server webhook and
"clusters" refers to the remote service.
A configuration example which uses HTTPS client auth:
```yaml
# clusters refers to the remote service.
clusters:
- name: name-of-remote-authz-service
cluster:
certificate-authority: /path/to/ca.pem # CA for verifying the remote service.
server: https://authz.example.com/authorize # URL of remote service to query. Must use 'https'.
# users refers to the API Server's webhook configuration.
users:
- name: name-of-api-server
user:
client-certificate: /path/to/cert.pem # cert for the webhook plugin to use
client-key: /path/to/key.pem # key matching the cert
# kubeconfig files require a context. Provide one for the API Server.
current-context: webhook
contexts:
- context:
cluster: name-of-remote-authz-service
user: name-of-api-server
name: webhook
```
### Request Payloads
When faced with an authorization decision, the API Server POSTs a JSON
serialized api.authorization.v1beta1.SubjectAccessReview object describing the
action. This object contains fields describing the user attempting to make the
request, and either details about the resource being accessed or requests
attributes.
Note that webhook API objects are subject to the same [versioning compatibility rules](/docs/api/)
as other Kubernetes API objects. Implementers should be aware of looser
compatibility promises for beta objects and check the "apiVersion" field of the
request to ensure correct deserialization. Additionally, the API Server must
enable the `authorization.k8s.io/v1beta1` API extensions group (`--runtime-config=authorization.k8s.io/v1beta1=true`).
An example request body:
```json
{
"apiVersion": "authorization.k8s.io/v1beta1",
"kind": "SubjectAccessReview",
"spec": {
"resourceAttributes": {
"namespace": "kittensandponies",
"verb": "GET",
"group": "unicorn.example.org",
"resource": "pods"
},
"user": "jane",
"group": [
"group1",
"group2"
]
}
}
```
The remote service is expected to fill the SubjectAccessReviewStatus field of
the request and respond to either allow or disallow access. The response body's
"spec" field is ignored and may be omitted. A permissive response would return:
```json
{
"apiVersion": "authorization.k8s.io/v1beta1",
"kind": "SubjectAccessReview",
"status": {
"allowed": true
}
}
```
To disallow access, the remote service would return:
```json
{
"apiVersion": "authorization.k8s.io/v1beta1",
"kind": "SubjectAccessReview",
"status": {
"allowed": false,
"reason": "user does not have read access to the namespace"
}
}
```
Access to non-resource paths are sent as:
```json
{
"apiVersion": "authorization.k8s.io/v1beta1",
"kind": "SubjectAccessReview",
"spec": {
"nonResourceAttributes": {
"path": "/debug",
"verb": "GET"
},
"user": "jane",
"group": [
"group1",
"group2"
]
}
}
```
Non-resource paths include: `/api`, `/apis`, `/metrics`, `/resetMetrics`,
`/logs`, `/debug`, `/healthz`, `/swagger-ui/`, `/swaggerapi/`, `/ui`, and
`/version.` Clients require access to `/api`, `/api/*`, `/apis`, `/apis/*`,
and `/version` to discover what resources and versions are present on the server.
Access to other non-resource paths can be disallowed without restricting access
to the REST api.
For further documentation refer to the authorization.v1beta1 API objects and
plugin/pkg/auth/authorizer/webhook/webhook.go.
## Module Development
Other implementations can be developed fairly easily.
The APIserver calls the Authorizer interface:
```go
type Authorizer interface {
Authorize(a Attributes) error
}
```
to determine whether or not to allow each API action.
An authorization plugin is a module that implements this interface.
Authorization plugin code goes in `pkg/auth/authorizer/$MODULENAME`.
An authorization module can be completely implemented in go, or can call out
to a remote authorization service. Authorization modules can implement
their own caching to reduce the cost of repeated authorization calls with the
same or similar arguments. Developers should then consider the interaction
between caching and revocation of permissions.
### Checking API Access
Kubernetes exposes the `subjectaccessreviews.v1beta1.authorization.k8s.io` resource as a
normal resource that allows external access to API authorizer decisions. No matter which authorizer
you choose to use, you can issue a `POST` with a `SubjectAccessReview` just like the webhook
authorizer to the `apis/authorization.k8s.io/v1beta1/subjectaccessreviews` endpoint and
get back a response. For instance:
```bash
kubectl create --v=8 -f - << __EOF__
{
"apiVersion": "authorization.k8s.io/v1beta1",
"kind": "SubjectAccessReview",
"spec": {
"resourceAttributes": {
"namespace": "kittensandponies",
"verb": "GET",
"group": "unicorn.example.org",
"resource": "pods"
},
"user": "jane",
"group": [
"group1",
"group2"
]
}
}
__EOF__
--- snip lots of output ---
I0913 08:12:31.362873 27425 request.go:908] Response Body: {"kind":"SubjectAccessReview","apiVersion":"authorization.k8s.io/v1beta1","metadata":{"creationTimestamp":null},"spec":{"resourceAttributes":{"namespace":"kittensandponies","verb":"GET","group":"unicorn.example.org","resource":"pods"},"user":"jane","group":["group1","group2"]},"status":{"allowed":true}}
subjectaccessreview "" created
```
This is useful for debugging access problems, in that you can use this resource
to determine what access an authorizer is granting.
+155
View File
@@ -0,0 +1,155 @@
---
assignees:
- erictune
- lavalamp
- deads2k
- liggitt
title: ABAC Mode
---
{% capture overview %}
Attribute-based access control (ABAC) defines an access control paradigm whereby access rights are granted to users through the use of policies which combine attributes together.
{% endcapture %}
{% capture body %}
## Policy File Format
For mode `ABAC`, also specify `--authorization-policy-file=SOME_FILENAME`.
The file format is [one JSON object per line](http://jsonlines.org/). There
should be no enclosing list or map, just one map per line.
Each line is a "policy object". A policy object is a map with the following
properties:
- Versioning properties:
- `apiVersion`, type string; valid values are "abac.authorization.kubernetes.io/v1beta1". Allows versioning and conversion of the policy format.
- `kind`, type string: valid values are "Policy". Allows versioning and conversion of the policy format.
- `spec` property set to a map with the following properties:
- Subject-matching properties:
- `user`, type string; the user-string from `--token-auth-file`. If you specify `user`, it must match the username of the authenticated user.
- `group`, type string; if you specify `group`, it must match one of the groups of the authenticated user. `system:authenticated` matches all authenticated requests. `system:unauthenticated` matches all unauthenticated requests.
- Resource-matching properties:
- `apiGroup`, type string; an API group.
- Ex: `extensions`
- Wildcard: `*` matches all API groups.
- `namespace`, type string; a namespace.
- Ex: `kube-system`
- Wildcard: `*` matches all resource requests.
- `resource`, type string; a resource type
- Ex: `pods`
- Wildcard: `*` matches all resource requests.
- Non-resource-matching properties:
- `nonResourcePath`, type string; non-resource request paths.
- Ex: `/version` or `/apis`
- Wildcard:
- `*` matches all non-resource requests.
- `/foo/*` matches all subpaths of `/foo/`.
- `readonly`, type boolean, when true, means that the policy only applies to get, list, and watch operations.
**NOTES:** An unset property is the same as a property set to the zero value for its type
(e.g. empty string, 0, false). However, unset should be preferred for
readability.
In the future, policies may be expressed in a JSON format, and managed via a
REST interface.
## Authorization Algorithm
A request has attributes which correspond to the properties of a policy object.
When a request is received, the attributes are determined. Unknown attributes
are set to the zero value of its type (e.g. empty string, 0, false).
A property set to `"*"` will match any value of the corresponding attribute.
The tuple of attributes is checked for a match against every policy in the
policy file. If at least one line matches the request attributes, then the
request is authorized (but may fail later validation).
To permit any authenticated user to do something, write a policy with the
group property set to `"system:authenticated"`.
To permit any unauthenticated user to do something, write a policy with the
group property set to `"system:unauthenticated"`.
To permit a user to do anything, write a policy with the apiGroup, namespace,
resource, and nonResourcePath properties set to `"*"`.
## Kubectl
Kubectl uses the `/api` and `/apis` endpoints of api-server to negotiate
client/server versions. To validate objects sent to the API by create/update
operations, kubectl queries certain swagger resources. For API version `v1`
those would be `/swaggerapi/api/v1` & `/swaggerapi/experimental/v1`.
When using ABAC authorization, those special resources have to be explicitly
exposed via the `nonResourcePath` property in a policy (see [examples](#examples) below):
* `/api`, `/api/*`, `/apis`, and `/apis/*` for API version negotiation.
* `/version` for retrieving the server version via `kubectl version`.
* `/swaggerapi/*` for create/update operations.
To inspect the HTTP calls involved in a specific kubectl operation you can turn
up the verbosity:
kubectl --v=8 version
## Examples
1. Alice can do anything to all resources:
```json
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "alice", "namespace": "*", "resource": "*", "apiGroup": "*"}}
```
2. Kubelet can read any pods:
```json
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "kubelet", "namespace": "*", "resource": "pods", "readonly": true}}
```
3. Kubelet can read and write events:
```json
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "kubelet", "namespace": "*", "resource": "events"}}
```
4. Bob can just read pods in namespace "projectCaribou":
```json
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "bob", "namespace": "projectCaribou", "resource": "pods", "readonly": true}}
```
5. Anyone can make read-only requests to all non-resource paths:
```json
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"group": "system:authenticated", "readonly": true, "nonResourcePath": "*"}}
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"group": "system:unauthenticated", "readonly": true, "nonResourcePath": "*"}}
```
[Complete file example](http://releases.k8s.io/{{page.githubbranch}}/pkg/auth/authorizer/abac/example_policy_file.jsonl)
## A quick note on service accounts
A service account automatically generates a user. The user's name is generated
according to the naming convention:
```shell
system:serviceaccount:<namespace>:<serviceaccountname>
```
Creating a new namespace also causes a new service account to be created, of
this form:
```shell
system:serviceaccount:<namespace>:default
```
For example, if you wanted to grant the default service account in the
kube-system full privilege to the API, you would add this line to your policy
file:
```json
{"apiVersion":"abac.authorization.kubernetes.io/v1beta1","kind":"Policy","spec":{"user":"system:serviceaccount:kube-system:default","namespace":"*","resource":"*","apiGroup":"*"}}
```
The apiserver will need to be restarted to pickup the new policy lines.
{% endcapture %}
{% include templates/concept.md %}
+158
View File
@@ -0,0 +1,158 @@
---
assignees:
- erictune
- lavalamp
- deads2k
- liggitt
title: Overview
---
{% capture overview %}
Learn more about Kubernetes authorization, including details about creating policies using the supported authorization modules.
{% endcapture %}
{% capture body %}
In Kubernetes, you must be authenticated (logged in) before your request can be authorized (granted permission to access). For information about authentication, see [Accessing Control Overview](/docs/admin/accessing-the-api/).
Kubernetes expects attributes that are common to REST API requests. This means that Kubernetes authorization works with existing organization-wide or cloud-provider-wide access control systems which may handle other APIs besides the Kubernetes API.
## Determine Whether a Request is Allowed or Denied
Kubernetes authorizes API requests using the API server. It evaluates all of the request attributes against all policies and allows or denies the request. All parts of an API request must be allowed by some policy in order to proceed. This means that permissions are denied by default.
(Although Kubernetes uses the API server, access controls and policies that depend on specific fields of specific kinds of objects are handled by Admission Controllers.)
When multiple authorization modules are configured, each is checked in sequence, and if any module authorizes the request, then the request can proceed. If all modules deny the request, then the request is denied (HTTP status code 403).
## Review Your Request Attributes
Kubernetes reviews only the following API request attributes:
* **user** - The `user` string provided during authentication
* **group** - The list of group names to which the authenticated user belongs
* **"extra"** - A map of arbitrary string keys to string values, provided by the authentication layer
* **API** - Indicates whether the request is for an API resource
* **Request path** - Path to miscellaneous non-resource endpoints like `/api` or `/healthz` (see [kubectl](#kubectl)).
* **API request verb** - API verbs `get`, `list`, `create`, `update`, `patch`, `watch`, `proxy`, `redirect`, `delete`, and `deletecollection` are used for resource requests. To determine the request verb for a resource API endpoint, see **Determine the request verb** below.
* **HTTP request verb** - HTTP verbs `get`, `post`, `put`, and `delete` are used for non-resource requests
* **Resource** - The ID or name of the resource that is being accessed (for resource requests only)
--* For resource requests using `get`, `update`, `patch`, and `delete` verbs, you must provide the resource name.
* **Subresource** - The subresource that is being accessed (for resource requests only)
* **Namespace** - The namespace of the object that is being accessed (for namespaced resource requests only)
* **API group** - The API group being accessed (for resource requests only). An empty string designates the [core API group](/docs/api/).
## Determine the Request Verb
To determine the request verb for a resource API endpoint, review the HTTP verb used and whether or not the request acts on an individual resource or a collection of resources:
HTTP verb | request verb
----------|---------------
POST | create
GET, HEAD | get (for individual resources), list (for collections)
PUT | update
PATCH | patch
DELETE | delete (for individual resources), deletecollection (for collections)
Kubernetes sometimes checks authorization for additional permissions using specialized verbs. For example:
* [PodSecurityPolicy](/docs/concepts/policy/pod-security-policy/) checks for authorization of the `use` verb on `podsecuritypolicies` resources in the `extensions` API group.
* [RBAC](/docs/admin/authorization/rbac/#privilege-escalation-prevention-and-bootstrapping) checks for authorization
of the `bind` verb on `roles` and `clusterroles` resources in the `rbac.authorization.k8s.io` API group.
* [Authentication](/docs/admin/authentication/) layer checks for authorization of the `impersonate` verb on `users`, `groups`, and `serviceaccounts` in the core API group, and the `userextras` in the `authentication.k8s.io` API group.
## Authorization Modules
* **Node** - A special-purpose authorizer that grants permissions to kubelets based on the pods they are scheduled to run. To learn more about using the Node authorization mode, see [Node Authorization](/docs/admin/authorization/node/)
* **ABAC** - Attribute-based access control (ABAC) defines an access control paradigm whereby access rights are granted to users through the use of policies which combine attributes together. The policies can use any type of attributes (user attributes, resource attributes, object, environment attributes etc). To learn more about using the ABAC mode, see [ABAC Mode](/docs/admin/authorization/abac/)
* **RBAC** - Role-based access control (RBAC) is a method of regulating access to computer or network resources based on the roles of individual users within an enterprise. In this context, access is the ability of an individual user to perform a specific task, such as view, create, or modify a file. To learn more about using the RBAC mode, see [RBAC Mode](/docs/admin/authorization/rbac/)
..* When specified "RBAC" (Role-Based Access Control) uses the "rbac.authorization.k8s.io" API group to drive authorization decisions, allowing admins to dynamically configure permission policies through the Kubernetes API.
..* As of 1.6 RBAC mode is in beta.
..* To enable RBAC, start the apiserver with `--authorization-mode=RBAC`.
* **Webhook** - A WebHook is an HTTP callback: an HTTP POST that occurs when something happens; a simple event-notification via HTTP POST. A web application implementing WebHooks will POST a message to a URL when certain things happen. To learn more about using the Webhook mode, see [Webhook Mode](/docs/admin/authorization/webhook/)
* **Custom Modules** - You can create custom modules for using with Kubernetes. To learn more, see **Custom Modules** below.
### Custom Modules
Other implementations can be developed fairly easily. The APIserver calls the Authorizer interface:
```go
type Authorizer interface {
Authorize(a Attributes) error
}
```
to determine whether or not to allow each API action.
An authorization plugin is a module that implements this interface.
Authorization plugin code goes in `pkg/auth/authorizer/$MODULENAME`.
An authorization module can be completely implemented in go, or can call out
to a remote authorization service. Authorization modules can implement
their own caching to reduce the cost of repeated authorization calls with the
same or similar arguments. Developers should then consider the interaction
between caching and revocation of permissions.
#### Checking API Access
Kubernetes exposes the `subjectaccessreviews.v1.authorization.k8s.io` resource as a
normal resource that allows external access to API authorizer decisions. No matter which authorizer
you choose to use, you can issue a `POST` with a `SubjectAccessReview` just like the webhook
authorizer to the `apis/authorization.k8s.io/v1/subjectaccessreviews` endpoint and
get back a response. For instance:
```bash
kubectl create --v=8 -f - << __EOF__
{
"apiVersion": "authorization.k8s.io/v1",
"kind": "SubjectAccessReview",
"spec": {
"resourceAttributes": {
"namespace": "kittensandponies",
"verb": "get",
"group": "unicorn.example.org",
"resource": "pods"
},
"user": "jane",
"group": [
"group1",
"group2"
],
"extra": {
"scopes": [
"openid",
"profile"
]
}
}
}
__EOF__
--- snip lots of output ---
I0913 08:12:31.362873 27425 request.go:908] Response Body: {"kind":"SubjectAccessReview","apiVersion":"authorization.k8s.io/v1","metadata":{"creationTimestamp":null},"spec":{"resourceAttributes":{"namespace":"kittensandponies","verb":"GET","group":"unicorn.example.org","resource":"pods"},"user":"jane","group":["group1","group2"],"extra":{"scopes":["openid","profile"]}},"status":{"allowed":true}}
subjectaccessreview "" created
```
This is useful for debugging access problems, in that you can use this resource
to determine what access an authorizer is granting.
## Using Flags for Your Authorization Module
You must include a flag in your policy to indicate which authorization module your policies include:
The following flags can be used:
- `--authorization-mode=ABAC` Attribute-Based Access Control (ABAC) mode allows you to configure policies using local files.
- `--authorization-mode=RBAC` Role-based access control (RBAC) mode allows you to create and store policies using the Kubernetes API.
- `--authorization-mode=Webhook` WebHook is an HTTP callback mode that allows you to manage authorization using a remote REST.
- `--authorization-mode=AlwaysDeny` This flag blocks all requests. Use this flag only for testing.
- `--authorization-mode=AlwaysAllow` This flag allows all requests. Use this flag only if you do not require authorization for your API requests.
You can choose more than one authorization module. If one of the modes is `AlwaysAllow`, then it overrides the other modes and all API requests are allowed.
## Versioning
For version 1.2, clusters created by kube-up.sh are configured so that no authorization is required for any request.
As of version 1.3, clusters created by kube-up.sh are configured so that the ABAC authorization modules are enabled. However, its input file is initially set to allow all users to do all operations. The cluster administrator needs to edit that file, or configure a different authorizer to restrict what users can do.
{% endcapture %}
{% capture whatsnext %}
* To learn more about Authentication, see **Authentication** in [Controlling Access to the Kubernetes API](/docs/admin/accessing-the-api/).
* To learn more about Admission Control, see [Using Admission Controllers](/docs/admin/admission-controllers/).
{% endcapture %}
{% include templates/concept.md %}
+93
View File
@@ -0,0 +1,93 @@
---
assignees:
- timstclair
- deads2k
- liggitt
- ericchiang
title: Using Node Authorization
---
* TOC
{:toc}
Node authorization is a special-purpose authorization mode that specifically authorizes API requests made by kubelets.
## Overview
The Node authorizer allows a kubelet to perform API operations. This includes:
Read operations:
* services
* endpoints
* nodes
* pods
* secrets, configmaps, persistent volume claims and persistent volumes related to pods bound to the kubelet's node
Write operations:
* nodes and node status (enable the `NodeRestriction` admission plugin to limit a kubelet to modify its own node)
* pods and pod status (enable the `NodeRestriction` admission plugin to limit a kubelet to modify pods bound to itself)
* events
Auth-related operations:
* read/write access to the certificationsigningrequests API for TLS bootstrapping
* the ability to create tokenreviews and subjectaccessreviews for delegated authentication/authorization checks
In future releases, the node authorizer may add or remove permissions to ensure kubelets
have the minimal set of permissions required to operate correctly.
In order to be authorized by the Node authorizer, kubelets must use a credential that identifies them as
being in the `system:nodes` group, with a username of `system:node:<nodeName>`.
This group and user name format match the identity created for each kubelet as part of
[kubelet TLS bootstrapping](/docs/admin/kubelet-tls-bootstrapping/).
To enable the Node authorizer, start the apiserver with `--authorization-mode=Node`.
To limit the API objects kubelets are able to write, enable the [NodeRestriction](/docs/admin/admission-controllers#NodeRestriction) admission plugin by starting the apiserver with `--admission-control=...,NodeRestriction,...`
## Migration considerations
### Kubelets outside the `system:nodes` group
Kubelets outside the `system:nodes` group would not be authorized by the `Node` authorization mode,
and would need to continue to be authorized via whatever mechanism currently authorizes them.
The node admission plugin would not restrict requests from these kubelets.
### Kubelets with undifferentiated usernames
In some deployments, kubelets have credentials that place them in the `system:nodes` group,
but do not identify the particular node they are associated with,
because they do not have a username in the `system:node:...` format.
These kubelets would not be authorized by the `Node` authorization mode,
and would need to continue to be authorized via whatever mechanism currently authorizes them.
The `NodeRestriction` admission plugin would ignore requests from these kubelets,
since the default node identifier implementation would not consider that a node identity.
### Upgrades from previous versions using RBAC
Upgraded pre-1.7 clusters using [RBAC](/docs/admin/authorization/rbac/) will continue functioning as-is because the `system:nodes` group binding will already exist.
If a cluster admin wishes to start using the `Node` authorizer and `NodeRestriction` admission plugin
to limit node access to the API, that can be done non-disruptively:
1. Enable the `Node` authorization mode (`--authorization-mode=Node,RBAC`) and the `NodeRestriction` admission plugin
2. Ensure all kubelets' credentials conform to the group/username requirements
3. Audit apiserver logs to ensure the `Node` authorizer is not rejecting requests from kubelets (no persistent `NODE DENY` messages logged)
4. Delete the `system:node` cluster role binding
### RBAC Node Permissions
In 1.6, the `system:node` cluster role was automatically bound to the `system:nodes` group when using the [RBAC Authorization mode](/docs/admin/authorization/rbac/).
In 1.7, the automatic binding of the `system:nodes` group to the `system:node` role is deprecated
because the node authorizer accomplishes the same purpose with the benefit of additional restrictions
on secret and configmap access. If the `Node` and `RBAC` authorization modes are both enabled,
the automatic binding of the `system:nodes` group to the `system:node` role is not created in 1.7.
In 1.8, the binding will not be created at all.
When using RBAC, the `system:node` cluster role will continue to be created,
for compatibility with deployment methods that bind other users or groups to that role.
+784
View File
@@ -0,0 +1,784 @@
---
assignees:
- erictune
- deads2k
- liggitt
title: Using RBAC Authorization
---
* TOC
{:toc}
Role-Based Access Control ("RBAC") uses the "rbac.authorization.k8s.io" API group
to drive authorization decisions, allowing admins to dynamically configure policies
through the Kubernetes API.
As of 1.6 RBAC mode is in beta.
To enable RBAC, start the apiserver with `--authorization-mode=RBAC`.
## API Overview
The RBAC API declares four top-level types which will be covered in this
section. Users can interact with these resources as they would with any other
API resource (via `kubectl`, API calls, etc.). For instance,
`kubectl create -f (resource).yml` can be used with any of these examples,
though readers who wish to follow along should review the section on
bootstrapping first.
### Role and ClusterRole
In the RBAC API, a role contains rules that represent a set of permissions.
Permissions are purely additive (there are no "deny" rules).
A role can be defined within a namespace with a `Role`, or cluster-wide with a `ClusterRole`.
A `Role` can only be used to grant access to resources within a single namespace.
Here's an example `Role` in the "default" namespace that can be used to grant read access to pods:
```yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["pods"]
verbs: ["get", "watch", "list"]
```
A `ClusterRole` can be used to grant the same permissions as a `Role`,
but because they are cluster-scoped, they can also be used to grant access to:
* cluster-scoped resources (like nodes)
* non-resource endpoints (like "/healthz")
* namespaced resources (like pods) across all namespaces (needed to run `kubectl get pods --all-namespaces`, for example)
The following `ClusterRole` can be used to grant read access to secrets in any particular namespace,
or across all namespaces (depending on how it is [bound](#rolebinding-and-clusterrolebinding)):
```yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
# "namespace" omitted since ClusterRoles are not namespaced
name: secret-reader
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "watch", "list"]
```
### RoleBinding and ClusterRoleBinding
A role binding grants the permissions defined in a role to a user or set of users.
It holds a list of subjects (users, groups, or service accounts), and a reference to the role being granted.
Permissions can be granted within a namespace with a `RoleBinding`, or cluster-wide with a `ClusterRoleBinding`.
A `RoleBinding` may reference a `Role` in the same namespace.
The following `RoleBinding` grants the "pod-reader" role to the user "jane" within the "default" namespace.
This allows "jane" to read pods in the "default" namespace.
```yaml
# This role binding allows "jane" to read pods in the "default" namespace.
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: read-pods
namespace: default
subjects:
- kind: User
name: jane
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
```
A `RoleBinding` may also reference a `ClusterRole` to grant the permissions to namespaced
resources defined in the `ClusterRole` within the `RoleBinding`'s namespace.
This allows administrators to define a set of common roles for the entire cluster,
then reuse them within multiple namespaces.
For instance, even though the following `RoleBinding` refers to a `ClusterRole`,
"dave" (the subject) will only be able read secrets in the "development"
namespace (the namespace of the `RoleBinding`).
```yaml
# This role binding allows "dave" to read secrets in the "development" namespace.
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: read-secrets
namespace: development # This only grants permissions within the "development" namespace.
subjects:
- kind: User
name: dave
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: secret-reader
apiGroup: rbac.authorization.k8s.io
```
Finally, a `ClusterRoleBinding` may be used to grant permission at the cluster level and in all
namespaces. The following `ClusterRoleBinding` allows any user in the group "manager" to read
secrets in any namespace.
```yaml
# This cluster role binding allows anyone in the "manager" group to read secrets in any namespace.
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: read-secrets-global
subjects:
- kind: Group
name: manager
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
 name: secret-reader
apiGroup: rbac.authorization.k8s.io
```
### Referring to Resources
Most resources are represented by a string representation of their name, such as "pods", just as it
appears in the URL for the relevant API endpoint. However, some Kubernetes APIs involve a
"subresource", such as the logs for a pod. The URL for the pods logs endpoint is:
```
GET /api/v1/namespaces/{namespace}/pods/{name}/log
```
In this case, "pods" is the namespaced resource, and "log" is a subresource of pods. To represent
this in an RBAC role, use a slash to delimit the resource and subresource. To allow a subject
to read both pods and pod logs, you would write:
```yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
namespace: default
name: pod-and-pod-logs-reader
rules:
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "list"]
```
Resources can also be referred to by name for certain requests through the `resourceNames` list.
When specified, requests using the "get", "delete", "update", and "patch" verbs can be restricted
to individual instances of a resource. To restrict a subject to only "get" and "update" a single
configmap, you would write:
```yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
namespace: default
name: configmap-updater
rules:
- apiGroups: [""]
resources: ["configmap"]
resourceNames: ["my-configmap"]
verbs: ["update", "get"]
```
Notably, if `resourceNames` are set, then the verb must not be list, watch, create, or deletecollection.
Because resource names are not present in the URL for create, list, watch, and deletecollection API requests,
those verbs would not be allowed by a rule with resourceNames set, since the resourceNames portion of the
rule would not match the request.
#### Role Examples
Only the `rules` section is shown in the following examples.
Allow reading the resource "pods" in the core API group:
```yaml
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
```
Allow reading/writing "deployments" in both the "extensions" and "apps" API groups:
```yaml
rules:
- apiGroups: ["extensions", "apps"]
resources: ["deployments"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
```
Allow reading "pods" and reading/writing "jobs":
```yaml
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
- apiGroups: ["batch", "extensions"]
resources: ["jobs"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
```
Allow reading a `ConfigMap` named "my-config" (must be bound with a `RoleBinding` to limit to a single `ConfigMap` in a single namespace):
```yaml
rules:
- apiGroups: [""]
resources: ["configmaps"]
resourceNames: ["my-config"]
verbs: ["get"]
```
Allow reading the resource "nodes" in the core group (because a `Node` is cluster-scoped, this must be in a `ClusterRole` bound with a `ClusterRoleBinding` to be effective):
```yaml
rules:
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get", "list", "watch"]
```
Allow "GET" and "POST" requests to the non-resource endpoint "/healthz" and all subpaths (must be in a `ClusterRole` bound with a `ClusterRoleBinding` to be effective):
```yaml
rules:
- nonResourceURLs: ["/healthz", "/healthz/*"] # '*' in a nonResourceURL is a suffix glob match
verbs: ["get", "post"]
```
### Referring to Subjects
A `RoleBinding` or `ClusterRoleBinding` binds a role to *subjects*.
Subjects can be groups, users or service accounts.
Users are represented by strings. These can be plain usernames, like
"alice", email-style names, like "bob@example.com", or numeric ids
represented as a string. It is up to the Kubernetes admin to configure
the [authentication modules](/docs/admin/authentication/) to produce
usernames in the desired format. The RBAC authorization system does
not require any particular format. However, the prefix `system:` is
reserved for Kubernetes system use, and so the admin should ensure
usernames do not contain this prefix by accident.
Group information in Kubernetes is currently provided by the Authenticator
modules. Groups, like users, are represented as strings, and that string
has no format requirements, other than that the prefix `system:` is reserved.
[Service Accounts](/docs/tasks/configure-pod-container/configure-service-account/) have usernames with the `system:serviceaccount:` prefix and belong
to groups with the `system:serviceaccounts:` prefix.
#### Role Binding Examples
Only the `subjects` section of a `RoleBinding` is shown in the following examples.
For a user named "alice@example.com":
```yaml
subjects:
- kind: User
name: "alice@example.com"
apiGroup: rbac.authorization.k8s.io
```
For a group named "frontend-admins":
```yaml
subjects:
- kind: Group
name: "frontend-admins"
apiGroup: rbac.authorization.k8s.io
```
For the default service account in the kube-system namespace:
```yaml
subjects:
- kind: ServiceAccount
name: default
namespace: kube-system
```
For all service accounts in the "qa" namespace:
```yaml
subjects:
- kind: Group
name: system:serviceaccounts:qa
apiGroup: rbac.authorization.k8s.io
```
For all service accounts everywhere:
```yaml
subjects:
- kind: Group
name: system:serviceaccounts
apiGroup: rbac.authorization.k8s.io
```
For all authenticated users (version 1.5+):
```yaml
subjects:
- kind: Group
name: system:authenticated
apiGroup: rbac.authorization.k8s.io
```
For all unauthenticated users (version 1.5+):
```yaml
subjects:
- kind: Group
name: system:unauthenticated
apiGroup: rbac.authorization.k8s.io
```
For all users (version 1.5+):
```yaml
subjects:
- kind: Group
name: system:authenticated
apiGroup: rbac.authorization.k8s.io
- kind: Group
name: system:unauthenticated
apiGroup: rbac.authorization.k8s.io
```
## Default Roles and Role Bindings
API servers create a set of default `ClusterRole` and `ClusterRoleBinding` objects.
Many of these are `system:` prefixed, which indicates that the resource is "owned" by the infrastructure.
Modifications to these resources can result in non-functional clusters. One example is the `system:node` ClusterRole.
This role defines permissions for kubelets. If the role is modified, it can prevent kubelets from working.
All of the default cluster roles and rolebindings are labeled with `kubernetes.io/bootstrapping=rbac-defaults`.
### Auto-reconciliation
At each start-up, the API server updates default cluster roles with any missing permissions,
and updates default cluster role bindings with any missing subjects.
This allows the cluster to repair accidental modifications,
and to keep roles and rolebindings up-to-date as permissions and subjects change in new releases.
To opt out of this reconciliation, set the `rbac.authorization.kubernetes.io/autoupdate`
annotation on a default cluster role or rolebinding to `false`.
Be aware that missing default permissions and subjects can result in non-functional clusters.
Auto-reconciliation is enabled in Kubernetes version 1.6+ when the RBAC authorizer is active.
### Discovery Roles
<table>
<colgroup><col width="25%"><col width="25%"><col></colgroup>
<tr>
<th>Default ClusterRole</th>
<th>Default ClusterRoleBinding</th>
<th>Description</th>
</tr>
<tr>
<td><b>system:basic-user</b></td>
<td><b>system:authenticated</b> and <b>system:unauthenticated</b> groups</td>
<td>Allows a user read-only access to basic information about themselves.</td>
</tr>
<tr>
<td><b>system:discovery</b></td>
<td><b>system:authenticated</b> and <b>system:unauthenticated</b> groups</td>
<td>Allows read-only access to API discovery endpoints needed to discover and negotiate an API level.</td>
</tr>
</table>
### User-facing Roles
Some of the default roles are not `system:` prefixed. These are intended to be user-facing roles.
They include super-user roles (`cluster-admin`),
roles intended to be granted cluster-wide using ClusterRoleBindings (`cluster-status`),
and roles intended to be granted within particular namespaces using RoleBindings (`admin`, `edit`, `view`).
<table>
<colgroup><col width="25%"><col width="25%"><col></colgroup>
<tr>
<th>Default ClusterRole</th>
<th>Default ClusterRoleBinding</th>
<th>Description</th>
</tr>
<tr>
<td><b>cluster-admin</b></td>
<td><b>system:masters</b> group</td>
<td>Allows super-user access to perform any action on any resource.
When used in a <b>ClusterRoleBinding</b>, it gives full control over every resource in the cluster and in all namespaces.
When used in a <b>RoleBinding</b>, it gives full control over every resource in the rolebinding's namespace, including the namespace itself.</td>
</tr>
<tr>
<td><b>admin</b></td>
<td>None</td>
<td>Allows admin access, intended to be granted within a namespace using a <b>RoleBinding</b>.
If used in a <b>RoleBinding</b>, allows read/write access to most resources in a namespace,
including the ability to create roles and rolebindings within the namespace.
It does not allow write access to resource quota or to the namespace itself.</td>
</tr>
<tr>
<td><b>edit</b></td>
<td>None</td>
<td>Allows read/write access to most objects in a namespace.
It does not allow viewing or modifying roles or rolebindings.</td>
</tr>
<tr>
<td><b>view</b></td>
<td>None</td>
<td>Allows read-only access to see most objects in a namespace.
It does not allow viewing roles or rolebindings.
It does not allow viewing secrets, since those are escalating.</td>
</tr>
</table>
### Core Component Roles
<table>
<colgroup><col width="25%"><col width="25%"><col></colgroup>
<tr>
<th>Default ClusterRole</th>
<th>Default ClusterRoleBinding</th>
<th>Description</th>
</tr>
<tr>
<td><b>system:kube-scheduler</b></td>
<td><b>system:kube-scheduler</b> user</td>
<td>Allows access to the resources required by the kube-scheduler component.</td>
</tr>
<tr>
<td><b>system:kube-controller-manager</b></td>
<td><b>system:kube-controller-manager</b> user</td>
<td>Allows access to the resources required by the kube-controller-manager component.
The permissions required by individual control loops are contained in the <a href="#controller-roles">controller roles</a>.</td>
</tr>
<tr>
<td><b>system:node</b></td>
<td><b>system:nodes</b> group (deprecated in 1.7)</td>
<td>Allows access to resources required by the kubelet component, <b>including read access to all secrets, and write access to all pods</b>.
As of 1.7, use of the [Node authorizer](/docs/admin/authorization/node/)
and [NodeRestriction admission plugin](/docs/admin/admission-controllers#NodeRestriction)
is recommended instead of this role, and allow granting API access to kubelets based on the pods scheduled to run on them.
As of 1.7, when the `Node` authorization mode is enabled, the automatic binding to the `system:nodes` group is not created.
</td>
</tr>
<tr>
<td><b>system:node-proxier</b></td>
<td><b>system:kube-proxy</b> user</td>
<td>Allows access to the resources required by the kube-proxy component.</td>
</tr>
</table>
### Other Component Roles
<table>
<colgroup><col width="25%"><col width="25%"><col></colgroup>
<tr>
<th>Default ClusterRole</th>
<th>Default ClusterRoleBinding</th>
<th>Description</th>
</tr>
<tr>
<td><b>system:auth-delegator</b></td>
<td>None</td>
<td>Allows delegated authentication and authorization checks.
This is commonly used by add-on API servers for unified authentication and authorization.</td>
</tr>
<tr>
<td><b>system:heapster</b></td>
<td>None</td>
<td>Role for the <a href="https://github.com/kubernetes/heapster">Heapster</a> component.</td>
</tr>
<tr>
<td><b>system:kube-aggregator</b></td>
<td>None</td>
<td>Role for the <a href="https://github.com/kubernetes/kube-aggregator">kube-aggregator</a> component.</td>
</tr>
<tr>
<td><b>system:kube-dns</b></td>
<td><b>kube-dns</b> service account in the <b>kube-system</b> namespace</td>
<td>Role for the <a href="/docs/admin/dns/">kube-dns</a> component.</td>
</tr>
<tr>
<td><b>system:node-bootstrapper</b></td>
<td>None</td>
<td>Allows access to the resources required to perform <a href="/docs/admin/kubelet-tls-bootstrapping/">Kubelet TLS bootstrapping</a>.</td>
</tr>
<tr>
<td><b>system:node-problem-detector</b></td>
<td>None</td>
<td>Role for the <a href="https://github.com/kubernetes/node-problem-detector">node-problem-detector</a> component.</td>
</tr>
<tr>
<td><b>system:persistent-volume-provisioner</b></td>
<td>None</td>
<td>Allows access to the resources required by most <a href="/docs/user-guide/persistent-volumes/#provisioner">dynamic volume provisioners</a>.</td>
</tr>
</table>
### Controller Roles
The [Kubernetes controller manager](/docs/admin/kube-controller-manager/) runs core control loops.
When invoked with `--use-service-account-credentials`, each control loop is started using a separate service account.
Corresponding roles exist for each control loop, prefixed with `system:controller:`.
If the controller manager is not started with `--use-service-account-credentials`,
it runs all control loops using its own credential, which must be granted all the relevant roles.
These roles include:
* system:controller:attachdetach-controller
* system:controller:certificate-controller
* system:controller:cronjob-controller
* system:controller:daemon-set-controller
* system:controller:deployment-controller
* system:controller:disruption-controller
* system:controller:endpoint-controller
* system:controller:generic-garbage-collector
* system:controller:horizontal-pod-autoscaler
* system:controller:job-controller
* system:controller:namespace-controller
* system:controller:node-controller
* system:controller:persistent-volume-binder
* system:controller:pod-garbage-collector
* system:controller:replicaset-controller
* system:controller:replication-controller
* system:controller:resourcequota-controller
* system:controller:route-controller
* system:controller:service-account-controller
* system:controller:service-controller
* system:controller:statefulset-controller
* system:controller:ttl-controller
## Privilege Escalation Prevention and Bootstrapping
The RBAC API prevents users from escalating privileges by editing roles or role bindings.
Because this is enforced at the API level, it applies even when the RBAC authorizer is not in use.
A user can only create/update a role if they already have all the permissions contained in the role,
at the same scope as the role (cluster-wide for a `ClusterRole`, within the same namespace or cluster-wide for a `Role`).
For example, if "user-1" does not have the ability to list secrets cluster-wide, they cannot create a `ClusterRole`
containing that permission. To allow a user to create/update roles:
1. Grant them a role that allows them to create/update `Role` or `ClusterRole` objects, as desired.
2. Grant them roles containing the permissions you would want them to be able to set in a `Role` or `ClusterRole`. If they attempt to create or modify a `Role` or `ClusterRole` with permissions they themselves have not been granted, the API request will be forbidden.
A user can only create/update a role binding if they already have all the permissions contained in the referenced role
(at the same scope as the role binding) *or* if they've been given explicit permission to perform the `bind` verb on the referenced role.
For example, if "user-1" does not have the ability to list secrets cluster-wide, they cannot create a `ClusterRoleBinding`
to a role that grants that permission. To allow a user to create/update role bindings:
1. Grant them a role that allows them to create/update `RoleBinding` or `ClusterRoleBinding` objects, as desired.
2. Grant them permissions needed to bind a particular role:
* implicitly, by giving them the permissions contained in the role.
* explicitly, by giving them permission to perform the `bind` verb on the particular role (or cluster role).
For example, this cluster role and role binding would allow "user-1" to grant other users the `admin`, `edit`, and `view` roles in the "user-1-namespace" namespace:
```yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: role-grantor
rules:
- apiGroups: ["rbac.authorization.k8s.io"]
resources: ["rolebindings"]
verbs: ["create"]
- apiGroups: ["rbac.authorization.k8s.io"]
resources: ["clusterroles"]
verbs: ["bind"]
resourceNames: ["admin","edit","view"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: role-grantor-binding
namespace: user-1-namespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: role-grantor
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: user-1
```
When bootstrapping the first roles and role bindings, it is necessary for the initial user to grant permissions they do not yet have.
To bootstrap initial roles and role bindings:
* Use a credential with the `system:masters` group, which is bound to the `cluster-admin` super-user role by the default bindings.
* If your API server runs with the insecure port enabled (`--insecure-port`), you can also make API calls via that port, which does not enforce authentication or authorization.
## Command-line Utilities
Two `kubectl` commands exist to grant roles within a namespace or across the entire cluster.
### `kubectl create rolebinding`
Grants a `Role` or `ClusterRole` within a specific namespace. Examples:
* Grant the `admin` `ClusterRole` to a user named "bob" in the namespace "acme":
`kubectl create rolebinding bob-admin-binding --clusterrole=admin --user=bob --namespace=acme`
* Grant the `view` `ClusterRole` to a service account named "myapp" in the namespace "acme":
`kubectl create rolebinding myapp-view-binding --clusterrole=view --serviceaccount=acme:myapp --namespace=acme`
### `kubectl create clusterrolebinding`
Grants a `ClusterRole` across the entire cluster, including all namespaces. Examples:
* Grant the `cluster-admin` `ClusterRole` to a user named "root" across the entire cluster:
`kubectl create clusterrolebinding root-cluster-admin-binding --clusterrole=cluster-admin --user=root`
* Grant the `system:node` `ClusterRole` to a user named "kubelet" across the entire cluster:
`kubectl create clusterrolebinding kubelet-node-binding --clusterrole=system:node --user=kubelet`
* Grant the `view` `ClusterRole` to a service account named "myapp" in the namespace "acme" across the entire cluster:
`kubectl create clusterrolebinding myapp-view-binding --clusterrole=view --serviceaccount=acme:myapp`
See the CLI help for detailed usage
## Service Account Permissions
Default RBAC policies grant scoped permissions to control-plane components, nodes,
and controllers, but grant *no permissions* to service accounts outside the "kube-system" namespace
(beyond discovery permissions given to all authenticated users).
This allows you to grant particular roles to particular service accounts as needed.
Fine-grained role bindings provide greater security, but require more effort to administrate.
Broader grants can give unnecessary (and potentially escalating) API access to service accounts, but are easier to administrate.
In order from most secure to least secure, the approaches are:
1. Grant a role to an application-specific service account (best practice)
This requires the application to specify a `serviceAccountName` in its pod spec,
and for the service account to be created (via the API, application manifest, `kubectl create serviceaccount`, etc.).
For example, grant read-only permission within "my-namespace" to the "my-sa" service account:
```shell
kubectl create rolebinding my-sa-view \
--clusterrole=view \
--serviceaccount=my-namespace:my-sa \
--namespace=my-namespace
```
2. Grant a role to the "default" service account in a namespace
If an application does not specify a `serviceAccountName`, it uses the "default" service account.
NOTE: Permissions given to the "default" service account are available to any pod in the namespace that does not specify a `serviceAccountName`.
For example, grant read-only permission within "my-namespace" to the "default" service account:
```shell
kubectl create rolebinding default-view \
--clusterrole=view \
--serviceaccount=my-namespace:default \
--namespace=my-namespace
```
Many [add-ons](/docs/concepts/cluster-administration/addons/) currently run as the "default" service account in the "kube-system" namespace.
To allow those add-ons to run with super-user access, grant cluster-admin permissions to the "default" service account in the "kube-system" namespace.
NOTE: Enabling this means the "kube-system" namespace contains secrets that grant super-user access to the API.
```shell
kubectl create clusterrolebinding add-on-cluster-admin \
--clusterrole=cluster-admin \
--serviceaccount=kube-system:default
```
3. Grant a role to all service accounts in a namespace
If you want all applications in a namespace to have a role, no matter what service account they use,
you can grant a role to the service account group for that namespace.
For example, grant read-only permission within "my-namespace" to to all service accounts in that namespace:
```shell
kubectl create rolebinding serviceaccounts-view \
--clusterrole=view \
--group=system:serviceaccounts:my-namespace \
--namespace=my-namespace
```
4. Grant a limited role to all service accounts cluster-wide (discouraged)
If you don't want to manage permissions per-namespace, you can grant a cluster-wide role to all service accounts.
For example, grant read-only permission across all namespaces to all service accounts in the cluster:
```shell
kubectl create clusterrolebinding serviceaccounts-view \
--clusterrole=view \
--group=system:serviceaccounts
```
5. Grant super-user access to all service accounts cluster-wide (strongly discouraged)
If you don't care about partitioning permissions at all, you can grant super-user access to all service accounts.
WARNING: This allows any user with read access to secrets or the ability to create a pod to access super-user credentials.
```shell
kubectl create clusterrolebinding serviceaccounts-cluster-admin \
--clusterrole=cluster-admin \
--group=system:serviceaccounts
```
## Upgrading from 1.5
Prior to Kubernetes 1.6, many deployments used very permissive ABAC policies,
including granting full API access to all service accounts.
Default RBAC policies grant scoped permissions to control-plane components, nodes,
and controllers, but grant *no permissions* to service accounts outside the "kube-system" namespace
(beyond discovery permissions given to all authenticated users).
While far more secure, this can be disruptive to existing workloads expecting to automatically receive API permissions.
Here are two approaches for managing this transition:
### Parallel Authorizers
Run both the RBAC and ABAC authorizers, and include the legacy ABAC policy:
```
--authorization-mode=RBAC,ABAC --authorization-policy-file=mypolicy.jsonl
```
The RBAC authorizer will attempt to authorize requests first. If it denies an API request,
the ABAC authorizer is then run. This means that any request allowed by *either* the RBAC
or ABAC policies is allowed.
When run with a log level of 2 or higher (`--v=2`), you can see RBAC denials in the apiserver log (prefixed with `RBAC DENY:`).
You can use that information to determine which roles need to be granted to which users, groups, or service accounts.
Once you have [granted roles to service accounts](#service-account-permissions) and workloads are running with no RBAC denial messages
in the server logs, you can remove the ABAC authorizer.
### Permissive RBAC Permissions
You can replicate a permissive policy using RBAC role bindings.
**WARNING: The following policy allows ALL service accounts to act as cluster administrators.
Any application running in a container receives service account credentials automatically,
and could perform any action against the API, including viewing secrets and modifying permissions.
This is not a recommended policy.**
```
kubectl create clusterrolebinding permissive-binding \
--clusterrole=cluster-admin \
--user=admin \
--user=kubelet \
--group=system:serviceaccounts
```
+148
View File
@@ -0,0 +1,148 @@
---
assignees:
- erictune
- lavalamp
- deads2k
- liggitt
title: Webhook Mode
---
{% capture overview %}
A WebHook is an HTTP callback: an HTTP POST that occurs when something happens; a simple event-notification via HTTP POST. A web application implementing WebHooks will POST a message to a URL when certain things happen.
{% endcapture %}
{% capture body %}
When specified, mode `Webhook` causes Kubernetes to query an outside REST
service when determining user privileges.
## Configuration File Format
Mode `Webhook` requires a file for HTTP configuration, specify by the
`--authorization-webhook-config-file=SOME_FILENAME` flag.
The configuration file uses the [kubeconfig](/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/)
file format. Within the file "users" refers to the API Server webhook and
"clusters" refers to the remote service.
A configuration example which uses HTTPS client auth:
```yaml
# clusters refers to the remote service.
clusters:
- name: name-of-remote-authz-service
cluster:
certificate-authority: /path/to/ca.pem # CA for verifying the remote service.
server: https://authz.example.com/authorize # URL of remote service to query. Must use 'https'.
# users refers to the API Server's webhook configuration.
users:
- name: name-of-api-server
user:
client-certificate: /path/to/cert.pem # cert for the webhook plugin to use
client-key: /path/to/key.pem # key matching the cert
# kubeconfig files require a context. Provide one for the API Server.
current-context: webhook
contexts:
- context:
cluster: name-of-remote-authz-service
user: name-of-api-server
name: webhook
```
## Request Payloads
When faced with an authorization decision, the API Server POSTs a JSON
serialized api.authorization.v1beta1.SubjectAccessReview object describing the
action. This object contains fields describing the user attempting to make the
request, and either details about the resource being accessed or requests
attributes.
Note that webhook API objects are subject to the same [versioning compatibility rules](/docs/api/)
as other Kubernetes API objects. Implementers should be aware of looser
compatibility promises for beta objects and check the "apiVersion" field of the
request to ensure correct deserialization. Additionally, the API Server must
enable the `authorization.k8s.io/v1beta1` API extensions group (`--runtime-config=authorization.k8s.io/v1beta1=true`).
An example request body:
```json
{
"apiVersion": "authorization.k8s.io/v1beta1",
"kind": "SubjectAccessReview",
"spec": {
"resourceAttributes": {
"namespace": "kittensandponies",
"verb": "get",
"group": "unicorn.example.org",
"resource": "pods"
},
"user": "jane",
"group": [
"group1",
"group2"
]
}
}
```
The remote service is expected to fill the SubjectAccessReviewStatus field of
the request and respond to either allow or disallow access. The response body's
"spec" field is ignored and may be omitted. A permissive response would return:
```json
{
"apiVersion": "authorization.k8s.io/v1beta1",
"kind": "SubjectAccessReview",
"status": {
"allowed": true
}
}
```
To disallow access, the remote service would return:
```json
{
"apiVersion": "authorization.k8s.io/v1beta1",
"kind": "SubjectAccessReview",
"status": {
"allowed": false,
"reason": "user does not have read access to the namespace"
}
}
```
Access to non-resource paths are sent as:
```json
{
"apiVersion": "authorization.k8s.io/v1beta1",
"kind": "SubjectAccessReview",
"spec": {
"nonResourceAttributes": {
"path": "/debug",
"verb": "get"
},
"user": "jane",
"group": [
"group1",
"group2"
]
}
}
```
Non-resource paths include: `/api`, `/apis`, `/metrics`, `/resetMetrics`,
`/logs`, `/debug`, `/healthz`, `/swagger-ui/`, `/swaggerapi/`, `/ui`, and
`/version.` Clients require access to `/api`, `/api/*`, `/apis`, `/apis/*`,
and `/version` to discover what resources and versions are present on the server.
Access to other non-resource paths can be disallowed without restricting access
to the REST api.
For further documentation refer to the authorization.v1beta1 API objects and
[webhook.go](https://git.k8s.io/kubernetes/staging/src/k8s.io/apiserver/plugin/pkg/authorizer/webhook/webhook.go).
{% endcapture %}
{% include templates/concept.md %}
+171
View File
@@ -0,0 +1,171 @@
---
assignees:
- jbeda
title: Authenticating with Bootstrap Tokens
---
* TOC
{:toc}
## Overview
Bootstrap tokens are a simple bearer token that is meant to be used when
creating new clusters or joining new nodes to an existing cluster. It was built
to support [`kubeadm`](/docs/admin/kubeadm/), but can be used in other contexts
for users that wish to start clusters without `kubeadm`. It is also built to
work, via RBAC policy, with the [Kubelet TLS
Bootstrapping](/docs/admin/kubelet-tls-bootstrapping/) system.
Bootstrap Tokens are defined with a specific type
(`bootstrap.kubernetes.io/token`) of secrets that lives in the `kube-system`
namespace. These Secrets are then read by the Bootstrap Authenticator in the
API Server. Expired tokens are removed with the TokenCleaner controller in the
Controller Manager. The tokens are also used to create a signature for a
specific ConfigMap used in a "discovery" process through a BootstrapSigner
controller.
Currently, Bootstrap Tokens are **alpha** but there are no large breaking
changes expected.
## Token Format
Bootstrap Tokens take the form of `abcdef.0123456789abcdef`. More formally,
they must match the regular expression `[a-z0-9]{6}\.[a-z0-9]{16}`.
The first part of the token is the "Token ID" and is considered public
information. It is used when referring to a token without leaking the secret
part used for authentication. The second part is the "Token Secret" and should
only be shared with trusted parties.
## Enabling Bootstrap Tokens
All features for Bootstrap Tokens are disabled by default in Kubernetes v1.6.
You can enable the Bootstrap Token authenticator with the
`--experimental-bootstrap-token-auth` flag on the API server. You can enable
the Bootstrap controllers by specifying them withthe `--controllers` flag on the
controller manager with something like
`--controllers=*,tokencleaner,bootstrapsigner`. This is done automatically when
using `kubeadm`.
Tokens are used in an HTTPS call as follows:
```http
Authorization: Bearer 07401b.f395accd246ae52d
```
## Bootstrap Token Secret Format
Each valid token is backed by a secret in the `kube-system` namespace. You can
find the full design doc
[here](https://git.k8s.io/community/contributors/design-proposals/bootstrap-discovery.md).
Here is what the secret looks like. Note that `base64(string)` indicates the
value should be base64 encoded. The undecoded version is provided here for
readability.
```yaml
apiVersion: v1
kind: Secret
metadata:
name: bootstrap-token-07401b
namespace: kube-system
type: bootstrap.kubernetes.io/token
data:
description: base64(The default bootstrap token generated by 'kubeadm init'.)
token-id: base64(07401b)
token-secret: base64(f395accd246ae52d)
expiration: base64(2017-03-10T03:22:11Z)
usage-bootstrap-authentication: base64(true)
usage-bootstrap-signing: base64(true)
```
The type of the secret must be `bootstrap.kubernetes.io/token` and the name must
be `bootstrap-token-<token id>`. It must also exist in the `kube-system`
namespace. `description` is a human readable discription that should not be
used for machine readable information. The Token ID and Secret are included in
the data dictionary.
The `usage-bootstrap-*` members indicate what this secret is intended to be used
for. A value must be set to `true` to be enabled.
`usage-bootstrap-authentication` indicates that the token can be used to
authenticate to the API server. The authenticator authenticates as
`system:bootstrap:<Token ID>`. It is included in the `system:bootstrappers`
group. The naming and groups are intentionally limited to discourage users from
using these tokens past bootstrapping.
`usage-bootstrap-signing` indicates that the token should be used to sign the
`cluster-info` ConfigMap as described below.
The `expiration` data member lists a time after which the token is no longer
valid. This is encoded as an absolute UTC time using RFC3339. The TokenCleaner
controller will delete expired tokens.
## Token Management with `kubeadm`
You can use the `kubeadm` tool to manage tokens on a running cluster. It will
automatically grab the default admin credentials on a master from a `kubeadm`
created cluster (`/etc/kubernetes/admin.conf`). You can specify an alternate
kubeconfig file for credentials with the `--kubeconfig` to the following
commands.
* `kubeadm token list` Lists the tokens along with when they expire and what the
approved usages are.
* `kubeadm token create` Creates a new token.
* `--description` Set the description on the new token.
* `--ttl duration` Set expiration time of the token as a delta from "now".
Default is 0 for no expiration.
* `--usages` Set the ways that the token can be used. The default is
`signing,authentication`. These are the usages as described above.
* `kubeadm token delete <token id>|<token id>.<token secret>` Delete a token.
The token can either be identified with just an ID or with the entire token
value. Only the ID is used; the token is still deleted if the secret does not
match.
## ConfigMap Signing
In addition to authentication, the tokens can be used to sign a ConfigMap. This
is used early in a cluster bootstrap process before the client trusts the API
server. The signed ConfigMap can be authenicated by the shared token.
The ConfigMap that is signed is `cluster-info` in the `kube-public` namespace.
The typical flow is that a client reads this ConfigMap while unauthenticated and
ignoring TLS errors. It then validates the payload of the ConfigMap by looking
at a signature embedded in the ConfigMap.
The ConfigMap may look like this:
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: cluster-info
namespace: kube-public
data:
jws-kubeconfig-07401b: eyJhbGciOiJIUzI1NiIsImtpZCI6IjA3NDAxYiJ9..tYEfbo6zDNo40MQE07aZcQX2m3EB2rO3NuXtxVMYm9U
kubeconfig: |
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: <really long certificate data>
server: https://10.138.0.2:6443
name: ""
contexts: []
current-context: ""
kind: Config
preferences: {}
users: []
```
The `kubeconfig` member of the ConfigMap is a config file with just the cluster
information filled out. The key thing being communicated here is the
`certificate-authority-data`. This may be expanded in the future.
The signature is a JWS signature using the "detached" mode. To validate the
signature, the user should encode the `kubeconfig` payload according to JWS
rules (base64 encoded while discarding any trailing `=`). That encoded payload
is then used to form a whole JWS by inserting it between the 2 dots. You can
verify the JWS using the `HS256` scheme (HMAC-SHA256) with the full token (e.g.
`07401b.f395accd246ae52d`) as the shared secret. Users _must_ verify that HS256
is used.
-9
View File
@@ -1,9 +0,0 @@
---
assignees:
- lavalamp
title: Kubernetes Components
---
{% include user-guide-content-moved.md %}
[Kubernetes Components](/docs/concepts/overview/components/)
+1 -1
View File
@@ -111,7 +111,7 @@ Heapster's resource limits are set dynamically based on the initial size of your
and [#22940](http://issue.k8s.io/22940)). If you find that Heapster is running
out of resources, you should adjust the formulas that compute heapster memory request (see those PRs for details).
For directions on how to detect if addon containers are hitting resource limits, see the [Troubleshooting section of Compute Resources](/docs/user-guide/compute-resources/#troubleshooting).
For directions on how to detect if addon containers are hitting resource limits, see the [Troubleshooting section of Compute Resources](/docs/concepts/configuration/manage-compute-resources-container/#troubleshooting).
In the [future](http://issue.k8s.io/13048), we anticipate to set all cluster addon resource limits based on cluster size, and to dynamically adjust them if you grow or shrink your cluster.
We welcome PRs that implement those features.
-115
View File
@@ -1,115 +0,0 @@
---
assignees:
- davidopp
title: Troubleshooting Clusters
---
This doc is about cluster troubleshooting; we assume you have already ruled out your application as the root cause of the
problem you are experiencing. See
the [application troubleshooting guide](/docs/user-guide/application-troubleshooting) for tips on application debugging.
You may also visit [troubleshooting document](/docs/troubleshooting/) for more information.
## Listing your cluster
The first thing to debug in your cluster is if your nodes are all registered correctly.
Run
```shell
kubectl get nodes
```
And verify that all of the nodes you expect to see are present and that they are all in the `Ready` state.
## Looking at logs
For now, digging deeper into the cluster requires logging into the relevant machines. Here are the locations
of the relevant log files. (note that on systemd-based systems, you may need to use `journalctl` instead)
### Master
* /var/log/kube-apiserver.log - API Server, responsible for serving the API
* /var/log/kube-scheduler.log - Scheduler, responsible for making scheduling decisions
* /var/log/kube-controller-manager.log - Controller that manages replication controllers
### Worker Nodes
* /var/log/kubelet.log - Kubelet, responsible for running containers on the node
* /var/log/kube-proxy.log - Kube Proxy, responsible for service load balancing
## A general overview of cluster failure modes
This is an incomplete list of things that could go wrong, and how to adjust your cluster setup to mitigate the problems.
Root causes:
- VM(s) shutdown
- Network partition within cluster, or between cluster and users
- Crashes in Kubernetes software
- Data loss or unavailability of persistent storage (e.g. GCE PD or AWS EBS volume)
- Operator error, e.g. misconfigured Kubernetes software or application software
Specific scenarios:
- Apiserver VM shutdown or apiserver crashing
- Results
- unable to stop, update, or start new pods, services, replication controller
- existing pods and services should continue to work normally, unless they depend on the Kubernetes API
- Apiserver backing storage lost
- Results
- apiserver should fail to come up
- kubelets will not be able to reach it but will continue to run the same pods and provide the same service proxying
- manual recovery or recreation of apiserver state necessary before apiserver is restarted
- Supporting services (node controller, replication controller manager, scheduler, etc) VM shutdown or crashes
- currently those are colocated with the apiserver, and their unavailability has similar consequences as apiserver
- in future, these will be replicated as well and may not be co-located
- they do not have their own persistent state
- Individual node (VM or physical machine) shuts down
- Results
- pods on that Node stop running
- Network partition
- Results
- partition A thinks the nodes in partition B are down; partition B thinks the apiserver is down. (Assuming the master VM ends up in partition A.)
- Kubelet software fault
- Results
- crashing kubelet cannot start new pods on the node
- kubelet might delete the pods or not
- node marked unhealthy
- replication controllers start new pods elsewhere
- Cluster operator error
- Results
- loss of pods, services, etc
- lost of apiserver backing store
- users unable to read API
- etc.
Mitigations:
- Action: Use IaaS provider's automatic VM restarting feature for IaaS VMs
- Mitigates: Apiserver VM shutdown or apiserver crashing
- Mitigates: Supporting services VM shutdown or crashes
- Action: Use IaaS providers reliable storage (e.g. GCE PD or AWS EBS volume) for VMs with apiserver+etcd
- Mitigates: Apiserver backing storage lost
- Action: Use (experimental) [high-availability](/docs/admin/high-availability) configuration
- Mitigates: Master VM shutdown or master components (scheduler, API server, controller-managing) crashing
- Will tolerate one or more simultaneous node or component failures
- Mitigates: Apiserver backing storage (i.e., etcd's data directory) lost
- Assuming you used clustered etcd.
- Action: Snapshot apiserver PDs/EBS-volumes periodically
- Mitigates: Apiserver backing storage lost
- Mitigates: Some cases of operator error
- Mitigates: Some cases of Kubernetes software fault
- Action: use replication controller and services in front of pods
- Mitigates: Node shutdown
- Mitigates: Kubelet software fault
- Action: applications (containers) designed to tolerate unexpected restarts
- Mitigates: Node shutdown
- Mitigates: Kubelet software fault
- Action: [Multiple independent clusters](/docs/admin/multi-cluster) (and avoid making risky changes to all clusters at once)
- Mitigates: Everything listed above.
-168
View File
@@ -1,168 +0,0 @@
---
assignees:
- erictune
title: Daemon Sets
---
* TOC
{:toc}
## What is a DaemonSet?
A _DaemonSet_ ensures that all (or some) nodes run a copy of a pod. As nodes are added to the
cluster, pods are added to them. As nodes are removed from the cluster, those pods are garbage
collected. Deleting a DaemonSet will clean up the pods it created.
Some typical uses of a DaemonSet are:
- running a cluster storage daemon, such as `glusterd`, `ceph`, on each node.
- running a logs collection daemon on every node, such as `fluentd` or `logstash`.
- running a node monitoring daemon on every node, such as [Prometheus Node Exporter](
https://github.com/prometheus/node_exporter), `collectd`, New Relic agent, or Ganglia `gmond`.
In a simple case, one DaemonSet, covering all nodes, would be used for each type of daemon.
A more complex setup might use multiple DaemonSets for a single type of daemon, but with
different flags and/or different memory and cpu requests for different hardware types.
## Writing a DaemonSet Spec
### Required Fields
As with all other Kubernetes config, a DaemonSet needs `apiVersion`, `kind`, and `metadata` fields. For
general information about working with config files, see [deploying applications](/docs/user-guide/deploying-applications/),
[configuring containers](/docs/user-guide/configuring-containers/), and [working with resources](/docs/user-guide/working-with-resources/) documents.
A DaemonSet also needs a [`.spec`](https://github.com/kubernetes/kubernetes/tree/{{page.githubbranch}}/docs/devel/api-conventions.md#spec-and-status) section.
### Pod Template
The `.spec.template` is the only required field of the `.spec`.
The `.spec.template` is a [pod template](/docs/user-guide/replication-controller/#pod-template).
It has exactly the same schema as a [pod](/docs/user-guide/pods), except
it is nested and does not have an `apiVersion` or `kind`.
In addition to required fields for a pod, a pod template in a DaemonSet has to specify appropriate
labels (see [pod selector](#pod-selector)).
A pod template in a DaemonSet must have a [`RestartPolicy`](/docs/user-guide/pod-states)
equal to `Always`, or be unspecified, which defaults to `Always`.
### Pod Selector
The `.spec.selector` field is a pod selector. It works the same as the `.spec.selector` of
a [Job](/docs/concepts/jobs/run-to-completion-finite-workloads/) or other new resources.
The `spec.selector` is an object consisting of two fields:
* `matchLabels` - works the same as the `.spec.selector` of a [ReplicationController](/docs/user-guide/replication-controller/)
* `matchExpressions` - allows to build more sophisticated selectors by specifying key,
list of values and an operator that relates the key and values.
When the two are specified the result is ANDed.
If the `.spec.selector` is specified, it must match the `.spec.template.metadata.labels`. If not
specified, they are defaulted to be equal. Config with these not matching will be rejected by the API.
Also you should not normally create any pods whose labels match this selector, either directly, via
another DaemonSet, or via other controller such as ReplicationController. Otherwise, the DaemonSet
controller will think that those pods were created by it. Kubernetes will not stop you from doing
this. One case where you might want to do this is manually create a pod with a different value on
a node for testing.
### Running Pods on Only Some Nodes
If you specify a `.spec.template.spec.nodeSelector`, then the DaemonSet controller will
create pods on nodes which match that [node
selector](/docs/user-guide/node-selection/).
If you specify a `scheduler.alpha.kubernetes.io/affinity` annotation in `.spec.template.metadata.annotations`,
then DaemonSet controller will create pods on nodes which match that [node affinity](../../user-guide/node-selection/#alpha-feature-in-kubernetes-v12-node-affinity).
If you do not specify a `.spec.template.spec.nodeSelector` nor `node affinity`, then the DaemonSet controller will
create pods on all nodes.
## How Daemon Pods are Scheduled
Normally, the machine that a pod runs on is selected by the Kubernetes scheduler. However, pods
created by the Daemon controller have the machine already selected (`.spec.nodeName` is specified
when the pod is created, so it is ignored by the scheduler). Therefore:
- the [`unschedulable`](/docs/admin/node/#manual-node-administration) field of a node is not respected
by the DaemonSet controller.
- DaemonSet controller can make pods even when the scheduler has not been started, which can help cluster
bootstrap.
## Communicating with DaemonSet Pods
Some possible patterns for communicating with pods in a DaemonSet are:
- **Push**: Pods in the DaemonSet are configured to send updates to another service, such
as a stats database. They do not have clients.
- **NodeIP and Known Port**: Pods in the DaemonSet use a `hostPort`, so that the pods are reachable via the node IPs. Clients know the list of nodes ips somehow, and know the port by convention.
- **DNS**: Create a [headless service](/docs/user-guide/services/#headless-services) with the same pod selector,
and then discover DaemonSets using the `endpoints` resource or retrieve multiple A records from
DNS.
- **Service**: Create a service with the same pod selector, and use the service to reach a
daemon on a random node. (No way to reach specific node.)
## Updating a DaemonSet
If node labels are changed, the DaemonSet will promptly add pods to newly matching nodes and delete
pods from newly not-matching nodes.
You can modify the pods that a DaemonSet creates. However, pods do not allow all
fields to be updated. Also, the DaemonSet controller will use the original template the next
time a node (even with the same name) is created.
You can delete a DaemonSet. If you specify `--cascade=false` with `kubectl`, then the pods
will be left on the nodes. You can then create a new DaemonSet with a different template.
the new DaemonSet with the different template will recognize all the existing pods as having
matching labels. It will not modify or delete them despite a mismatch in the pod template.
You will need to force new pod creation by deleting the pod or deleting the node.
You cannot update a DaemonSet.
Support for updating DaemonSets and controlled updating of nodes is planned.
## Alternatives to DaemonSet
### Init Scripts
It is certainly possible to run daemon processes by directly starting them on a node (e.g. using
`init`, `upstartd`, or `systemd`). This is perfectly fine. However, there are several advantages to
running such processes via a DaemonSet:
- Ability to monitor and manage logs for daemons in the same way as applications.
- Same config language and tools (e.g. pod templates, `kubectl`) for daemons and applications.
- Future versions of Kubernetes will likely support integration between DaemonSet-created
pods and node upgrade workflows.
- Running daemons in containers with resource limits increases isolation between daemons from app
containers. However, this can also be accomplished by running the daemons in a container but not in a pod
(e.g. start directly via Docker).
### Bare Pods
It is possible to create pods directly which specify a particular node to run on. However,
a DaemonSet replaces pods that are deleted or terminated for any reason, such as in the case of
node failure or disruptive node maintenance, such as a kernel upgrade. For this reason, you should
use a DaemonSet rather than creating individual pods.
### Static Pods
It is possible to create pods by writing a file to a certain directory watched by Kubelet. These
are called [static pods](/docs/admin/static-pods/).
Unlike DaemonSet, static pods cannot be managed with kubectl
or other Kubernetes API clients. Static pods do not depend on the apiserver, making them useful
in cluster bootstrapping cases. Also, static pods may be deprecated in the future.
### Replication Controller
DaemonSet are similar to [Replication Controllers](/docs/user-guide/replication-controller) in that
they both create pods, and those pods have processes which are not expected to terminate (e.g. web servers,
storage servers).
Use a replication controller for stateless services, like frontends, where scaling up and down the
number of replicas and rolling out updates are more important than controlling exactly which host
the pod runs on. Use a Daemon Controller when it is important that a copy of a pod always run on
all or certain hosts, and when it needs to start before other pods.
-9
View File
@@ -1,9 +0,0 @@
---
assignees:
- davidopp
title: Pod Disruption Budget
---
{% include user-guide-content-moved.md %}
[Configuring a Pod Disruption Budget](/docs/tasks/configure-pod-container/configure-pod-disruption-budget/)
-10
View File
@@ -1,10 +0,0 @@
---
assignees:
- davidopp
- thockin
title: Using DNS Pods and Services
---
{% include user-guide-content-moved.md %}
[DNS Pods and Services](/docs/concepts/services-networking/dns-pod-service/)
-49
View File
@@ -1,49 +0,0 @@
---
assignees:
- lavalamp
title: Configuring Kubernetes Use of etcd
---
[etcd](https://coreos.com/etcd/docs/latest/) is a highly-available key value
store which Kubernetes uses for persistent storage of all of its REST API
objects.
## Configuration: high-level goals
Access Control: give *only* kube-apiserver read/write access to etcd. You do not
want apiserver's etcd exposed to every node in your cluster (or worse, to the
internet at large), because access to etcd is equivalent to root in your
cluster.
Data Reliability: for reasonable safety, either etcd needs to be run as a
[cluster](/docs/admin/high-availability/#clustering-etcd) (multiple machines each running
etcd) or etcd's data directory should be located on durable storage (e.g., GCE's
persistent disk). In either case, if high availability is required--as it might
be in a production cluster--the data directory ought to be [backed up
periodically](https://coreos.com/etcd/docs/latest/op-guide/recovery.html),
to reduce downtime in case of corruption.
## Default configuration
The default setup scripts use kubelet's file-based static pods feature to run etcd in a
[pod](http://releases.k8s.io/{{page.githubbranch}}/cluster/saltbase/salt/etcd/etcd.manifest). This manifest should only
be run on master VMs. The default location that kubelet scans for manifests is
`/etc/kubernetes/manifests/`.
## Kubernetes's usage of etcd
By default, Kubernetes objects are stored under the `/registry` key in etcd.
This path can be prefixed by using the [kube-apiserver](/docs/admin/kube-apiserver) flag
`--etcd-prefix="/foo"`.
`etcd` is the only place that Kubernetes keeps state.
## Troubleshooting
To test whether `etcd` is running correctly, you can try writing a value to a
test key. On your master VM (or somewhere with firewalls configured such that
you can talk to your cluster's etcd), try:
```shell
curl -fs -X PUT "http://${host}:${port}/v2/keys/_test"
```
@@ -0,0 +1,284 @@
---
assignees:
- smarterclayton
- lavalamp
- whitlockjc
- caesrxuchao
title: Dynamic Admission Control
---
* TOC
{:toc}
## Overview
The [admission controllers documentation](/docs/admin/admission-controllers/)
introduces how to use standard, plugin-style admission controllers. However,
plugin admission controllers are not flexible enough for all use cases, due to
the following:
* They need to be compiled into kube-apiserver.
* They are only configurable when the apiserver starts up.
1.7 introduces two alpha features, *Initializers* and *External Admission
Webhooks*, that address these limitations. These features allow admission
controllers to be developed out-of-tree and configured at runtime.
This page describes how to use Initializers and External Admission Webhooks.
## Initializers
### What are initializers?
*Initializer* has two meanings:
* A list of pending pre-initialization tasks, stored in every object's metadata
(e.g., "AddMyCorporatePolicySidecar").
* A user customized controller, which actually perform those tasks. The name of the task
corresponds to the controller which performs the task. For clarity, we call
them *initializer controllers* in this page.
Once the controller has performed its assigned task, it removes its name from
the list. For example, it may send a PATCH that inserts a container in a pod and
also removes its name from `metadata.initializers`. Initializers may make
mutations to objects.
Objects which have a non-empty initializer list are considered uninitialized,
and are not visible in the API unless specifically requested by using the query parameter,
`?includeUninitialized=true`.
### When to use initializers?
Initializers are useful for admins to force policies (e.g., the
[AlwaysPullImages](/docs/admin/admission-controllers/#alwayspullimages)
admission controller), or to inject defaults (e.g., the
[DefaultStorageClass](/docs/admin/admission-controllers/#defaultstorageclass)
admission controller), etc.
**Note:** If your use case does not involve mutating objects, consider using
external admission webhooks, as they have better performance.
### How are initializers triggered?
When an object is POSTed, it is checked against all existing
`initializerConfiguration` objects (explained below). For all that it matches,
all `spec.initializers[].name`s are appended to the new object's
`metadata.initializers` field.
An initializer controller should list and watch for uninitialized objects, by
using the query parameter `?includeUninitialized=true`. If using client-go, just
set
[listOptions.includeUninitialized](https://github.com/kubernetes/kubernetes/blob/v1.7.0-rc.1/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/types.go#L315)
to true.
For the observed uninitialized objects, an initializer controller should first
check if its name matches `metadata.initializers[0]`. If so, it should then
perform its assigned task and remove its name from the list.
### Enable initializers alpha feature
*Initializers* is an alpha feature, so it is disabled by default. To turn it on,
you need to:
* Include "Initializer" in the `--admission-control` flag when starting
`kube-apiserver`. If you have multiple `kube-apiserver` replicas, all should
have the same flag setting.
* Enable the dynamic admission controller registration API by adding
`admissionregistration.k8s.io/v1alpha1` to the `--runtime-config` flag passed
to `kube-apiserver`, e.g.
`--runtime-config=admissionregistration.k8s.io/v1alpha1`. Again, all replicas
should have the same flag setting.
### Deploy an initializer controller
You should deploy an initializer controller via the [deployment
API](/docs/api-reference/v1.6/#deployment-v1beta1-apps).
### Configure initializers on the fly
You can configure what initializers are enabled and what resources are subject
to the initializers by creating `initializerconfigurations`.
You should first deploy the initializer controller and make sure that it is
working properly before creating the `initializerconfigurations`. Otherwise, any
newly created resources will be stuck in an uninitialized state.
The following is an example `initiallizerConfiguration`.
```yaml
apiVersion: admissionregistration.k8s.io/v1alpha1
kind: InitializerConfiguration
metadata:
name: example-config
spec:
initializers:
# the name needs to be fully qualified, i.e., containing at least two "."
- name: podimage.example.com
rules:
# apiGroups, apiVersion, resources all support wildcard "*".
# "*" cannot be mixed with non-wildcard.
- apiGroups:
- ""
apiVersions:
- v1
resources:
- pods
```
Make sure that all expansions of the `<apiGroup, apiVersions, resources>` tuple
in a `rule` are valid. If they are not, separate them in different `rules`.
After you create the `initializerConfiguration`, the system will take a few
seconds to honor the new configuration.
## External Admission Webhooks
### What are external admission webhooks?
External admission webhooks are HTTP callbacks that are intended to receive
admission requests and do something with them. What an external admission
webhook does is up to you, but there is an
[interface](https://github.com/kubernetes/kubernetes/blob/v1.7.0-rc.1/pkg/apis/admission/v1alpha1/types.go)
that it must adhere to so that it responds with whether or not the
admission request should be allowed.
Unlike initializers or the plugin-style admission controllers, external
admission webhooks are not allowed to mutate the admission request in any way.
Because admission is a high security operation, the external admission webhooks
must support TLS.
### When to use admission webhooks?
A simple example use case for an external admission webhook is to do semantic validation
of Kubernetes resources. Suppose that your infrastructure requires that all `Pod`
resources have a common set of labels, and you do not want any `Pod` to be
persisted to Kubernetes if those needs are not met. You could write your
external admission webhook to do this validation and respond accordingly.
### How are external admission webhooks triggered?
Whenever a request comes in, the `GenericAdmissionWebhook` admission plugin will
get the list of interested external admission webhooks from
`externalAdmissionHookConfiguration` objects (explained below) and call them in
parallel. If **all** of the external admission webhooks approve the admission
request, the admission chain continues. If **any** of the external admission
webhooks deny the admission request, the admission request will be denied, and
the reason for doing so will be based on the _first_ external admission webhook
denial reason. _This means if there is more than one external admission webhook
that denied the admission request, only the first will be returned to the
user._ If there is an error encountered when calling an external admission
webhook, that request is ignored and will not be used to approve/deny the
admission request.
**Note:** The admission chain depends solely on the order of the
`--admission-control` option passed to `kube-apiserver`.
### Enable external admission webhooks
*External Admission Webhooks* is an alpha feature, so it is disabled by default.
To turn it on, you need to
* Include "GenericAdmissionWebhook" in the `--admission-control` flag when
starting the apiserver. If you have multiple `kube-apiserver` replicas, all
should have the same flag setting.
* Enable the dynamic admission controller registration API by adding
`admissionregistration.k8s.io/v1alpha1` to the `--runtime-config` flag passed
to `kube-apiserver`, e.g.
`--runtime-config=admissionregistration.k8s.io/v1alpha1`. Again, all replicas
should have the same flag setting.
### Write a webhook admission controller
See [caesarxuchao/example-webhook-admission-controller](https://github.com/caesarxuchao/example-webhook-admission-controller)
for an example webhook admission controller.
The communication between the webhook admission controller and the apiserver, or
more precisely, the GenericAdmissionWebhook admission controller, needs to be
TLS secured. You need to generate a CA cert and use it to sign the server cert
used by your webhook admission controller. The pem formatted CA cert is supplied
to the apiserver via the dynamic registration API
`externaladmissionhookconfigurations.clientConfig.caBundle`.
For each request received by the apiserver, the GenericAdmissionWebhook
admission controller sends an
[admissionReview](https://github.com/kubernetes/kubernetes/blob/v1.7.0-rc.1/pkg/apis/admission/v1alpha1/types.go#L27)
to the relevant webhook admission controller. The webhook admission controller
gathers information like `object`, `oldobject`, and `userInfo`, from
`admissionReview.spec`, sends back a response with the body also being the
`admissionReview`, whose `status` field is filled with the admission decision.
### Deploy the webhook admission controller
See [caesarxuchao/example-webhook-admission-controller deployment](https://github.com/caesarxuchao/example-webhook-admission-controller/tree/master/deployment)
for an example deployment.
The webhook admission controller should be deployed via the
[deployment API](/docs/api-reference/v1.6/#deployment-v1beta1-apps).
You also need to create a
[service](/docs/api-reference/v1.6/#service-v1-core) as the
front-end of the deployment.
### Configure webhook admission controller on the fly
You can configure what webhook admission controllers are enabled and what
resources are subject to the admission controller via creating
externaladmissionhookconfigurations.
We suggest that you first deploy the webhook admission controller and make sure
it is working properly before creating the externaladmissionhookconfigurations.
Otherwise, depending whether the webhook is configured as fail open or fail
closed, operations will be unconditionally accepted or rejected.
The following is an example externaladmissionhookconfiguration.
```yaml
apiVersion: admissionregistration.k8s.io/v1alpha1
kind: ExternalAdmissionHookConfiguration
metadata:
name: example-config
externalAdmissionHooks:
- name: pod-image.k8s.io
rules:
- apiGroups:
- ""
apiVersions:
- v1
operations:
- CREATE
resources:
- pods
failurePolicy: Ignore
clientConfig:
caBundle: <pem encoded ca cert that signs the server cert used by the webhook>
service:
name: <name of the front-end service>
namespace: <namespace of the front-end service>
```
For a request received by the apiserver, if the request matches any of the
`rules` of an `externalAdmissionHook`, the `GenericAdmissionWebhook` admission
controller will send an `admissionReview` request to the `externalAdmissionHook`
to ask for admission decision.
The `rule` is similar to the `rule` in `initializerConfiguration`, with two
differences:
* The addition of the `operations` field, specifying what operations the webhook
is interested in;
* The `resources` field accepts subresources in the form or resource/subresource.
Make sure that all expansions of the `<apiGroup, apiVersions,resources>` tuple
in a `rule` are valid. If they are not, separate them to different `rules`.
You can also specify the `failurePolicy`. In 1.7, the system supports `Ignore`
and `Fail` policies, meaning that upon a communication error with the webhook
admission controller, the `GenericAdmissionWebhook` can admit or reject the
operation based on the configured policy.
After you create the `initializerConfiguration`, the system will take a few
seconds to honor the new configuration.
+22 -22
View File
@@ -2,7 +2,6 @@
title: federation-apiserver
notitle: true
---
## federation-apiserver
@@ -26,14 +25,14 @@ federation-apiserver
--admission-control-config-file string File with admission control configuration.
--advertise-address ip The IP address on which to advertise the apiserver to members of the cluster. This address must be reachable by the rest of the cluster. If blank, the --bind-address will be used. If --bind-address is unspecified, the host's default interface will be used.
--anonymous-auth Enables anonymous requests to the secure port of the API server. Requests that are not rejected by another authentication method are treated as anonymous requests. Anonymous requests have a username of system:anonymous, and a group name of system:unauthenticated. (default true)
--apiserver-count int The number of apiservers running in the cluster. Must be a positive number. (default 1)
--audit-log-maxage int The maximum number of days to retain old audit log files based on the timestamp encoded in their filename.
--audit-log-maxbackup int The maximum number of old audit log files to retain.
--audit-log-maxsize int The maximum size in megabytes of the audit log file before it gets rotated. Defaults to 100MB.
--audit-log-path string If set, all requests coming to the apiserver will be logged to this file.
--authentication-token-webhook-cache-ttl duration The duration to cache responses from the webhook token authenticator. Default is 2m. (default 2m0s)
--authentication-token-webhook-config-file string File with webhook configuration for token authentication in kubeconfig format. The API server will query the remote service to determine authentication for bearer tokens.
--authorization-mode string Ordered list of plug-ins to do authorization on secure port. Comma-delimited list of: AlwaysAllow,AlwaysDeny,ABAC,Webhook,RBAC. (default "AlwaysAllow")
--authorization-policy-file string File with authorization policy in csv format, used with --authorization-mode=ABAC, on the secure port.
--authorization-rbac-super-user string If specified, a username which avoids RBAC authorization checks and role binding privilege escalation checks, to be used with --authorization-mode=RBAC.
--authorization-webhook-cache-authorized-ttl duration The duration to cache 'authorized' responses from the webhook authorizer. Default is 5m. (default 5m0s)
--authorization-webhook-cache-unauthorized-ttl duration The duration to cache 'unauthorized' responses from the webhook authorizer. Default is 30s. (default 30s)
--authorization-webhook-config-file string File with webhook configuration in kubeconfig format, used with --authorization-mode=Webhook. The API server will query the remote service to determine access on the API server's secure port.
@@ -43,7 +42,7 @@ federation-apiserver
--client-ca-file string If set, any request presenting a client certificate signed by one of the authorities in the client-ca-file is authenticated with an identity corresponding to the CommonName of the client certificate.
--cloud-config string The path to the cloud provider configuration file. Empty string for no configuration file.
--cloud-provider string The provider for cloud services. Empty string for no provider.
--contention-profiling Enable contention profiling. Requires --profiling to be set to work.
--contention-profiling Enable lock contention profiling, if profiling is enabled
--cors-allowed-origins stringSlice List of allowed origins for CORS, comma separated. An allowed origin can be a regular expression to support subdomain matching. If this list is empty CORS will not be enabled.
--delete-collection-workers int Number of workers spawned for DeleteCollection call. These are used to speed up namespace cleanup. (default 1)
--deserialization-cache-size int Number of deserialized json objects to cache in memory.
@@ -52,29 +51,33 @@ federation-apiserver
--etcd-cafile string SSL Certificate Authority file used to secure etcd communication.
--etcd-certfile string SSL certification file used to secure etcd communication.
--etcd-keyfile string SSL key file used to secure etcd communication.
--etcd-prefix string The prefix for all resource paths in etcd. (default "/registry")
--etcd-prefix string The prefix to prepend to all resource paths in etcd. (default "/registry")
--etcd-quorum-read If true, enable quorum read.
--etcd-servers stringSlice List of etcd servers to connect with (scheme://ip:port), comma separated.
--etcd-servers-overrides stringSlice Per-resource etcd servers overrides, comma separated. The individual override format: group/resource#servers, where servers are http://ip:port, semicolon separated.
--event-ttl duration Amount of time to retain events. Default is 1h. (default 1h0m0s)
--experimental-bootstrap-token-auth Enable to allow secrets of type 'bootstrap.kubernetes.io/token' in the 'kube-system' namespace to be used for TLS bootstrapping authentication.
--experimental-keystone-ca-file string If set, the Keystone server's certificate will be verified by one of the authorities in the experimental-keystone-ca-file, otherwise the host's root CA set will be used.
--experimental-keystone-url string If passed, activates the keystone authentication plugin.
--external-hostname string The hostname to use when generating externalized URLs for this master (e.g. Swagger API Docs).
--feature-gates mapStringBool A set of key=value pairs that describe feature gates for alpha/experimental features. Options are:
Accelerators=true|false (ALPHA - default=false)
AffinityInAnnotations=true|false (ALPHA - default=false)
AllAlpha=true|false (ALPHA - default=false)
AllowExtTrafficLocalEndpoints=true|false (BETA - default=true)
AppArmor=true|false (BETA - default=true)
DynamicKubeletConfig=true|false (ALPHA - default=false)
DynamicVolumeProvisioning=true|false (ALPHA - default=true)
ExperimentalHostUserNamespaceDefaulting=true|false (ALPHA - default=false)
StreamingProxyRedirects=true|false (ALPHA - default=false)
ExperimentalCriticalPodAnnotation=true|false (ALPHA - default=false)
ExperimentalHostUserNamespaceDefaulting=true|false (BETA - default=false)
StreamingProxyRedirects=true|false (BETA - default=true)
TaintBasedEvictions=true|false (ALPHA - default=false)
--insecure-allow-any-token username/group1,group2 If set, your server will be INSECURE. Any token will be allowed and user information will be parsed from the token as username/group1,group2
--insecure-bind-address ip The IP address on which to serve the --insecure-port (set to 0.0.0.0 for all interfaces). Defaults to localhost. (default 127.0.0.1)
--insecure-port int The port on which to serve unsecured, unauthenticated access. Default 8080. It is assumed that firewall rules are set up such that this port is not reachable from outside of the cluster and that port 443 on the cluster's public address is proxied to this port. This is performed by nginx in the default setup. (default 8080)
--kubernetes-service-node-port int If non-zero, the Kubernetes master service (which apiserver creates/maintains) will be of type NodePort, using this as the value of the port. If zero, the Kubernetes master service will be of type ClusterIP.
--long-running-request-regexp string A regular expression matching long running requests which should be excluded from maximum inflight request handling. (default "(/|^)((watch|proxy)(/|$)|(logs?|portforward|exec|attach)/?$)")
--master-service-namespace string DEPRECATED: the namespace from which the kubernetes master services should be injected into pods. (default "default")
--max-requests-inflight int The maximum number of requests in flight at a given time. When the server exceeds this, it rejects requests. Zero for no limit. (default 400)
--max-mutating-requests-inflight int The maximum number of mutating requests in flight at a given time. When the server exceeds this, it rejects requests. Zero for no limit. (default 200)
--max-requests-inflight int The maximum number of non-mutating requests in flight at a given time. When the server exceeds this, it rejects requests. Zero for no limit. (default 400)
--min-request-timeout int An optional field indicating the minimum number of seconds a handler must keep a request open before timing it out. Currently only honored by the watch request handler, which picks a randomized value above this number as the connection timeout, to spread out load. (default 1800)
--oidc-ca-file string If set, the OpenID server's certificate will be verified by one of the authorities in the oidc-ca-file, otherwise the host's root CA set will be used.
--oidc-client-id string The client ID for the OpenID Connect client, must be set if oidc-issuer-url is set.
@@ -84,16 +87,18 @@ StreamingProxyRedirects=true|false (ALPHA - default=false)
--profiling Enable profiling via web interface host:port/debug/pprof/ (default true)
--requestheader-allowed-names stringSlice List of client certificate common names to allow to provide usernames in headers specified by --requestheader-username-headers. If empty, any client certificate validated by the authorities in --requestheader-client-ca-file is allowed.
--requestheader-client-ca-file string Root certificate bundle to use to verify client certificates on incoming requests before trusting usernames in headers specified by --requestheader-username-headers
--requestheader-extra-headers-prefix stringSlice List of request header prefixes to inspect. X-Remote-Extra- is suggested.
--requestheader-group-headers stringSlice List of request headers to inspect for groups. X-Remote-Group is suggested.
--requestheader-username-headers stringSlice List of request headers to inspect for usernames. X-Remote-User is common.
--runtime-config mapStringString A set of key=value pairs that describe runtime configuration that may be passed to apiserver. apis/<groupVersion> key can be used to turn on/off specific api versions. apis/<groupVersion>/<resource> can be used to turn on/off specific resources. api/all and api/legacy are special keys to control all and legacy api versions respectively.
--secure-port int The port on which to serve HTTPS with authentication and authorization. If 0, don't serve HTTPS at all. (default 6443)
--service-cluster-ip-range ipNet A CIDR notation IP range from which to assign service cluster IPs. This must not overlap with any IP ranges assigned to nodes for pods.
--service-node-port-range portRange A port range to reserve for services with NodePort visibility. Example: '30000-32767'. Inclusive at both ends of the range. (default 30000-32767)
--storage-backend string The storage backend for persistence. Options: 'etcd2' (default), 'etcd3'.
--storage-media-type string The media type to use to store objects in storage. Defaults to application/json. Some resources may only support a specific media type and will ignore this setting. (default "application/json")
--storage-versions string The per-group version to store resources in. Specified in the format "group1/version1,group2/version2,...". In the case where objects are moved from one group to the other, you may specify the format "group1=group2/v1beta1,group3/v1beta1,...". You only need to pass the groups you wish to change from the defaults. It defaults to a list of preferred versions of all registered groups, which is derived from the KUBE_API_VERSIONS environment variable. (default "apps/v1beta1,authentication.k8s.io/v1beta1,authorization.k8s.io/v1beta1,autoscaling/v1,batch/v1,certificates.k8s.io/v1alpha1,componentconfig/v1alpha1,extensions/v1beta1,federation/v1beta1,policy/v1beta1,rbac.authorization.k8s.io/v1alpha1,storage.k8s.io/v1beta1,v1")
--service-account-key-file stringArray File containing PEM-encoded x509 RSA or ECDSA private or public keys, used to verify ServiceAccount tokens. If unspecified, --tls-private-key-file is used. The specified file can contain multiple keys, and the flag can be specified multiple times with different files.
--service-account-lookup If true, validate ServiceAccount tokens exist in etcd as part of authentication.
--storage-backend string The storage backend for persistence. Options: 'etcd3' (default), 'etcd2'.
--storage-media-type string The media type to use to store objects in storage. Some resources or storage backends may only support a specific media type and will ignore this setting. (default "application/vnd.kubernetes.protobuf")
--storage-versions string The per-group version to store resources in. Specified in the format "group1/version1,group2/version2,...". In the case where objects are moved from one group to the other, you may specify the format "group1=group2/v1beta1,group3/v1beta1,...". You only need to pass the groups you wish to change from the defaults. It defaults to a list of preferred versions of all registered groups, which is derived from the KUBE_API_VERSIONS environment variable. (default "apps/v1beta1,authentication.k8s.io/v1,authorization.k8s.io/v1,autoscaling/v1,batch/v1,certificates.k8s.io/v1beta1,componentconfig/v1alpha1,extensions/v1beta1,federation/v1beta1,policy/v1beta1,rbac.authorization.k8s.io/v1beta1,settings.k8s.io/v1alpha1,storage.k8s.io/v1beta1,v1")
--target-ram-mb int Memory limit for apiserver in MB (used to configure sizes of caches, etc.)
--tls-ca-file string If set, this certificate authority will used for secure access from Admission Controllers. This must be a valid PEM-encoded CA bundle.
--tls-ca-file string If set, this certificate authority will used for secure access from Admission Controllers. This must be a valid PEM-encoded CA bundle. Altneratively, the certificate authority can be appended to the certificate provided by --tls-cert-file.
--tls-cert-file string File containing the default x509 Certificate for HTTPS. (CA cert, if any, concatenated after server cert). If HTTPS serving is enabled, and --tls-cert-file and --tls-private-key-file are not provided, a self-signed certificate and key are generated for the public address and saved to /var/run/kubernetes.
--tls-private-key-file string File containing the default x509 private key matching --tls-cert-file.
--tls-sni-cert-key namedCertKey A pair of x509 certificate and private key file paths, optionally suffixed with a list of domain patterns which are fully qualified domain names, possibly with prefixed wildcard segments. If no domain patterns are provided, the names of the certificate are extracted. Non-wildcard matches trump over wildcard matches, explicit domain patterns trump over extracted names. For multiple key/certificate pairs, use the --tls-sni-cert-key multiple times. Examples: "example.key,example.crt" or "*.foo.com,foo.com:foo.key,foo.crt". (default [])
@@ -102,9 +107,4 @@ StreamingProxyRedirects=true|false (ALPHA - default=false)
--watch-cache-sizes stringSlice List of watch cache sizes for every resource (pods, nodes, etc.), comma separated. The individual override format: resource#size, where size is a number. It takes effect when watch-cache is enabled.
```
###### Auto generated by spf13/cobra on 13-Dec-2016
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/docs/admin/federation-apiserver.md?pixel)]()
<!-- END MUNGE: GENERATED_ANALYTICS -->
###### Auto generated by spf13/cobra on 21-Mar-2017
+4 -8
View File
@@ -2,7 +2,6 @@
title: federation-controller-manager
notitle: true
---
## federation-controller-manager
@@ -29,7 +28,9 @@ federation-controller-manager
--cluster-monitor-period duration The period for syncing ClusterStatus in ClusterController. (default 40s)
--concurrent-replicaset-syncs int The number of ReplicaSets syncing operations that will be done concurrently. Larger number = faster endpoint updating, but more CPU (and network) load (default 10)
--concurrent-service-syncs int The number of service syncing operations that will be done concurrently. Larger number = faster endpoint updating, but more CPU (and network) load (default 10)
--dns-provider string DNS provider. Valid values are: ["google-clouddns" "aws-route53"]
--contention-profiling Enable lock contention profiling, if profiling is enabled
--controllers mapStringString A set of key=value pairs that describe controller configuration to enable/disable specific controllers. Key should be the resource name (like services) and value should be true or false. For example: services=false,ingresses=false
--dns-provider string DNS provider. Valid values are: ["aws-route53" "coredns" "google-clouddns"]
--dns-provider-config string Path to config file for configuring DNS provider.
--federated-api-burst int Burst to use while talking with federation apiserver (default 30)
--federated-api-qps float32 QPS to use while talking with federation apiserver (default 20)
@@ -48,9 +49,4 @@ federation-controller-manager
--zone-name string Zone name, like example.com.
```
###### Auto generated by spf13/cobra on 13-Dec-2016
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/docs/admin/federation-controller-manager.md?pixel)]()
<!-- END MUNGE: GENERATED_ANALYTICS -->
###### Auto generated by spf13/cobra on 21-Mar-2017
+5 -3
View File
@@ -3,9 +3,11 @@ assignees:
- madhusudancs
- mml
- nikhiljindal
title: Using `federation-up` and `deploy.sh`
title: (Deprecated) Using `federation-up` and `deploy.sh`
---
## The mechanisms explained in this doc to setup federation are deprecated. [`kubefed`](/docs/tutorials/federation/set-up-cluster-federation-kubefed/) is now the recommended way to deploy federation.
This guide explains how to set up cluster federation that lets us control multiple Kubernetes clusters.
@@ -127,7 +129,7 @@ $ federation/deploy/deploy.sh deploy_federation
```
This spins up the federation control components as pods managed by
[`Deployments`](http://kubernetes.io/docs/user-guide/deployments/) on your
[`Deployments`](/docs/concepts/workloads/controllers/deployment/) on your
existing Kubernetes cluster. It also starts a
[`type: LoadBalancer`](http://kubernetes.io/docs/user-guide/services/#type-loadbalancer)
[`Service`](http://kubernetes.io/docs/user-guide/services/) for the
@@ -383,4 +385,4 @@ if required.
## For more information
* [Federation proposal](https://github.com/kubernetes/kubernetes/blob/{{page.githubbranch}}/docs/proposals/federation.md) details use cases that motivated this work.
* [Federation proposal](https://git.k8s.io/community/contributors/design-proposals/federation.md) details use cases that motivated this work.
-9
View File
@@ -1,9 +0,0 @@
---
assignees:
- madhusudancs
title: Setting up Cluster Federation with Kubefed
---
{% include user-guide-content-moved.md %}
[Setting up Cluster Federation with kubefed](/docs/tutorials/federation/set-up-cluster-federation-kubefed/)
-75
View File
@@ -1,75 +0,0 @@
---
assignees:
- mikedanese
title: Configuring kubelet Garbage Collection
---
* TOC
{:toc}
Garbage collection is a helpful function of kubelet that will clean up unused images and unused containers. Kubelet will perform garbage collection for containers every minute and garbage collection for images every five minutes.
External garbage collection tools are not recommended as these tools can potentially break the behavior of kubelet by removing containers expected to exist.
### Image Collection
Kubernetes manages lifecycle of all images through imageManager, with the cooperation
of cadvisor.
The policy for garbage collecting images takes two factors into consideration:
`HighThresholdPercent` and `LowThresholdPercent`. Disk usage above the high threshold
will trigger garbage collection. The garbage collection will delete least recently used images until the low
threshold has been met.
### Container Collection
The policy for garbage collecting containers considers three user-defined variables. `MinAge` is the minimum age at which a container can be garbage collected. `MaxPerPodContainer` is the maximum number of dead containers every single
pod (UID, container name) pair is allowed to have. `MaxContainers` is the maximum number of total dead containers. These variables can be individually disabled by setting `MinAge` to zero and setting `MaxPerPodContainer` and `MaxContainers` respectively to less than zero.
Kubelet will act on containers that are unidentified, deleted, or outside of the boundaries set by the previously mentioned flags. The oldest containers will generally be removed first. `MaxPerPodContainer` and `MaxContainer` may potentially conflict with each other in situations where retaining the maximum number of containers per pod (`MaxPerPodContainer`) would go outside the allowable range of global dead containers (`MaxContainers`). `MaxPerPodContainer` would be adjusted in this situation: A worst case scenario would be to downgrade `MaxPerPodContainer` to 1 and evict the oldest containers. Additionally, containers owned by pods that have been deleted are removed once they are older than `MinAge`.
Containers that are not managed by kubelet are not subject to container garbage collection.
### User Configuration
Users can adjust the following thresholds to tune image garbage collection with the following kubelet flags :
1. `image-gc-high-threshold`, the percent of disk usage which triggers image garbage collection.
Default is 90%.
2. `image-gc-low-threshold`, the percent of disk usage to which image garbage collection attempts
to free. Default is 80%.
We also allow users to customize garbage collection policy through the following kubelet flags:
1. `minimum-container-ttl-duration`, minimum age for a finished container before it is
garbage collected. Default is 0 minute, which means every finished container will be garbaged collected.
2. `maximum-dead-containers-per-container`, maximum number of old instances to be retained
per container. Default is 1.
3. `maximum-dead-containers`, maximum number of old instances of containers to retain globally.
Default is -1, which means there is no global limit.
Containers can potentially be garbage collected before their usefulness has expired. These containers
can contain logs and other data that can be useful for troubleshooting. A sufficiently large value for
`maximum-dead-containers-per-container` is highly recommended to allow at least 1 dead container to be
retained per expected container. A larger value for `maximum-dead-containers` is also recommended for a
similar reason.
See [this issue](https://github.com/kubernetes/kubernetes/issues/13287) for more details.
### Deprecation
Some kubelet Garbage Collection features in this doc will be replaced by kubelet eviction in the future.
Including:
| Existing Flag | New Flag | Rationale |
| ------------- | -------- | --------- |
| `--image-gc-high-threshold` | `--eviction-hard` or `--eviction-soft` | existing eviction signals can trigger image garbage collection |
| `--image-gc-low-threshold` | `--eviction-minimum-reclaim` | eviction reclaims achieve the same behavior |
| `--maximum-dead-containers` | | deprecated once old logs are stored outside of container's context |
| `--maximum-dead-containers-per-container` | | deprecated once old logs are stored outside of container's context |
| `--minimum-container-ttl-duration` | | deprecated once old logs are stored outside of container's context |
| `--low-diskspace-threshold-mb` | `--eviction-hard` or `eviction-soft` | eviction generalizes disk thresholds to other resources |
| `--outofdisk-transition-frequency` | `--eviction-pressure-transition-period` | eviction generalizes disk pressure transition to other resources |
See [Configuring Out Of Resource Handling](/docs/admin/out-of-resource/) for more details.
-158
View File
@@ -1,158 +0,0 @@
---
assignees:
- jszczepkowski
title: Setting up High-Availability Kubernetes Masters
---
* TOC
{:toc}
Kubernetes version 1.5 adds alpha support for replicating Kubernetes masters in `kube-up` or `kube-down` scripts for Google Compute Engine.
This document describes how to use kube-up/down scripts to manage highly available (HA) masters and how HA masters are implemented for use with GCE.
## Starting an HA-compatible cluster
To create a new HA-compatible cluster, you must set the following flags in your `kube-up` script:
* `MULTIZONE=true` - to prevent removal of master replicas kubelets from zones different than server's default zone.
Required if you want to run master replicas in different zones, which is recommended.
* `ENABLE_ETCD_QUORUM_READS=true` - to ensure that reads from all API servers will return most up-to-date data.
If true, reads will be directed to leader etcd replica.
Setting this value to true is optional: reads will be more reliable but will also be slower.
Optionally, you can specify a GCE zone where the first master replica is to be created.
Set the following flag:
* `KUBE_GCE_ZONE=zone` - zone where the first master replica will run.
The following sample command sets up a HA-compatible cluster in the GCE zone europe-west1-b:
```shell
$ MULTIZONE=true KUBE_GCE_ZONE=europe-west1-b ENABLE_ETCD_QUORUM_READS=true ./cluster/kube-up.sh
```
Note that the commands above create a cluster with one master;
however, you can add new master replicas to the cluster with subsequent commands.
## Adding a new master replica
After you have created an HA-compatible cluster, you can add master replicas to it.
You add master replicas by using a `kube-up` script with the following flags:
* `KUBE_REPLICATE_EXISTING_MASTER=true` - to create a replica of an existing
master.
* `KUBE_GCE_ZONE=zone` - zone where the master replica will run.
Must be in the same region as other replicas' zones.
You don't need to set the `MULTIZONE` or `ENABLE_ETCD_QUORUM_READS` flags,
as those are inherited from when you started your HA-compatible cluster.
The following sample command replicates the master on an existing HA-compatible cluster:
```shell
$ KUBE_GCE_ZONE=europe-west1-c KUBE_REPLICATE_EXISTING_MASTER=true ./cluster/kube-up.sh
```
## Removing a master replica
You can remove a master replica from an HA cluster by using a `kube-down` script with the following flags:
* `KUBE_DELETE_NODES=false` - to restrain deletion of kubelets.
* `KUBE_GCE_ZONE=zone` - the zone from where master replica will be removed.
* `KUBE_REPLICA_NAME=replica_name` - (optional) the name of master replica to remove.
If empty: any replica from the given zone will be removed.
The following sample command removes a master replica from an existing HA cluster:
```shell
$ KUBE_DELETE_NODES=false KUBE_GCE_ZONE=europe-west1-c ./cluster/kube-down.sh
```
## Handling master replica failures
If one of the master replicas in your HA cluster fails,
the best practice is to remove the replica from your cluster and add a new replica in the same zone.
The following sample commands demonstrate this process:
1. Remove the broken replica:
```shell
$ KUBE_DELETE_NODES=false KUBE_GCE_ZONE=replica_zone KUBE_REPLICA_NAME=replica_name ./cluster/kube-down.sh
```
<ol start="2"><li>Add a new replica in place of the old one:</li></ol>
```shell
$ KUBE_GCE_ZONE=replica-zone KUBE_REPLICATE_EXISTING_MASTER=true ./cluster/kube-up.sh
```
## Best practices for replicating masters for HA clusters
* Try to place masters replicas in different zones. During a zone failure, all master placed inside the zone will fail.
To survive zone failure, also place nodes in multiple zones
(see [multiple-zones](http://kubernetes.io/docs/admin/multiple-zones/) for details).
* Do not use a cluster with two master replicas. Consensus on a two replica cluster requires both replicas running when changing persistent state.
As a result, both replicas are needed and a failure of any replica turns cluster into majority failure state.
A two-replica cluster is thus inferior, in terms of HA, to a single replica cluster.
* When you add a master replica, cluster state (etcd) is copied to a new instance.
If the cluster is large, it may take a long time to duplicate its state.
This operation may be sped up by migrating etcd data directory, as described [here](https://coreos.com/etcd/docs/latest/admin_guide.html#member-migration)
(we are considering adding support for etcd data dir migration in future).
## Implementation notes
![ha-master-gce](/images/docs/ha-master-gce.png)
### Overview
Each of master replicas will run the following components in the following mode:
* etcd instance: all instances will be clustered together using consensus;
* API server: each server will talk to local etcd - all API servers in the cluster will be available;
* controllers, scheduler, and cluster auto-scaler: will use lease mechanism - only one instance of each of them will be active in the cluster;
* add-on manager: each manager will work independently trying to keep add-ons in sync.
In addition, there will be a load balancer in front of API servers that will route external and internal traffic to them.
### Load balancing
When starting the second master replica, a load balancer containing the two replicas will be created
and the IP address of the first replica will be promoted to IP address of load balancer.
Similarly, after removal of the penultimate master replica, the load balancer will be removed and its IP address will be assigned to the last remaining replica.
Please note that creation and removal of load balancer are complex operations and it may take some time (~20 minutes) for them to propagate.
### Master service & kubelets
Instead of trying to keep an up-to-date list of Kubernetes apiserver in the Kubernetes service,
the system directs all traffic to the external IP:
* in one master cluster the IP points to the single master,
* in multi-master cluster the IP points to the load balancer in-front of the masters.
Similarly, the external IP will be used by kubelets to communicate with master.
### Master certificates
Kubernetes generates Master TLS certificates for the external public IP and local IP for each replica.
There are no certificates for the ephemeral public IP for replicas;
to access a replica via its ephemeral public IP, you must skip TLS verification.
### Clustering etcd
To allow etcd clustering, ports needed to communicate between etcd instances will be opened (for inside cluster communication).
To make such deployment secure, communication between etcd instances is authorized using SSL.
## Additional reading
[Automated HA master deployment - design doc](https://github.com/kubernetes/kubernetes/blob/master/docs/design/ha_master.md)

Some files were not shown because too many files have changed in this diff Show More