Resolving merge conflicts with master
This commit is contained in:
@@ -1,10 +1,11 @@
|
|||||||
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
> For 1.8 Features: set Milestone to `1.8` and Base Branch to `release-1.8`
|
> For 1.9 Features: set Milestone to `1.9` and Base Branch to `release-1.9`
|
||||||
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
>
|
|
||||||
> NOTE: Please check the “Allow edits from maintainers” box (see image below) to
|
> 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.
|
> [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.
|
> Please delete this note before submitting the pull request.
|
||||||
|
>
|
||||||
|
> NOTE: After opening the PR, please *un-check and re-check* the "Allow edits from maintainers" box. This is a temporary workaround to address a known issue with GitHub.
|
||||||
|
|
||||||

|

|
||||||
|
|||||||
+3
-3
@@ -6,15 +6,15 @@ go:
|
|||||||
install:
|
install:
|
||||||
- export PATH=$GOPATH/bin:$PATH
|
- export PATH=$GOPATH/bin:$PATH
|
||||||
- mkdir -p $HOME/gopath/src/k8s.io
|
- mkdir -p $HOME/gopath/src/k8s.io
|
||||||
- mv $TRAVIS_BUILD_DIR $HOME/gopath/src/k8s.io/kubernetes.github.io
|
- mv $TRAVIS_BUILD_DIR $HOME/gopath/src/k8s.io/website
|
||||||
|
|
||||||
# (1) Fetch dependencies for us to run the tests in test/examples_test.go
|
# (1) Fetch dependencies for us to run the tests in test/examples_test.go
|
||||||
- go get -t -v k8s.io/kubernetes.github.io/test
|
- go get -t -v k8s.io/website/test
|
||||||
|
|
||||||
# Simplified deduplication of dependencies.
|
# Simplified deduplication of dependencies.
|
||||||
- cp -L -R $GOPATH/src/k8s.io/kubernetes/vendor/ $GOPATH/src/
|
- cp -L -R $GOPATH/src/k8s.io/kubernetes/vendor/ $GOPATH/src/
|
||||||
- rm -r $GOPATH/src/k8s.io/kubernetes/vendor/
|
- rm -r $GOPATH/src/k8s.io/kubernetes/vendor/
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- go test -v k8s.io/kubernetes.github.io/test
|
- go test -v k8s.io/website/test
|
||||||
- ./verify-docs-format.sh
|
- ./verify-docs-format.sh
|
||||||
|
|||||||
+5
-5
@@ -9,7 +9,7 @@ These are just guidelines, not rules. Use your best judgment, and feel free to p
|
|||||||
|
|
||||||
### Code of Conduct
|
### Code of Conduct
|
||||||
|
|
||||||
Kubernetes follows the [Cloud Native Computing Foundation (CNCF) Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to Sarah Novotny [sarahnovotny@google.com](mailto:sarahnovotny@google.com) and/or Dan Kohn [dan@linuxfoundation.org](mailto:dan@linuxfoundation.org).
|
Kubernetes follows the [Cloud Native Computing Foundation (CNCF) Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to Sarah Novotny [sarahnovotny@google.com](mailto:sarahnovotny@google.com) and/or Dan Kohn [dan@linuxfoundation.org](mailto:dan@linuxfoundation.org).
|
||||||
|
|
||||||
### Documentation and Site Decisions
|
### Documentation and Site Decisions
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@ The [Kubernetes SIG Docs Discussion Group](https://groups.google.com/forum/#!for
|
|||||||
|
|
||||||
### Style Guides and Templates
|
### Style Guides and Templates
|
||||||
|
|
||||||
Before submitting a pull request to create new content, please review the [Kubernetes.io style guide](http://kubernetes.io/docs/home/contribute/style-guide/) and follow the [instructions for using page templates](http://kubernetes.io/docs/home/contribute/page-templates/).
|
Before submitting a pull request to create new content, please review the [Kubernetes.io style guide](http://kubernetes.io/docs/home/contribute/style-guide/) and follow the [instructions for using page templates](http://kubernetes.io/docs/home/contribute/page-templates/).
|
||||||
|
|
||||||
|
|
||||||
## Contributing to Documentation
|
## Contributing to Documentation
|
||||||
@@ -26,10 +26,10 @@ Before submitting a pull request to create new content, please review the [Kuber
|
|||||||
|
|
||||||
Kubernetes.io uses github issues to track documentation issues and requests. If you see a documentation issue, submit an issue using the following steps:
|
Kubernetes.io uses github issues to track documentation issues and requests. If you see a documentation issue, submit an issue using the following steps:
|
||||||
|
|
||||||
1. Check the [kubernetes.io issues list](https://github.com/kubernetes/kubernetes.github.io/issues) as you might find out the issue is a duplicate.
|
1. Check the [kubernetes.io issues list](https://github.com/kubernetes/website/issues) as you might find out the issue is a duplicate.
|
||||||
2. Use the [included template for every new issue](https://github.com/kubernetes/kubernetes.github.io/issues/new). When you create a bug report, include as many details as possible and include suggested fixes to the issue.
|
2. Use the [included template for every new issue](https://github.com/kubernetes/website/issues/new). When you create a bug report, include as many details as possible and include suggested fixes to the issue.
|
||||||
|
|
||||||
Note that code issues should be filed against the main kubernetes repository, while documentation issues should go in the kubernetes.io repository.
|
Note that code issues should be filed against the main kubernetes repository, while documentation issues should go in the kubernetes.io repository.
|
||||||
|
|
||||||
### Submitting Documentation Pull Requests
|
### Submitting Documentation Pull Requests
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,53 @@
|
|||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
gem "github-pages", group: :jekyll_plugins
|
# gem "github-pages", group: :jekyll_plugins
|
||||||
|
|
||||||
|
gem "jekyll", "3.6.0"
|
||||||
|
|
||||||
|
group :github_pages_compatible do
|
||||||
|
gem "json", "~> 1.7", ">= 1.7.7"
|
||||||
|
gem "coffee-script", "~> 2.4"
|
||||||
|
gem "coffee-script-source", "~> 1.12"
|
||||||
|
gem "ethon", "~> 0.10"
|
||||||
|
gem "execjs", "~> 2.7"
|
||||||
|
gem "minima", "~> 2.0"
|
||||||
|
gem "terminal-table", "~> 1.4"
|
||||||
|
gem "unicode-display_width", "~> 1.1"
|
||||||
|
end
|
||||||
|
|
||||||
|
group :jekyll_plugins do
|
||||||
|
gem "jekyll-feed", "~> 0.6"
|
||||||
|
gem "jekyll-sitemap"
|
||||||
|
gem "jekyll-gist"
|
||||||
|
gem "jekyll-paginate", "1.1.0"
|
||||||
|
gem "jekyll-seo-tag"
|
||||||
|
gem "jekyll-avatar", "~> 0.4"
|
||||||
|
gem "jekyll-coffeescript", "~> 1.0"
|
||||||
|
gem "jekyll-default-layout", "~> 0.1"
|
||||||
|
gem "jekyll-github-metadata", "~> 2.2"
|
||||||
|
gem "jekyll-optional-front-matter", "~> 0.1"
|
||||||
|
gem "jekyll-readme-index", "0.0.3"
|
||||||
|
gem "jekyll-redirect-from", "~> 0.11"
|
||||||
|
gem "jekyll-relative-links", "~> 0.2"
|
||||||
|
gem "jekyll-swiss", "~> 0.4"
|
||||||
|
gem "jekyll-theme-architect", "0.0.3"
|
||||||
|
gem "jekyll-theme-cayman", "0.0.3"
|
||||||
|
gem "jekyll-theme-dinky", "0.0.3"
|
||||||
|
gem "jekyll-theme-hacker", "0.0.3"
|
||||||
|
gem "jekyll-theme-leap-day", "0.0.3"
|
||||||
|
gem "jekyll-theme-merlot", "0.0.3"
|
||||||
|
gem "jekyll-theme-midnight", "0.0.3"
|
||||||
|
gem "jekyll-theme-minimal", "0.0.3"
|
||||||
|
gem "jekyll-theme-modernist", "0.0.3"
|
||||||
|
gem "jekyll-theme-primer", "~> 0.1"
|
||||||
|
gem "jekyll-theme-slate", "0.0.3"
|
||||||
|
gem "jekyll-theme-tactile", "0.0.3"
|
||||||
|
gem "jekyll-theme-time-machine", "0.0.3"
|
||||||
|
gem "jekyll-titles-from-headings", "~> 0.1"
|
||||||
|
end
|
||||||
|
|
||||||
gem "jekyll-include-cache", "~> 0.1"
|
gem "jekyll-include-cache", "~> 0.1"
|
||||||
|
|
||||||
|
gem "kramdown", "~> 1.11"
|
||||||
|
gem "rouge", "~> 2.0"
|
||||||
|
gem "pry"
|
||||||
|
|||||||
+94
-121
@@ -1,123 +1,61 @@
|
|||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
activesupport (4.2.7)
|
addressable (2.5.2)
|
||||||
i18n (~> 0.7)
|
public_suffix (>= 2.0.2, < 4.0)
|
||||||
json (~> 1.7, >= 1.7.7)
|
coderay (1.1.2)
|
||||||
minitest (~> 5.1)
|
|
||||||
thread_safe (~> 0.3, >= 0.3.4)
|
|
||||||
tzinfo (~> 1.1)
|
|
||||||
addressable (2.5.0)
|
|
||||||
public_suffix (~> 2.0, >= 2.0.2)
|
|
||||||
coffee-script (2.4.1)
|
coffee-script (2.4.1)
|
||||||
coffee-script-source
|
coffee-script-source
|
||||||
execjs
|
execjs
|
||||||
coffee-script-source (1.12.2)
|
coffee-script-source (1.12.2)
|
||||||
colorator (1.1.0)
|
colorator (1.1.0)
|
||||||
ethon (0.10.1)
|
ethon (0.11.0)
|
||||||
ffi (>= 1.3.0)
|
ffi (>= 1.3.0)
|
||||||
execjs (2.7.0)
|
execjs (2.7.0)
|
||||||
faraday (0.10.0)
|
faraday (0.13.1)
|
||||||
multipart-post (>= 1.2, < 3)
|
multipart-post (>= 1.2, < 3)
|
||||||
ffi (1.9.14)
|
ffi (1.9.18)
|
||||||
forwardable-extended (2.6.0)
|
forwardable-extended (2.6.0)
|
||||||
gemoji (2.1.0)
|
jekyll (3.6.0)
|
||||||
github-pages (112)
|
|
||||||
activesupport (= 4.2.7)
|
|
||||||
github-pages-health-check (= 1.3.0)
|
|
||||||
jekyll (= 3.3.1)
|
|
||||||
jekyll-avatar (= 0.4.2)
|
|
||||||
jekyll-coffeescript (= 1.0.1)
|
|
||||||
jekyll-default-layout (= 0.1.4)
|
|
||||||
jekyll-feed (= 0.8.0)
|
|
||||||
jekyll-gist (= 1.4.0)
|
|
||||||
jekyll-github-metadata (= 2.2.0)
|
|
||||||
jekyll-mentions (= 1.2.0)
|
|
||||||
jekyll-optional-front-matter (= 0.1.2)
|
|
||||||
jekyll-paginate (= 1.1.0)
|
|
||||||
jekyll-readme-index (= 0.0.3)
|
|
||||||
jekyll-redirect-from (= 0.11.0)
|
|
||||||
jekyll-relative-links (= 0.2.1)
|
|
||||||
jekyll-sass-converter (= 1.3.0)
|
|
||||||
jekyll-seo-tag (= 2.1.0)
|
|
||||||
jekyll-sitemap (= 0.12.0)
|
|
||||||
jekyll-swiss (= 0.4.0)
|
|
||||||
jekyll-theme-architect (= 0.0.3)
|
|
||||||
jekyll-theme-cayman (= 0.0.3)
|
|
||||||
jekyll-theme-dinky (= 0.0.3)
|
|
||||||
jekyll-theme-hacker (= 0.0.3)
|
|
||||||
jekyll-theme-leap-day (= 0.0.3)
|
|
||||||
jekyll-theme-merlot (= 0.0.3)
|
|
||||||
jekyll-theme-midnight (= 0.0.3)
|
|
||||||
jekyll-theme-minimal (= 0.0.3)
|
|
||||||
jekyll-theme-modernist (= 0.0.3)
|
|
||||||
jekyll-theme-primer (= 0.1.5)
|
|
||||||
jekyll-theme-slate (= 0.0.3)
|
|
||||||
jekyll-theme-tactile (= 0.0.3)
|
|
||||||
jekyll-theme-time-machine (= 0.0.3)
|
|
||||||
jekyll-titles-from-headings (= 0.1.3)
|
|
||||||
jemoji (= 0.7.0)
|
|
||||||
kramdown (= 1.11.1)
|
|
||||||
liquid (= 3.0.6)
|
|
||||||
listen (= 3.0.6)
|
|
||||||
mercenary (~> 0.3)
|
|
||||||
minima (= 2.0.0)
|
|
||||||
rouge (= 1.11.1)
|
|
||||||
terminal-table (~> 1.4)
|
|
||||||
github-pages-health-check (1.3.0)
|
|
||||||
addressable (~> 2.3)
|
|
||||||
net-dns (~> 0.8)
|
|
||||||
octokit (~> 4.0)
|
|
||||||
public_suffix (~> 2.0)
|
|
||||||
typhoeus (~> 0.7)
|
|
||||||
html-pipeline (2.4.2)
|
|
||||||
activesupport (>= 2)
|
|
||||||
nokogiri (>= 1.4)
|
|
||||||
i18n (0.7.0)
|
|
||||||
jekyll (3.3.1)
|
|
||||||
addressable (~> 2.4)
|
addressable (~> 2.4)
|
||||||
colorator (~> 1.0)
|
colorator (~> 1.0)
|
||||||
jekyll-sass-converter (~> 1.0)
|
jekyll-sass-converter (~> 1.0)
|
||||||
jekyll-watch (~> 1.1)
|
jekyll-watch (~> 1.1)
|
||||||
kramdown (~> 1.3)
|
kramdown (~> 1.14)
|
||||||
liquid (~> 3.0)
|
liquid (~> 4.0)
|
||||||
mercenary (~> 0.3.3)
|
mercenary (~> 0.3.3)
|
||||||
pathutil (~> 0.9)
|
pathutil (~> 0.9)
|
||||||
rouge (~> 1.7)
|
rouge (>= 1.7, < 3)
|
||||||
safe_yaml (~> 1.0)
|
safe_yaml (~> 1.0)
|
||||||
jekyll-avatar (0.4.2)
|
jekyll-avatar (0.5.0)
|
||||||
jekyll (~> 3.0)
|
jekyll (~> 3.0)
|
||||||
jekyll-coffeescript (1.0.1)
|
jekyll-coffeescript (1.0.1)
|
||||||
coffee-script (~> 2.2)
|
coffee-script (~> 2.2)
|
||||||
jekyll-default-layout (0.1.4)
|
jekyll-default-layout (0.1.4)
|
||||||
jekyll (~> 3.0)
|
jekyll (~> 3.0)
|
||||||
jekyll-feed (0.8.0)
|
jekyll-feed (0.9.2)
|
||||||
jekyll (~> 3.3)
|
jekyll (~> 3.3)
|
||||||
jekyll-gist (1.4.0)
|
jekyll-gist (1.4.1)
|
||||||
octokit (~> 4.2)
|
octokit (~> 4.2)
|
||||||
jekyll-github-metadata (2.2.0)
|
jekyll-github-metadata (2.9.3)
|
||||||
jekyll (~> 3.1)
|
jekyll (~> 3.1)
|
||||||
octokit (~> 4.0, != 4.4.0)
|
octokit (~> 4.0, != 4.4.0)
|
||||||
jekyll-include-cache (0.1.0)
|
jekyll-include-cache (0.1.0)
|
||||||
jekyll (~> 3.3)
|
jekyll (~> 3.3)
|
||||||
jekyll-mentions (1.2.0)
|
jekyll-optional-front-matter (0.3.0)
|
||||||
activesupport (~> 4.0)
|
|
||||||
html-pipeline (~> 2.3)
|
|
||||||
jekyll (~> 3.0)
|
|
||||||
jekyll-optional-front-matter (0.1.2)
|
|
||||||
jekyll (~> 3.0)
|
jekyll (~> 3.0)
|
||||||
jekyll-paginate (1.1.0)
|
jekyll-paginate (1.1.0)
|
||||||
jekyll-readme-index (0.0.3)
|
jekyll-readme-index (0.0.3)
|
||||||
jekyll (~> 3.0)
|
jekyll (~> 3.0)
|
||||||
jekyll-redirect-from (0.11.0)
|
jekyll-redirect-from (0.12.1)
|
||||||
jekyll (>= 2.0)
|
|
||||||
jekyll-relative-links (0.2.1)
|
|
||||||
jekyll (~> 3.3)
|
jekyll (~> 3.3)
|
||||||
jekyll-sass-converter (1.3.0)
|
jekyll-relative-links (0.5.1)
|
||||||
sass (~> 3.2)
|
|
||||||
jekyll-seo-tag (2.1.0)
|
|
||||||
jekyll (~> 3.3)
|
jekyll (~> 3.3)
|
||||||
jekyll-sitemap (0.12.0)
|
jekyll-sass-converter (1.5.0)
|
||||||
|
sass (~> 3.4)
|
||||||
|
jekyll-seo-tag (2.3.0)
|
||||||
|
jekyll (~> 3.3)
|
||||||
|
jekyll-sitemap (1.1.1)
|
||||||
jekyll (~> 3.3)
|
jekyll (~> 3.3)
|
||||||
jekyll-swiss (0.4.0)
|
jekyll-swiss (0.4.0)
|
||||||
jekyll-theme-architect (0.0.3)
|
jekyll-theme-architect (0.0.3)
|
||||||
@@ -138,66 +76,101 @@ GEM
|
|||||||
jekyll (~> 3.3)
|
jekyll (~> 3.3)
|
||||||
jekyll-theme-modernist (0.0.3)
|
jekyll-theme-modernist (0.0.3)
|
||||||
jekyll (~> 3.3)
|
jekyll (~> 3.3)
|
||||||
jekyll-theme-primer (0.1.5)
|
jekyll-theme-primer (0.5.2)
|
||||||
jekyll (~> 3.3)
|
jekyll (~> 3.5)
|
||||||
|
jekyll-github-metadata (~> 2.9)
|
||||||
|
jekyll-seo-tag (~> 2.2)
|
||||||
jekyll-theme-slate (0.0.3)
|
jekyll-theme-slate (0.0.3)
|
||||||
jekyll (~> 3.3)
|
jekyll (~> 3.3)
|
||||||
jekyll-theme-tactile (0.0.3)
|
jekyll-theme-tactile (0.0.3)
|
||||||
jekyll (~> 3.3)
|
jekyll (~> 3.3)
|
||||||
jekyll-theme-time-machine (0.0.3)
|
jekyll-theme-time-machine (0.0.3)
|
||||||
jekyll (~> 3.3)
|
jekyll (~> 3.3)
|
||||||
jekyll-titles-from-headings (0.1.3)
|
jekyll-titles-from-headings (0.5.0)
|
||||||
jekyll (~> 3.3)
|
jekyll (~> 3.3)
|
||||||
jekyll-watch (1.5.0)
|
jekyll-watch (1.5.0)
|
||||||
listen (~> 3.0, < 3.1)
|
listen (~> 3.0, < 3.1)
|
||||||
jemoji (0.7.0)
|
|
||||||
activesupport (~> 4.0)
|
|
||||||
gemoji (~> 2.0)
|
|
||||||
html-pipeline (~> 2.2)
|
|
||||||
jekyll (>= 3.0)
|
|
||||||
json (1.8.6)
|
json (1.8.6)
|
||||||
kramdown (1.11.1)
|
kramdown (1.15.0)
|
||||||
liquid (3.0.6)
|
liquid (4.0.0)
|
||||||
listen (3.0.6)
|
listen (3.0.8)
|
||||||
rb-fsevent (>= 0.9.3)
|
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||||
rb-inotify (>= 0.9.7)
|
rb-inotify (~> 0.9, >= 0.9.7)
|
||||||
mercenary (0.3.6)
|
mercenary (0.3.6)
|
||||||
mini_portile2 (2.1.0)
|
method_source (0.9.0)
|
||||||
minima (2.0.0)
|
minima (2.1.1)
|
||||||
minitest (5.10.1)
|
jekyll (~> 3.3)
|
||||||
multipart-post (2.0.0)
|
multipart-post (2.0.0)
|
||||||
net-dns (0.8.0)
|
octokit (4.7.0)
|
||||||
nokogiri (1.6.8.1)
|
|
||||||
mini_portile2 (~> 2.1.0)
|
|
||||||
octokit (4.6.2)
|
|
||||||
sawyer (~> 0.8.0, >= 0.5.3)
|
sawyer (~> 0.8.0, >= 0.5.3)
|
||||||
pathutil (0.14.0)
|
pathutil (0.16.0)
|
||||||
forwardable-extended (~> 2.6)
|
forwardable-extended (~> 2.6)
|
||||||
public_suffix (2.0.4)
|
pry (0.11.2)
|
||||||
rb-fsevent (0.9.8)
|
coderay (~> 1.1.0)
|
||||||
rb-inotify (0.9.7)
|
method_source (~> 0.9.0)
|
||||||
ffi (>= 0.5.0)
|
public_suffix (3.0.0)
|
||||||
rouge (1.11.1)
|
rb-fsevent (0.10.2)
|
||||||
|
rb-inotify (0.9.10)
|
||||||
|
ffi (>= 0.5.0, < 2)
|
||||||
|
rouge (2.2.1)
|
||||||
safe_yaml (1.0.4)
|
safe_yaml (1.0.4)
|
||||||
sass (3.4.23)
|
sass (3.5.3)
|
||||||
|
sass-listen (~> 4.0.0)
|
||||||
|
sass-listen (4.0.0)
|
||||||
|
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||||
|
rb-inotify (~> 0.9, >= 0.9.7)
|
||||||
sawyer (0.8.1)
|
sawyer (0.8.1)
|
||||||
addressable (>= 2.3.5, < 2.6)
|
addressable (>= 2.3.5, < 2.6)
|
||||||
faraday (~> 0.8, < 1.0)
|
faraday (~> 0.8, < 1.0)
|
||||||
terminal-table (1.7.3)
|
terminal-table (1.8.0)
|
||||||
unicode-display_width (~> 1.1.1)
|
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||||
thread_safe (0.3.5)
|
unicode-display_width (1.3.0)
|
||||||
typhoeus (0.8.0)
|
|
||||||
ethon (>= 0.8.0)
|
|
||||||
tzinfo (1.2.2)
|
|
||||||
thread_safe (~> 0.1)
|
|
||||||
unicode-display_width (1.1.2)
|
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
github-pages
|
coffee-script (~> 2.4)
|
||||||
|
coffee-script-source (~> 1.12)
|
||||||
|
ethon (~> 0.10)
|
||||||
|
execjs (~> 2.7)
|
||||||
|
jekyll (= 3.6.0)
|
||||||
|
jekyll-avatar (~> 0.4)
|
||||||
|
jekyll-coffeescript (~> 1.0)
|
||||||
|
jekyll-default-layout (~> 0.1)
|
||||||
|
jekyll-feed (~> 0.6)
|
||||||
|
jekyll-gist
|
||||||
|
jekyll-github-metadata (~> 2.2)
|
||||||
jekyll-include-cache (~> 0.1)
|
jekyll-include-cache (~> 0.1)
|
||||||
|
jekyll-optional-front-matter (~> 0.1)
|
||||||
|
jekyll-paginate (= 1.1.0)
|
||||||
|
jekyll-readme-index (= 0.0.3)
|
||||||
|
jekyll-redirect-from (~> 0.11)
|
||||||
|
jekyll-relative-links (~> 0.2)
|
||||||
|
jekyll-seo-tag
|
||||||
|
jekyll-sitemap
|
||||||
|
jekyll-swiss (~> 0.4)
|
||||||
|
jekyll-theme-architect (= 0.0.3)
|
||||||
|
jekyll-theme-cayman (= 0.0.3)
|
||||||
|
jekyll-theme-dinky (= 0.0.3)
|
||||||
|
jekyll-theme-hacker (= 0.0.3)
|
||||||
|
jekyll-theme-leap-day (= 0.0.3)
|
||||||
|
jekyll-theme-merlot (= 0.0.3)
|
||||||
|
jekyll-theme-midnight (= 0.0.3)
|
||||||
|
jekyll-theme-minimal (= 0.0.3)
|
||||||
|
jekyll-theme-modernist (= 0.0.3)
|
||||||
|
jekyll-theme-primer (~> 0.1)
|
||||||
|
jekyll-theme-slate (= 0.0.3)
|
||||||
|
jekyll-theme-tactile (= 0.0.3)
|
||||||
|
jekyll-theme-time-machine (= 0.0.3)
|
||||||
|
jekyll-titles-from-headings (~> 0.1)
|
||||||
|
json (~> 1.7, >= 1.7.7)
|
||||||
|
kramdown (~> 1.11)
|
||||||
|
minima (~> 2.0)
|
||||||
|
pry
|
||||||
|
rouge (~> 2.0)
|
||||||
|
terminal-table (~> 1.4)
|
||||||
|
unicode-display_width (~> 1.1)
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
1.15.2
|
1.15.4
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
reviewers:
|
reviewers:
|
||||||
|
- a-mccarthy
|
||||||
|
- abiogenesis-now
|
||||||
- bradamant3
|
- bradamant3
|
||||||
- chenopis
|
|
||||||
- steveperry-53
|
- steveperry-53
|
||||||
- zacharysarah
|
- zacharysarah
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ Welcome! We are very pleased you want to contribute to the Kubernetes documentat
|
|||||||
|
|
||||||
You can click the **Fork** button in the upper-right area of the screen to create a copy of this repository in your GitHub account called a *fork*. Make any changes you want in your fork, and when you are ready to send those changes to us, go to your fork and create a new pull request to let us know about it.
|
You can click the **Fork** button in the upper-right area of the screen to create a copy of this repository in your GitHub account called a *fork*. Make any changes you want in your fork, and when you are ready to send those changes to us, go to your fork and create a new pull request to let us know about it.
|
||||||
|
|
||||||
|
Once your pull request is created, a Kubernetes reviewer will take responsibility for providing clear, actionable feedback. As the owner of the pull request, **it is your responsibility to modify your pull request to address the feedback that has been provided to you by the Kubernetes reviewer.** Also note that you may end up having more than one Kubernetes reviewer provide you feedback or you may end up getting feedback from a Kubernetes reviewer that is different than the one originally assigned to provide you feedback. Furthermore, in some cases, one of your reviewers might ask for a technical review from a [Kubernetes tech reviewer](https://github.com/kubernetes/website/wiki/Tech-reviewers) when needed. Reviewers will do their best to provide feedback in a timely fashion but response time can vary based on circumstances.
|
||||||
|
|
||||||
For more information about contributing to the Kubernetes documentation, see:
|
For more information about contributing to the Kubernetes documentation, see:
|
||||||
|
|
||||||
* [Contributing to the Kubernetes Documentation](http://kubernetes.io/editdocs/)
|
* [Contributing to the Kubernetes Documentation](http://kubernetes.io/editdocs/)
|
||||||
|
|||||||
+2
-2
@@ -32,7 +32,7 @@ defaults:
|
|||||||
version: "v1.7"
|
version: "v1.7"
|
||||||
githubbranch: "v1.7.6"
|
githubbranch: "v1.7.6"
|
||||||
docsbranch: "release-1.7"
|
docsbranch: "release-1.7"
|
||||||
url: https://kubernetes-io-v1-7.netlify.com/docs/home/
|
url: https://v1-7.docs.kubernetes.io/docs/home/
|
||||||
- fullversion: "v1.6.8"
|
- fullversion: "v1.6.8"
|
||||||
version: "v1.6"
|
version: "v1.6"
|
||||||
githubbranch: "v1.6.8"
|
githubbranch: "v1.6.8"
|
||||||
@@ -60,7 +60,7 @@ defaults:
|
|||||||
|
|
||||||
permalink: pretty
|
permalink: pretty
|
||||||
|
|
||||||
gems:
|
plugins:
|
||||||
- jekyll-feed
|
- jekyll-feed
|
||||||
- jekyll-sitemap
|
- jekyll-sitemap
|
||||||
- jekyll-seo-tag
|
- jekyll-seo-tag
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
- Fundamental
|
|
||||||
- API Object
|
|
||||||
- Metadata
|
|
||||||
- Configuration
|
|
||||||
- Security
|
|
||||||
- Networking
|
|
||||||
- Storage
|
|
||||||
- Operation
|
|
||||||
- Workload
|
|
||||||
- Component
|
|
||||||
- API
|
|
||||||
- Extension
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
id: architecture
|
||||||
|
name: Architecture
|
||||||
|
description: The inner components of Kubernetes.
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
id: community
|
||||||
|
name: Community
|
||||||
|
description: Related to Kubernetes open-source development.
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
id: core-object
|
||||||
|
name: Core Object
|
||||||
|
description: A resource type that Kubernetes supports by default.
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
id: extension
|
||||||
|
name: Extension
|
||||||
|
description: Supported customizations of Kubernetes.
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
id: fundamental
|
||||||
|
name: Fundamental
|
||||||
|
description: Relevant for a first-time user of Kubernetes.
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
id: networking
|
||||||
|
name: Networking
|
||||||
|
description: How Kubernetes components talk to each other (and to programs outside the cluster).
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
id: operation
|
||||||
|
name: Operation
|
||||||
|
description: Starting and maintaining Kubernetes.
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
id: security
|
||||||
|
name: Security
|
||||||
|
description: Keeping Kubernetes applications safe and secure.
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
id: storage
|
||||||
|
name: Storage
|
||||||
|
description: How Kubernetes applications handle persistent data.
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
id: tool
|
||||||
|
name: Tool
|
||||||
|
description: Software that makes Kubernetes easier or better to use.
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
id: user-type
|
||||||
|
name: User Type
|
||||||
|
description: Represents a common type of Kubernetes user.
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
id: workload
|
||||||
|
name: Workload
|
||||||
|
description: Applications running on Kubernetes.
|
||||||
+17
-5
@@ -20,11 +20,21 @@ toc:
|
|||||||
section:
|
section:
|
||||||
- docs/concepts/architecture/nodes.md
|
- docs/concepts/architecture/nodes.md
|
||||||
- docs/concepts/architecture/master-node-communication.md
|
- docs/concepts/architecture/master-node-communication.md
|
||||||
|
- docs/concepts/architecture/cloud-controller.md
|
||||||
|
|
||||||
- title: Extending the Kubernetes API
|
- title: Extending Kubernetes
|
||||||
section:
|
section:
|
||||||
- docs/concepts/api-extension/custom-resources.md
|
- docs/concepts/overview/extending.md
|
||||||
- docs/concepts/api-extension/apiserver-aggregation.md
|
- title: Extending the Kubernetes API
|
||||||
|
section:
|
||||||
|
- docs/concepts/api-extension/apiserver-aggregation.md
|
||||||
|
- docs/concepts/api-extension/custom-resources.md
|
||||||
|
- title: Compute, Storage, and Networking Extensions
|
||||||
|
section:
|
||||||
|
- docs/concepts/cluster-administration/network-plugins.md
|
||||||
|
- docs/concepts/cluster-administration/device-plugins.md
|
||||||
|
- docs/concepts/cluster-administration/sysctl-cluster.md
|
||||||
|
- docs/concepts/service-catalog/index.md
|
||||||
|
|
||||||
- title: Containers
|
- title: Containers
|
||||||
section:
|
section:
|
||||||
@@ -40,6 +50,7 @@ toc:
|
|||||||
- docs/concepts/workloads/pods/pod.md
|
- docs/concepts/workloads/pods/pod.md
|
||||||
- docs/concepts/workloads/pods/pod-lifecycle.md
|
- docs/concepts/workloads/pods/pod-lifecycle.md
|
||||||
- docs/concepts/workloads/pods/init-containers.md
|
- docs/concepts/workloads/pods/init-containers.md
|
||||||
|
- docs/concepts/workloads/pods/podpreset.md
|
||||||
- docs/concepts/workloads/pods/disruptions.md
|
- docs/concepts/workloads/pods/disruptions.md
|
||||||
- title: Controllers
|
- title: Controllers
|
||||||
section:
|
section:
|
||||||
@@ -75,12 +86,13 @@ toc:
|
|||||||
section:
|
section:
|
||||||
- docs/concepts/storage/volumes.md
|
- docs/concepts/storage/volumes.md
|
||||||
- docs/concepts/storage/persistent-volumes.md
|
- docs/concepts/storage/persistent-volumes.md
|
||||||
- title: Dynamic Provisioning
|
- docs/concepts/storage/storage-classes.md
|
||||||
path: http://blog.kubernetes.io/2016/10/dynamic-provisioning-and-storage-in-kubernetes.html
|
- docs/concepts/storage/dynamic-provisioning.md
|
||||||
|
|
||||||
- title: Cluster Administration
|
- title: Cluster Administration
|
||||||
section:
|
section:
|
||||||
- docs/concepts/cluster-administration/cluster-administration-overview.md
|
- docs/concepts/cluster-administration/cluster-administration-overview.md
|
||||||
|
- docs/concepts/cluster-administration/certificates.md
|
||||||
- docs/concepts/cluster-administration/cloud-providers.md
|
- docs/concepts/cluster-administration/cloud-providers.md
|
||||||
- docs/concepts/cluster-administration/manage-deployment.md
|
- docs/concepts/cluster-administration/manage-deployment.md
|
||||||
- docs/concepts/cluster-administration/networking.md
|
- docs/concepts/cluster-administration/networking.md
|
||||||
|
|||||||
+1
-2
@@ -3,8 +3,6 @@ abstract: "Documentation for using and learning about Kubernetes."
|
|||||||
toc:
|
toc:
|
||||||
- docs/home/index.md
|
- docs/home/index.md
|
||||||
|
|
||||||
- docs/home/index.md
|
|
||||||
|
|
||||||
- title: Release Notes
|
- title: Release Notes
|
||||||
path: https://git.k8s.io/kubernetes/CHANGELOG.md
|
path: https://git.k8s.io/kubernetes/CHANGELOG.md
|
||||||
- title: Release Roadmap
|
- title: Release Roadmap
|
||||||
@@ -21,3 +19,4 @@ toc:
|
|||||||
- docs/home/contribute/page-templates.md
|
- docs/home/contribute/page-templates.md
|
||||||
- docs/home/contribute/review-issues.md
|
- docs/home/contribute/review-issues.md
|
||||||
- docs/home/contribute/style-guide.md
|
- docs/home/contribute/style-guide.md
|
||||||
|
- docs/home/contribute/includes.md
|
||||||
|
|||||||
@@ -1,17 +1,27 @@
|
|||||||
id: _example
|
id: _example
|
||||||
name: Example K8s Term
|
name: Example K8s Term
|
||||||
formerly:
|
full-link: kubernetes.io/docs/link-to-long-dedicated-docs-page
|
||||||
|
aka:
|
||||||
- Slang K8s Term
|
- Slang K8s Term
|
||||||
- Misnomer
|
- Misnomer
|
||||||
- Formerly Known as Prince
|
- Formerly Known as Prince
|
||||||
related:
|
related:
|
||||||
- Less Fancy K8s Term
|
- id-of-less-fancy-k8s-term
|
||||||
- Tangential Term
|
- id-of-tangential-term
|
||||||
- Commonly Used With
|
- id-of-commonly-used-with-term
|
||||||
tags:
|
tags:
|
||||||
- Some Tag
|
- Some Tag
|
||||||
short-description: |
|
short-description: >
|
||||||
Required. One or two lines that provide a minimum definition. Do not repeat the term. Write about the plural of the term. Prefer fragments. Model after tooltips. End with a period.
|
Required.
|
||||||
long-description: |
|
Markdown allowed (e.g. for cross-linking).
|
||||||
Optional. Longer additional text to appear after (in conjunction with) short description. Provide where the short description is not sufficient as the intro paragraph to a topic. Write complete but concise sentences.
|
One or two lines that provide a minimum definition.
|
||||||
|
Do not repeat the term.
|
||||||
|
Prefer fragments.
|
||||||
|
End with a period.
|
||||||
|
long-description: >
|
||||||
|
Optional.
|
||||||
|
Markdown allowed.
|
||||||
|
Longer additional text to appear after (in conjunction with) short description.
|
||||||
|
Provide where the short description is not sufficient as the intro paragraph to a topic.
|
||||||
|
Write complete but concise sentences.
|
||||||
**See /_includes/templates/glossary/README.md for the official style guide.**
|
**See /_includes/templates/glossary/README.md for the official style guide.**
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
id: application-architect
|
||||||
|
name: Application Architect
|
||||||
|
related:
|
||||||
|
- application-developer
|
||||||
|
tags:
|
||||||
|
- user-type
|
||||||
|
short-description: >
|
||||||
|
A person responsible for the high-level design of an application.
|
||||||
|
long-description: >
|
||||||
|
An architect ensures that an app's implementation allows it to interact with its surrounding components in a scalable, maintainable way.
|
||||||
|
Surrounding components include databases, logging infrastructure, and other microservices.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
id: application-developer
|
||||||
|
name: Application Developer
|
||||||
|
related:
|
||||||
|
- application-architect
|
||||||
|
tags:
|
||||||
|
- user-type
|
||||||
|
short-description: >
|
||||||
|
A person who writes an application that runs in a Kubernetes cluster.
|
||||||
|
long-description: >
|
||||||
|
An application developer focuses on one part of an application.
|
||||||
|
The scale of their focus may vary significantly in size.
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
id: approver
|
||||||
|
name: Approver
|
||||||
|
tags:
|
||||||
|
- community
|
||||||
|
short-description: >
|
||||||
|
A person who can review and approve Kubernetes code contributions.
|
||||||
|
long-description: >
|
||||||
|
While code review is focused on code quality and correctness, approval is focused on the holistic acceptance of a contribution.
|
||||||
|
Holistic acceptance includes backwards/forwards compatibility, adhering to API and flag conventions, subtle performance and correctness issues, interactions with other parts of the system, and others.
|
||||||
|
Approver status is scoped to a part of the codebase.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
id: cla
|
||||||
|
name: CLA (Contributor License Agreement)
|
||||||
|
full-link: https://github.com/kubernetes/community/blob/master/CLA.md
|
||||||
|
tags:
|
||||||
|
- community
|
||||||
|
short-description: >
|
||||||
|
Terms under which a {% glossary_tooltip text="contributor" term_id="contributor" %} grants a license to an open source project for their contributions.
|
||||||
|
long-description: >
|
||||||
|
CLAs help resolve legal disputes involving contributed material and intellectual property (IP).
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
id: cluster-architect
|
||||||
|
name: Cluster Architect
|
||||||
|
related:
|
||||||
|
- cluster
|
||||||
|
- cluster-operator
|
||||||
|
tags:
|
||||||
|
- user-type
|
||||||
|
short-description: >
|
||||||
|
A person who designs infrastructure that involves one or more Kubernetes clusters.
|
||||||
|
long-description: >
|
||||||
|
Cluster architects are concerned with best practices for distributed systems, for example: high availability and security.
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
id: cluster-operator
|
||||||
|
name: Cluster Operator
|
||||||
|
aka:
|
||||||
|
- Cluster Administrator
|
||||||
|
related:
|
||||||
|
- cluster
|
||||||
|
- cluster-architect
|
||||||
|
tags:
|
||||||
|
- user-type
|
||||||
|
short-description: >
|
||||||
|
A person who configures, controls, and monitors clusters.
|
||||||
|
long-description: |
|
||||||
|
Their primary responsibility is keeping a cluster up and running, which may involve periodic maintenance activities or upgrades.<br>
|
||||||
|
|
||||||
|
**NOTE:** Cluster operators are different from the [Operator pattern](https://coreos.com/operators) that extends the Kubernetes API.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
id: cluster
|
||||||
|
name: Cluster
|
||||||
|
tags:
|
||||||
|
- fundamental
|
||||||
|
- operation
|
||||||
|
short-description: >
|
||||||
|
A set of machines, called nodes, that run containerized applications managed by Kubernetes.
|
||||||
|
long-description: >
|
||||||
|
A cluster has several worker nodes and at least one master node.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
id: code-contributor
|
||||||
|
name: Code Contributor
|
||||||
|
aka:
|
||||||
|
- Community Developer
|
||||||
|
tags:
|
||||||
|
- community
|
||||||
|
- user-type
|
||||||
|
short-description: >
|
||||||
|
A person who develops and contributes code to the Kubernetes open source codebase.
|
||||||
|
long-description: >
|
||||||
|
They are also an active {% glossary_tooltip text="community member" term_id="member" %} who participates in one or more {% glossary_tooltip text="Special Interest Groups (SIGs)" term_id="sig" %}.
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
id: container
|
||||||
|
name: Container
|
||||||
|
full-link: /docs/concepts/overview/what-is-kubernetes/#why-containers
|
||||||
|
tags:
|
||||||
|
- fundamental
|
||||||
|
- workload
|
||||||
|
short-description: >
|
||||||
|
A lightweight and portable executable image that contains software and all of its dependencies.
|
||||||
|
long-description: >
|
||||||
|
Containers decouple applications from underlying host infrastructure to make deployment easier in different cloud or OS environments, and for easier scaling.
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
id: contributor
|
||||||
|
name: Contributor
|
||||||
|
tags:
|
||||||
|
- community
|
||||||
|
short-description: >
|
||||||
|
Someone who donates code, documentation, or their time to help the Kubernetes project or community.
|
||||||
|
long-description: >
|
||||||
|
Contributions include pull requests (PRs), issues, feedback, {% glossary_tooltip text="special interest groups (SIG)" term_id="sig" %} participation, or organizing community events.
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
id: cronjob
|
||||||
|
name: CronJob
|
||||||
|
full-link: /docs/concepts/workloads/controllers/cron-jobs/
|
||||||
|
tags:
|
||||||
|
- core-object
|
||||||
|
- workload
|
||||||
|
short-description: >
|
||||||
|
Manages a [Job](/docs/concepts/workloads/controllers/jobs-run-to-completion/) that runs on a periodic schedule.
|
||||||
|
long-description: >
|
||||||
|
Similar to a line in a *crontab* file, a Cronjob object specifies a schedule using the [Cron](https://en.wikipedia.org/wiki/Cron) format.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
id: deployment
|
||||||
|
name: Deployment
|
||||||
|
full-link: /docs/concepts/workloads/controllers/deployment/
|
||||||
|
tags:
|
||||||
|
- fundamental
|
||||||
|
- core-object
|
||||||
|
- workload
|
||||||
|
short-description: >
|
||||||
|
An API object that manages a replicated application.
|
||||||
|
long-description: >
|
||||||
|
Each replica is represented by a {% glossary_tooltip term_id="pod" %}, and the Pods are distributed among the nodes of a cluster.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
id: developer
|
||||||
|
name: Developer (disambiguation)
|
||||||
|
aka:
|
||||||
|
- Kubernetes Developer
|
||||||
|
tags:
|
||||||
|
- community
|
||||||
|
- user-type
|
||||||
|
short-description: >
|
||||||
|
May refer to: {% glossary_tooltip text="Application Developer" term_id="application-developer" %}, {% glossary_tooltip text="Code Contributor" term_id="code-contributor" %}, or {% glossary_tooltip text="Platform Developer" term_id="platform-developer" %}.
|
||||||
|
long-description: >
|
||||||
|
This overloaded term may have different meanings depending on the context
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
id: downstream
|
||||||
|
name: Downstream (disambiguation)
|
||||||
|
related:
|
||||||
|
- upstream
|
||||||
|
tags:
|
||||||
|
- community
|
||||||
|
short-description: >
|
||||||
|
May refer to: code in the Kubernetes ecosystem that depends upon the core Kubernetes codebase or a forked repo.
|
||||||
|
long-description: |
|
||||||
|
* In the **Kubernetes Community**: Conversations often use *downstream* to mean the ecosystem, code, or third-party tools that rely on the core Kubernetes codebase. For example, a new feature in Kubernetes may be adopted by applications *downstream* to improve their functionality.
|
||||||
|
* In **GitHub** or **git**: The convention is to refer to a forked repo as *downstream*, whereas the source repo is considered *upstream*.
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
id: helm-chart
|
||||||
|
name: Helm Chart
|
||||||
|
full-link: https://github.com/kubernetes/helm/blob/master/docs/charts.md
|
||||||
|
tags:
|
||||||
|
- tool
|
||||||
|
short-description: >
|
||||||
|
A package of pre-configured Kubernetes resources that can be managed with the Helm tool.
|
||||||
|
long-description: |
|
||||||
|
Charts provide a reproducible way of creating and sharing Kubernetes applications.
|
||||||
|
A single chart can be used to deploy something simple, like a memcached Pod, or something complex, like a full web app stack with HTTP servers, databases, caches, and so on.
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
id: ingress
|
||||||
|
name: Ingress
|
||||||
|
full-link: /docs/concepts/services-networking/ingress/
|
||||||
|
aka:
|
||||||
|
- Ingress controller
|
||||||
|
tags:
|
||||||
|
- networking
|
||||||
|
- architecture
|
||||||
|
- extension
|
||||||
|
short-description: >
|
||||||
|
An API object that manages external access to the services in a cluster, typically HTTP.
|
||||||
|
long-description: >
|
||||||
|
Ingress can provide load balancing, SSL termination and name-based virtual hosting.
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
id: istio
|
||||||
|
name: Istio
|
||||||
|
full-link: https://istio.io/docs/concepts/what-is-istio/overview.html
|
||||||
|
tags:
|
||||||
|
- networking
|
||||||
|
- architecture
|
||||||
|
- extension
|
||||||
|
short-description: >
|
||||||
|
An open platform (not Kubernetes-specific) that provides a uniform way to integrate microservices, manage traffic flow, enforce policies, and aggregate telemetry data.
|
||||||
|
long-description: >
|
||||||
|
Adding Istio does not require changing application code.
|
||||||
|
It is a layer of infrastructure between a service and the network, which when combined with service deployments, is commonly referred to as a service mesh.
|
||||||
|
Istio's control plane abstracts away the underlying cluster management platform, which may be Kubernetes, Mesosphere, etc.
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
id: kops
|
||||||
|
name: Kops
|
||||||
|
full-link: /docs/getting-started-guides/kops/
|
||||||
|
tags:
|
||||||
|
- tool
|
||||||
|
- operation
|
||||||
|
short-description: >
|
||||||
|
A CLI tool that helps you create, destroy, upgrade and maintain production-grade, highly available, Kubernetes clusters. *NOTE: Officially supports AWS only, with GCE and VMware vSphere in alpha*.
|
||||||
|
long-description: |
|
||||||
|
`kops` provisions your cluster with:
|
||||||
|
|
||||||
|
* Fully automated installation
|
||||||
|
* DNS-based cluster identification
|
||||||
|
* Self-healing: everything runs in Auto-Scaling Groups
|
||||||
|
* Limited OS support (Debian preferred, Ubuntu 16.04 supported, early support for CentOS & RHEL)
|
||||||
|
* High availability (HA) support
|
||||||
|
* The ability to directly provision, or generate terraform manifests
|
||||||
|
|
||||||
|
You can also build your own cluster using {% glossary_tooltip term_id="kubeadm" %} as a building block. `kops` builds on the kubeadm work.
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
id: kubeadm
|
||||||
|
name: Kubeadm
|
||||||
|
full-link: /docs/admin/kubeadm/
|
||||||
|
tags:
|
||||||
|
- tool
|
||||||
|
- operation
|
||||||
|
short-description: >
|
||||||
|
A tool for quickly installing Kubernetes and setting up a secure cluster.
|
||||||
|
long-description: >
|
||||||
|
You can use kubeadm to install both the control plane and the worker node components.
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
id: kubectl
|
||||||
|
name: Kubectl
|
||||||
|
full-link: /docs/user-guide/kubectl-overview/
|
||||||
|
tags:
|
||||||
|
- tool
|
||||||
|
- fundamental
|
||||||
|
short-description: >
|
||||||
|
A command line tool for communicating with a {% glossary_tooltip text="Kubernetes API" term_id="kubernetes-api" %} server.
|
||||||
|
long-description: >
|
||||||
|
You can use kubectl to create, inspect, update, and delete Kubernetes objects.
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
id: kubernetes-api
|
||||||
|
name: Kubernetes API
|
||||||
|
full-link: /docs/concepts/overview/kubernetes-api/
|
||||||
|
tags:
|
||||||
|
- fundamental
|
||||||
|
- architecture
|
||||||
|
short-description: >
|
||||||
|
The application that serves Kubernetes functionality through a RESTful interface and stores the state of the cluster.
|
||||||
|
long-description: >
|
||||||
|
Kubernetes resources and "records of intent" are all stored as API objects, and modified via RESTful calls to the API.
|
||||||
|
The API allows configuration to be managed in a declarative way.
|
||||||
|
Users can interact with the Kubernetes API directly, or via tools like `kubectl`.
|
||||||
|
The core Kubernetes API is flexible and can also be extended to support custom resources.
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
id: maintainer
|
||||||
|
name: Maintainer
|
||||||
|
tags:
|
||||||
|
- community
|
||||||
|
short-description: >
|
||||||
|
A highly experienced {% glossary_tooltip text="contributor" term_id="contributor" %}, active in multiple areas of Kubernetes, who has cross-area ownership and write access to a project's GitHub repository.
|
||||||
|
long-description: >
|
||||||
|
Maintainers work holistically across the project to maintain its health and success and have made substantial contributions, both through code development and broader organizational efforts.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
id: managed-service
|
||||||
|
name: Managed Service
|
||||||
|
tags:
|
||||||
|
- extension
|
||||||
|
short-description: >
|
||||||
|
A software offering maintained by a third-party provider.
|
||||||
|
long-description: >
|
||||||
|
Some examples of Managed Services are AWS EC2, Azure SQL Database, and GCP Pub/Sub, but they can be any software offering that can be used by an application.
|
||||||
|
[Service Catalog](/docs/concepts/service-catalog/) provides a way to list, provision, and bind with Managed Services offered by {% glossary_tooltip text="Service Brokers" term_id="service-broker" %}.
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
id: member
|
||||||
|
name: Member
|
||||||
|
tags:
|
||||||
|
- community
|
||||||
|
short-description: >
|
||||||
|
A continuously active {% glossary_tooltip text="contributor" term_id="contributor" %} in the K8s community.
|
||||||
|
long-description: >
|
||||||
|
Members can have issues and PRs assigned to them and participate in {% glossary_tooltip text="special interest groups (SIGs)" term_id="sig" %} through GitHub teams.
|
||||||
|
Pre-submit tests are automatically run for members' PRs.
|
||||||
|
A member is expected to remain an active contributor to the community.
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
id: minikube
|
||||||
|
name: Minikube
|
||||||
|
full-link: /docs/getting-started-guides/minikube/
|
||||||
|
tags:
|
||||||
|
- fundamental
|
||||||
|
- tool
|
||||||
|
short-description: >
|
||||||
|
A tool for running Kubernetes locally.
|
||||||
|
long-description: >
|
||||||
|
Minikube runs a single-node cluster inside a VM on your computer.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
id: platform-developer
|
||||||
|
name: Platform Developer
|
||||||
|
aka:
|
||||||
|
- Kubernetes Developer
|
||||||
|
- Extension Developer
|
||||||
|
tags:
|
||||||
|
- user-type
|
||||||
|
short-description: >
|
||||||
|
A person who customizes the Kubernetes platform to fit the needs of their project.
|
||||||
|
long-description: >
|
||||||
|
A platform developer may, for example, use [Custom Resources](/docs/concepts/api-extension/custom-resources/) or [Extend the Kubernetes API with the aggregation layer](/docs/concepts/api-extension/apiserver-aggregation/) to add functionality to their instance of Kubernetes, specifically for their application. Some Platform Developers are also {% glossary_tooltip text="contributors" term_id="contributor" %} and develop extensions which are contributed to the Kubernetes community. Others develop closed-source commercial or site-specific extensions.
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
id: pod
|
||||||
|
name: Pod
|
||||||
|
full-link: /docs/concepts/workloads/pods/pod-overview/
|
||||||
|
related:
|
||||||
|
- container
|
||||||
|
- sidecar
|
||||||
|
- deployment
|
||||||
|
- statefulset
|
||||||
|
tags:
|
||||||
|
- core-object
|
||||||
|
- fundamental
|
||||||
|
short-description: >
|
||||||
|
The smallest and simplest Kubernetes object. A Pod represents a set of running {% glossary_tooltip text="containers" term_id="container" %} on your cluster.
|
||||||
|
long-description: >
|
||||||
|
A Pod is typically set up to run a single primary container.
|
||||||
|
It can also run optional sidecar containers that add supplementary features like logging.
|
||||||
|
Pods are commonly managed by a {% glossary_tooltip term_id="deployment" %}.
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
id: rbac
|
||||||
|
name: RBAC (Role-Based Access Control)
|
||||||
|
full-link: /docs/admin/authorization/rbac/
|
||||||
|
tags:
|
||||||
|
- security
|
||||||
|
- fundamental
|
||||||
|
short-description: >
|
||||||
|
Manages authorization decisions, allowing admins to dynamically configure access policies through the {% glossary_tooltip text="Kubernetes API" term_id="kubernetes-api" %}.
|
||||||
|
long-description: >
|
||||||
|
RBAC utilizes *roles*, which contain permission rules, and *role bindings*, which grant the permissions defined in a role to a set of users.
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
id: reviewer
|
||||||
|
name: Reviewer
|
||||||
|
tags:
|
||||||
|
- community
|
||||||
|
short-description: >
|
||||||
|
A person who reviews code for quality and correctness on some part of the project.
|
||||||
|
long-description: >
|
||||||
|
Reviewers are knowledgeable about both the codebase and software engineering principles. Reviewer status is scoped to a part of the codebase.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
id: service-broker
|
||||||
|
name: Service Broker
|
||||||
|
tags:
|
||||||
|
- extension
|
||||||
|
short-description: >
|
||||||
|
An endpoint for a set of {% glossary_tooltip text="Managed Services" term_id="managed-service" %} offered and maintained by a third-party.
|
||||||
|
long-description: >
|
||||||
|
{% glossary_tooltip text="Service Brokers" term_id="service-broker" %} implement the [Open Service Broker API spec](https://github.com/openservicebrokerapi/servicebroker/blob/v2.13/spec.md) and provide a standard interface for applications to use their Managed Services.
|
||||||
|
[Service Catalog](/docs/concepts/service-catalog/) provides a way to list, provision, and bind with Managed Services offered by Service Brokers.
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
id: service-catalog
|
||||||
|
name: Service Catalog
|
||||||
|
tags:
|
||||||
|
- extension
|
||||||
|
short-description: >
|
||||||
|
An extension API that enables applications running in Kubernetes clusters to easily use external managed software offerings, such as a datastore service offered by a cloud provider.
|
||||||
|
long-description: >
|
||||||
|
Service Catalog provides a way to list, provision, and bind with external {% glossary_tooltip text="Managed Services" term_id="managed-service" %} from {% glossary_tooltip text="Service Brokers" term_id="service-broker" %} without needing detailed knowledge about how those services are created or managed.
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
id: service
|
||||||
|
name: Service
|
||||||
|
full-link: /docs/concepts/services-networking/service/
|
||||||
|
tags:
|
||||||
|
- fundamental
|
||||||
|
- core-object
|
||||||
|
short-description: >
|
||||||
|
An API object that describes how to access applications, such as a set of {% glossary_tooltip text="Pods" term_id="pod" %}, and can describe ports and load-balancers.
|
||||||
|
long-description: >
|
||||||
|
The access point can be internal or external to the cluster.
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
id: sig
|
||||||
|
name: SIG (special interest group)
|
||||||
|
full-link: https://github.com/kubernetes/community/blob/master/sig-list.md#master-sig-list
|
||||||
|
tags:
|
||||||
|
- community
|
||||||
|
short-description: >
|
||||||
|
{% glossary_tooltip text="Community members" term_id="member" %} who collectively manage an ongoing piece or aspect of the larger Kubernetes open source project.
|
||||||
|
long-description: |
|
||||||
|
Members within a SIG have a shared interest in advancing a specific area, such as architecture, API machinery, or documentation.
|
||||||
|
SIGs must follow the [SIG Governance](https://github.com/kubernetes/community/blob/master/sig-governance.md) guidelines but can have their own contribution policy and channels of communication.
|
||||||
|
|
||||||
|
For more information, see the [kubernetes/community](https://github.com/kubernetes/community) repo and the current list of [SIGs and Working Groups](https://github.com/kubernetes/community/blob/master/sig-list.md).
|
||||||
@@ -1,18 +1,18 @@
|
|||||||
id: statefulset
|
id: statefulset
|
||||||
name: StatefulSet
|
name: StatefulSet
|
||||||
formerly:
|
full-link: /docs/concepts/workloads/controllers/statefulset/
|
||||||
|
aka:
|
||||||
- PetSet
|
- PetSet
|
||||||
related:
|
related:
|
||||||
- Deployment
|
- deployment
|
||||||
- Pod
|
- pod
|
||||||
tags:
|
tags:
|
||||||
- Storage
|
- core-object
|
||||||
- Workload
|
- workload
|
||||||
- API Object
|
- storage
|
||||||
short-description: |
|
short-description: >
|
||||||
Manage the deployment and scaling of a set of Pods, *and provide guarantees about ordering*. They do so by maintaining a *unique*, sticky identity for each of their Pods.
|
Manages the deployment and scaling of a set of {% glossary_tooltip text="Pods" term_id="pod" %}, *and provides guarantees about the ordering and uniqueness* of these Pods.
|
||||||
|
|
||||||
long-description: |
|
long-description: |
|
||||||
Like Deployments, StatefulSets manage Pods that are based on an identical container spec. However, although their specs are the same, the Pods in a StatefulSet are not interchangeable. Each Pod has a persistent identifier that it maintains across any rescheduling.
|
Like a {% glossary_tooltip term_id="deployment" %}, a StatefulSet manages Pods that are based on an identical container spec. Unlike a Deployment, a StatefulSet maintains a sticky identity for each of their Pods. These pods are created from the same spec, but are not interchangeable: each has a persistent identifier that it maintains across any rescheduling.
|
||||||
|
|
||||||
StatefulSets also operate according to the Controller pattern. You define your desired state in a StatefulSet *object*, and the StatefulSet *controller* makes any necessary updates to the get there from the current state.
|
A StatefulSet operates under the same pattern as any other Controller. You define your desired state in a StatefulSet *object*, and the StatefulSet *controller* makes any necessary updates to get there from the current state.
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
id: upstream
|
||||||
|
name: Upstream (disambiguation)
|
||||||
|
related:
|
||||||
|
- downstream
|
||||||
|
tags:
|
||||||
|
- community
|
||||||
|
short-description: >
|
||||||
|
May refer to: core Kubernetes or the source repo from which a repo was forked.
|
||||||
|
long-description: |
|
||||||
|
* In the **Kubernetes Community**: Conversations often use *upstream* to mean the core Kubernetes codebase, which the general ecosystem, other code, or third-party tools relies upon. For example, [community members](#term-member) may suggest that a feature is moved upstream so that it is in the core codebase instead of in a plugin or third-party tool.
|
||||||
|
* In **GitHub** or **git**: The convention is to refer to a source repo as *upstream*, whereas the forked repo is considered *downstream*.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
id: wg
|
||||||
|
name: WG (working group)
|
||||||
|
full-link: https://github.com/kubernetes/community/blob/master/sig-list.md#master-working-group-list
|
||||||
|
tags:
|
||||||
|
- community
|
||||||
|
short-description: >
|
||||||
|
Facilitates the discussion and/or implementation of a short-lived, narrow, or decoupled project for a committee, {% glossary_tooltip text="SIG" term_id="sig" %}, or cross-SIG effort.
|
||||||
|
long-description: |
|
||||||
|
Working groups are a way of organizing people to accomplish a discrete task, and are relatively easy to create and deprecate when inactive.
|
||||||
|
|
||||||
|
For more information, see the [kubernetes/community](https://github.com/kubernetes/community) repo and the current list of [SIGs and working groups](https://github.com/kubernetes/community/blob/master/sig-list.md).
|
||||||
+28
-41
@@ -2,6 +2,7 @@ bigheader: "Reference Documentation"
|
|||||||
abstract: "Design docs, concept definitions, and references for APIs and CLIs."
|
abstract: "Design docs, concept definitions, and references for APIs and CLIs."
|
||||||
toc:
|
toc:
|
||||||
- docs/reference/index.md
|
- docs/reference/index.md
|
||||||
|
- docs/reference/glossary.md
|
||||||
|
|
||||||
- title: Using the API
|
- title: Using the API
|
||||||
section:
|
section:
|
||||||
@@ -29,12 +30,6 @@ toc:
|
|||||||
section:
|
section:
|
||||||
- title: v1.8
|
- title: v1.8
|
||||||
path: /docs/api-reference/v1.8/
|
path: /docs/api-reference/v1.8/
|
||||||
- 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
|
- docs/reference/labels-annotations-taints.md
|
||||||
- title: OpenAPI and Swagger
|
- title: OpenAPI and Swagger
|
||||||
section:
|
section:
|
||||||
@@ -54,45 +49,39 @@ toc:
|
|||||||
|
|
||||||
- title: kubectl CLI
|
- title: kubectl CLI
|
||||||
section:
|
section:
|
||||||
- docs/user-guide/kubectl-overview.md
|
- docs/reference/kubectl/overview.md
|
||||||
- title: v1.8 Commands
|
- docs/reference/generated/kubectl/kubectl-options.md
|
||||||
path: /docs/user-guide/kubectl/v1.8/
|
- title: kubectl Commands
|
||||||
- title: v1.7 Commands
|
path: /docs/reference/generated/kubectl/kubectl-commands.html
|
||||||
path: /docs/user-guide/kubectl/v1.7/
|
- docs/reference/kubectl/docker-cli-to-kubectl.md
|
||||||
- title: v1.6 Commands
|
- docs/reference/kubectl/conventions.md
|
||||||
path: /docs/user-guide/kubectl/v1.6/
|
- docs/reference/kubectl/jsonpath.md
|
||||||
- title: v1.5 Commands
|
- docs/reference/kubectl/cheatsheet.md
|
||||||
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: Cloud Controller Manager
|
- title: Setup Tools Reference
|
||||||
section:
|
section:
|
||||||
- docs/admin/cloud-controller-manager.md
|
- docs/reference/generated/kubeadm.md
|
||||||
|
|
||||||
- title: Setup Tools
|
|
||||||
section:
|
|
||||||
- docs/admin/kubeadm.md
|
|
||||||
- title: Kubefed
|
- title: Kubefed
|
||||||
section:
|
section:
|
||||||
- docs/admin/kubefed.md
|
- docs/reference/generated/kubefed.md
|
||||||
- docs/admin/kubefed_options.md
|
- docs/reference/generated/kubefed_options.md
|
||||||
- docs/admin/kubefed_init.md
|
- docs/reference/generated/kubefed_init.md
|
||||||
- docs/admin/kubefed_join.md
|
- docs/reference/generated/kubefed_join.md
|
||||||
- docs/admin/kubefed_unjoin.md
|
- docs/reference/generated/kubefed_unjoin.md
|
||||||
- docs/admin/kubefed_version.md
|
- docs/reference/generated/kubefed_version.md
|
||||||
|
|
||||||
- title: Config Reference
|
- title: Command-line Tools Reference
|
||||||
section:
|
section:
|
||||||
- docs/admin/kubelet.md
|
- docs/reference/generated/kubelet.md
|
||||||
- docs/admin/kube-apiserver.md
|
- docs/admin/kubelet-authentication-authorization.md
|
||||||
- docs/admin/kube-controller-manager.md
|
- docs/reference/generated/kube-apiserver.md
|
||||||
- docs/admin/kube-proxy.md
|
- docs/reference/generated/kube-controller-manager.md
|
||||||
- docs/admin/kube-scheduler.md
|
- docs/reference/generated/kube-proxy.md
|
||||||
- docs/admin/federation-apiserver.md
|
- docs/reference/generated/kube-scheduler.md
|
||||||
- docs/admin/federation-controller-manager.md
|
- docs/admin/kubelet-tls-bootstrapping.md
|
||||||
|
- docs/reference/generated/cloud-controller-manager.md
|
||||||
|
- docs/reference/generated/federation-apiserver.md
|
||||||
|
- docs/reference/generated/federation-controller-manager.md
|
||||||
|
|
||||||
- title: Kubernetes Design Docs
|
- title: Kubernetes Design Docs
|
||||||
section:
|
section:
|
||||||
@@ -113,5 +102,3 @@ toc:
|
|||||||
- title: Kubernetes Issue Tracker on GitHub
|
- title: Kubernetes Issue Tracker on GitHub
|
||||||
path: https://github.com/kubernetes/kubernetes/issues/
|
path: https://github.com/kubernetes/kubernetes/issues/
|
||||||
- docs/reference/security.md
|
- docs/reference/security.md
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+6
-5
@@ -12,18 +12,19 @@ toc:
|
|||||||
section:
|
section:
|
||||||
- docs/setup/independent/install-kubeadm.md
|
- docs/setup/independent/install-kubeadm.md
|
||||||
- docs/setup/independent/create-cluster-kubeadm.md
|
- docs/setup/independent/create-cluster-kubeadm.md
|
||||||
|
- docs/setup/independent/troubleshooting-kubeadm.md
|
||||||
|
|
||||||
- docs/getting-started-guides/scratch.md
|
- docs/getting-started-guides/scratch.md
|
||||||
- docs/getting-started-guides/alternatives.md
|
- docs/getting-started-guides/alternatives.md
|
||||||
|
|
||||||
- title: Hosted Solutions
|
- title: Hosted Solutions
|
||||||
section:
|
section:
|
||||||
- title: Running Kubernetes on Google Container Engine
|
- title: Running Kubernetes on Google Kubernetes Engine
|
||||||
path: https://cloud.google.com/container-engine/docs/before-you-begin/
|
path: https://cloud.google.com/kubernetes-engine/docs/before-you-begin/
|
||||||
- title: Running Kubernetes on Azure Container Service
|
- title: Running Kubernetes on Azure Container Service
|
||||||
path: https://docs.microsoft.com/en-us/azure/container-service/container-service-kubernetes-walkthrough
|
path: https://docs.microsoft.com/en-us/azure/container-service/container-service-kubernetes-walkthrough
|
||||||
- title: Running Kubernetes on IBM Bluemix Container Service
|
- title: Running Kubernetes on IBM Cloud Container Service
|
||||||
path: https://console.ng.bluemix.net/docs/containers/container_index.html
|
path: https://console.bluemix.net/docs/containers/container_index.html
|
||||||
|
|
||||||
- title: Turn-key Cloud Solutions
|
- title: Turn-key Cloud Solutions
|
||||||
section:
|
section:
|
||||||
@@ -32,7 +33,7 @@ toc:
|
|||||||
- docs/getting-started-guides/azure.md
|
- docs/getting-started-guides/azure.md
|
||||||
- docs/getting-started-guides/alibaba-cloud.md
|
- docs/getting-started-guides/alibaba-cloud.md
|
||||||
- docs/getting-started-guides/clc.md
|
- docs/getting-started-guides/clc.md
|
||||||
- title: Running Kubernetes on IBM Bluemix
|
- title: Running Kubernetes on IBM Cloud
|
||||||
path: https://github.com/patrocinio/kubernetes-softlayer
|
path: https://github.com/patrocinio/kubernetes-softlayer
|
||||||
- docs/getting-started-guides/stackpoint.md
|
- docs/getting-started-guides/stackpoint.md
|
||||||
|
|
||||||
|
|||||||
+5
-1
@@ -96,10 +96,11 @@ toc:
|
|||||||
- docs/tasks/debug-application-cluster/debug-stateful-set.md
|
- docs/tasks/debug-application-cluster/debug-stateful-set.md
|
||||||
- docs/tasks/debug-application-cluster/debug-application-introspection.md
|
- docs/tasks/debug-application-cluster/debug-application-introspection.md
|
||||||
- docs/tasks/debug-application-cluster/audit.md
|
- docs/tasks/debug-application-cluster/audit.md
|
||||||
|
- docs/tasks/debug-application-cluster/local-debugging.md
|
||||||
- title: Use Explorer to Examine the Runtime Environment
|
- title: Use Explorer to Examine the Runtime Environment
|
||||||
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/explorer
|
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/explorer
|
||||||
|
|
||||||
- title: Access and Extend the Kubernetes API
|
- title: Extend Kubernetes
|
||||||
section:
|
section:
|
||||||
- docs/tasks/access-kubernetes-api/http-proxy-access-api.md
|
- 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-custom-resource-definitions.md
|
||||||
@@ -107,6 +108,8 @@ toc:
|
|||||||
- docs/tasks/access-kubernetes-api/migrate-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/configure-aggregation-layer.md
|
||||||
- docs/tasks/access-kubernetes-api/setup-extension-api-server.md
|
- docs/tasks/access-kubernetes-api/setup-extension-api-server.md
|
||||||
|
- docs/tasks/service-catalog/install-service-catalog-using-helm.md
|
||||||
|
- docs/tasks/service-catalog/install-service-catalog-using-sc.md
|
||||||
|
|
||||||
- title: TLS
|
- title: TLS
|
||||||
section:
|
section:
|
||||||
@@ -147,6 +150,7 @@ toc:
|
|||||||
- docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods.md
|
- docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods.md
|
||||||
- docs/tasks/administer-cluster/declare-network-policy.md
|
- docs/tasks/administer-cluster/declare-network-policy.md
|
||||||
- docs/tasks/administer-cluster/reconfigure-kubelet.md
|
- docs/tasks/administer-cluster/reconfigure-kubelet.md
|
||||||
|
- docs/tasks/administer-cluster/kubelet-config-file.md
|
||||||
- title: Install Network Policy Provider
|
- title: Install Network Policy Provider
|
||||||
section:
|
section:
|
||||||
- docs/tasks/administer-cluster/calico-network-policy.md
|
- docs/tasks/administer-cluster/calico-network-policy.md
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ toc:
|
|||||||
- title: Introduction to Kubernetes (edX)
|
- title: Introduction to Kubernetes (edX)
|
||||||
path: https://www.edx.org/course/introduction-kubernetes-linuxfoundationx-lfs158x#
|
path: https://www.edx.org/course/introduction-kubernetes-linuxfoundationx-lfs158x#
|
||||||
- docs/tutorials/stateless-application/hello-minikube.md
|
- docs/tutorials/stateless-application/hello-minikube.md
|
||||||
|
- docs/user-guide/walkthrough/index.md
|
||||||
|
- docs/user-guide/walkthrough/k8s201.md
|
||||||
- title: Configuration
|
- title: Configuration
|
||||||
section:
|
section:
|
||||||
- docs/tutorials/configuration/configure-redis-using-configmap.md
|
- docs/tutorials/configuration/configure-redis-using-configmap.md
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{% capture samplecode %}{% include_relative {{include.file}} %}{% endcapture %}
|
{% capture samplecode %}{% include_relative {{include.file}} %}{% endcapture %}
|
||||||
{% if include.k8slink %}{% capture ghlink %}https://raw.githubusercontent.com/kubernetes/kubernetes/blob/{{page.githubbranch}}{{include.k8slink}}{% endcapture %}{% endif %}
|
{% if include.k8slink %}{% capture ghlink %}https://raw.githubusercontent.com/kubernetes/kubernetes/blob/{{page.githubbranch}}{{include.k8slink}}{% endcapture %}{% endif %}
|
||||||
{% if include.ghlink %}{% capture ghlink %}https://raw.githubusercontent.com/kubernetes/kubernetes.github.io/{{page.docsbranch}}{{include.ghlink}}{% endcapture %}{% endif %}
|
{% if include.ghlink %}{% capture ghlink %}https://raw.githubusercontent.com/kubernetes/website/{{page.docsbranch}}{{include.ghlink}}{% endcapture %}{% endif %}
|
||||||
{% capture mysample %}
|
{% capture mysample %}
|
||||||
```{{include.language}}
|
```{{include.language}}
|
||||||
{{ samplecode | raw | strip }}
|
{{ samplecode | raw | strip }}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
You need to either have a dynamic PersistentVolume provisioner with a default
|
You need to either have a dynamic PersistentVolume provisioner with a default
|
||||||
[StorageClass](/docs/user-guide/persistent-volumes/#storageclasses),
|
[StorageClass](/docs/concepts/storage/storage-classes/),
|
||||||
or [statically provision PersistentVolumes](/docs/user-guide/persistent-volumes/#provisioning)
|
or [statically provision PersistentVolumes](/docs/user-guide/persistent-volumes/#provisioning)
|
||||||
yourself to satisfy the [PersistentVolumeClaims](/docs/user-guide/persistent-volumes/#persistentvolumeclaims)
|
yourself to satisfy the [PersistentVolumeClaims](/docs/user-guide/persistent-volumes/#persistentvolumeclaims)
|
||||||
used here.
|
used here.
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="miceType" class="center">
|
<div id="miceType" class="center">
|
||||||
© {{ '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>
|
© {{ 'now' | date: "%Y" }} The Kubernetes Authors | Documentation Distributed under <a href="https://git.k8s.io/website/LICENSE" class="light-text">CC BY 4.0</a>
|
||||||
</div>
|
</div>
|
||||||
<div id="miceType" class="center">
|
<div id="miceType" class="center">
|
||||||
Copyright © {{ 'now' | date: "%Y" }} The Linux Foundation®. 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>
|
Copyright © {{ 'now' | date: "%Y" }} The Linux Foundation®. 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>
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
<link rel="stylesheet" type="text/css" href="/css/jquery-ui.min.css">
|
<link rel="stylesheet" type="text/css" href="/css/jquery-ui.min.css">
|
||||||
<link rel="stylesheet" type="text/css" href="/css/sweetalert.css">
|
<link rel="stylesheet" type="text/css" href="/css/sweetalert.css">
|
||||||
<link rel="stylesheet" type="text/css" href="/css/callouts.css">
|
<link rel="stylesheet" type="text/css" href="/css/callouts.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/custom-jekyll/tags.css">
|
||||||
{% if page.deprecated %}<link rel="stylesheet" type="text/css" href="/css/deprecation-warning.css">{% endif %}
|
{% if page.deprecated %}<link rel="stylesheet" type="text/css" href="/css/deprecation-warning.css">{% endif %}
|
||||||
{% if page.class == "gridPage" %}<link rel="stylesheet" type="text/css" href="/css/gridpage.css">{% endif %}
|
{% if page.class == "gridPage" %}<link rel="stylesheet" type="text/css" href="/css/gridpage.css">{% endif %}
|
||||||
{% if page.css %}<link rel="stylesheet" type="text/css" href="{{ page.css }}"><!-- custom css added -->{% else %}<!-- no custom css detected -->{% endif %}
|
{% if page.css %}<link rel="stylesheet" type="text/css" href="{{ page.css }}"><!-- custom css added -->{% else %}<!-- no custom css detected -->{% endif %}
|
||||||
@@ -23,5 +24,6 @@
|
|||||||
<script src="/js/script.js"></script>
|
<script src="/js/script.js"></script>
|
||||||
<script src="/js/sweetalert.min.js"></script>
|
<script src="/js/sweetalert.min.js"></script>
|
||||||
<script src="/js/bootstrap.min.js"></script>
|
<script src="/js/bootstrap.min.js"></script>
|
||||||
|
<script src="/js/custom-jekyll/tags.js"></script>
|
||||||
{% seo %}
|
{% seo %}
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
+539
-123
@@ -1,25 +1,11 @@
|
|||||||
;(function () {
|
;(function () {
|
||||||
var partners = [
|
var partners = [
|
||||||
{
|
|
||||||
type: 2,
|
|
||||||
name: 'CoreOS',
|
|
||||||
logo: 'core_os',
|
|
||||||
link: 'https://tectonic.com/',
|
|
||||||
blurb: 'Tectonic is the enterprise-ready Kubernetes product, by CoreOS. It adds key features to allow you to manage, update, and control clusters in production.'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 2,
|
|
||||||
name: 'StackPointCloud',
|
|
||||||
logo: 'stackpoint',
|
|
||||||
link: 'https://stackpoint.io',
|
|
||||||
blurb: 'StackPointCloud builds Stackpoint.io, the universal control plane for Kubernetes Anywhere -- compose and build your own infrastructure as easily as a DigitalOcean droplet at any public cloud provider.'
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: 0,
|
type: 0,
|
||||||
name: 'Sysdig Cloud',
|
name: 'Sysdig',
|
||||||
logo: 'sys_dig',
|
logo: 'sys_dig',
|
||||||
link: 'https://sysdig.com/blog/monitoring-kubernetes-with-sysdig-cloud/',
|
link: 'https://sysdig.com/blog/monitoring-kubernetes-with-sysdig-cloud/',
|
||||||
blurb: 'Container native monitoring with deep support for Kubernetes.'
|
blurb: 'Sysdig is the container intelligence company. Sysdig has created the only unified platform to deliver monitoring, security, and troubleshooting in a microservices-friendly architecture.'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 0,
|
type: 0,
|
||||||
@@ -44,32 +30,11 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 0,
|
type: 0,
|
||||||
name: 'Weave Works',
|
name: 'Weaveworks',
|
||||||
logo: 'weave_works',
|
logo: 'weave_works',
|
||||||
link: ' https://weave.works/kubernetes',
|
link: ' https://weave.works/kubernetes',
|
||||||
blurb: 'Weaveworks enables Developers and Dev/Ops teams to easily connect, deploy, secure, manage, and troubleshoot microservices in Kubernetes.'
|
blurb: 'Weaveworks enables Developers and Dev/Ops teams to easily connect, deploy, secure, manage, and troubleshoot microservices in Kubernetes.'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
type: 0,
|
|
||||||
name: 'Wercker',
|
|
||||||
logo: 'wercker',
|
|
||||||
link: 'http://www.wercker.com/integrations/kubernetes',
|
|
||||||
blurb: 'Wercker automates your build, test and deploy pipelines for launching containers and triggering rolling updates on your Kubernetes cluster. '
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 0,
|
|
||||||
name: 'Rancher Labs',
|
|
||||||
logo: 'rancher-labs',
|
|
||||||
link: 'http://rancher.com/kubernetes/',
|
|
||||||
blurb: 'Rancher is an open-source, production-ready container management platform that makes it easy to deploy and manage Kubernetes.'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 0,
|
|
||||||
name: 'Red Hat',
|
|
||||||
logo: 'redhat',
|
|
||||||
link: 'https://www.openshift.com/',
|
|
||||||
blurb: 'Leverage an enterprise Kubernetes platform to orchestrate complex, multi-container apps.'
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: 0,
|
type: 0,
|
||||||
name: 'Intel',
|
name: 'Intel',
|
||||||
@@ -77,13 +42,6 @@
|
|||||||
link: 'https://tectonic.com/press/intel-coreos-collaborate-on-openstack-with-kubernetes.html',
|
link: 'https://tectonic.com/press/intel-coreos-collaborate-on-openstack-with-kubernetes.html',
|
||||||
blurb: 'Powering the GIFEE (Google’s Infrastructure for Everyone Else), to run OpenStack deployments on Kubernetes.'
|
blurb: 'Powering the GIFEE (Google’s Infrastructure for Everyone Else), to run OpenStack deployments on Kubernetes.'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
type: 0,
|
|
||||||
name: 'ElasticKube',
|
|
||||||
logo: 'elastickube',
|
|
||||||
link: 'https://www.ctl.io/elastickube-kubernetes/',
|
|
||||||
blurb: 'Self-service container management for Kubernetes.'
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: 0,
|
type: 0,
|
||||||
name: 'Platform9',
|
name: 'Platform9',
|
||||||
@@ -119,13 +77,6 @@
|
|||||||
link: 'http://blog.aquasec.com/security-best-practices-for-kubernetes-deployment',
|
link: 'http://blog.aquasec.com/security-best-practices-for-kubernetes-deployment',
|
||||||
blurb: 'Deep, automated security for your containers running on Kubernetes.'
|
blurb: 'Deep, automated security for your containers running on Kubernetes.'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
type: 2,
|
|
||||||
name: 'Canonical',
|
|
||||||
logo: 'canonical',
|
|
||||||
link: 'https://jujucharms.com/canonical-kubernetes/',
|
|
||||||
blurb: 'The Canonical Distribution of Kubernetes enables you to operate Kubernetes clusters on demand on any major public cloud and private infrastructure.'
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: 0,
|
type: 0,
|
||||||
name: 'Distelli',
|
name: 'Distelli',
|
||||||
@@ -154,13 +105,6 @@
|
|||||||
link: 'https://www.diamanti.com/products/',
|
link: 'https://www.diamanti.com/products/',
|
||||||
blurb: 'Diamanti deploys containers with guaranteed performance using Kubernetes in the first hyperconverged appliance purpose built for containerized applications.'
|
blurb: 'Diamanti deploys containers with guaranteed performance using Kubernetes in the first hyperconverged appliance purpose built for containerized applications.'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
type: 0,
|
|
||||||
name: 'Apprenda',
|
|
||||||
logo: 'apprenda',
|
|
||||||
link: 'https://apprenda.com/kubernetes-support/',
|
|
||||||
blurb: 'Apprenda creates and supports modern, enterprise-ready application platforms for both cloud native and traditional application workloads.'
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: 0,
|
type: 0,
|
||||||
name: 'Aporeto',
|
name: 'Aporeto',
|
||||||
@@ -176,11 +120,11 @@
|
|||||||
blurb: 'Giant Swarm provides fully-managed Kubernetes Clusters in your location of choice, so you can focus on your product.'
|
blurb: 'Giant Swarm provides fully-managed Kubernetes Clusters in your location of choice, so you can focus on your product.'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 2,
|
type: 3,
|
||||||
name: 'Mirantis',
|
name: 'Mirantis',
|
||||||
logo: 'mirantis',
|
logo: 'mirantis',
|
||||||
link: 'https://content.mirantis.com/Containerizing-OpenStack-on-Kubernetes-Video-Landing-Page.html',
|
link: 'https://www.mirantis.com/software/kubernetes/',
|
||||||
blurb: 'Mirantis builds and manages private clouds with open source software such as OpenStack, deployed as containers orchestrated by Kubernetes.'
|
blurb: 'Mirantis - Mirantis Cloud Platform'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 0,
|
type: 0,
|
||||||
@@ -189,18 +133,11 @@
|
|||||||
link: 'https://kubernetic.com/',
|
link: 'https://kubernetic.com/',
|
||||||
blurb: 'Kubernetic is a Kubernetes Desktop client that simplifies and democratizes cluster management for DevOps.'
|
blurb: 'Kubernetic is a Kubernetes Desktop client that simplifies and democratizes cluster management for DevOps.'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
type: 1,
|
|
||||||
name: 'Apprenda',
|
|
||||||
logo: 'apprenda',
|
|
||||||
link: 'https://apprenda.com/kubernetes-support/',
|
|
||||||
blurb: 'Apprenda offers flexible and wide range of support plans for pure play Kubernetes on your choice of infrastructure, cloud provider and operating system.'
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: 1,
|
type: 1,
|
||||||
name: 'Reactive Ops',
|
name: 'Reactive Ops',
|
||||||
logo: 'reactive_ops',
|
logo: 'reactive_ops',
|
||||||
link: 'https://www.reactiveops.com/kubernetes/',
|
link: 'https://www.reactiveops.com/the-kubernetes-experts/',
|
||||||
blurb: 'ReactiveOps has written automation on best practices for infrastructure as code on GCP & AWS using Kubernetes, helping you build and maintain a world-class infrastructure at a fraction of the price of an internal hire.'
|
blurb: 'ReactiveOps has written automation on best practices for infrastructure as code on GCP & AWS using Kubernetes, helping you build and maintain a world-class infrastructure at a fraction of the price of an internal hire.'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -238,13 +175,6 @@
|
|||||||
link: 'http://docs.projectcalico.org/latest/getting-started/kubernetes/',
|
link: 'http://docs.projectcalico.org/latest/getting-started/kubernetes/',
|
||||||
blurb: 'Tigera builds high performance, policy driven, cloud native networking solutions for Kubernetes.'
|
blurb: 'Tigera builds high performance, policy driven, cloud native networking solutions for Kubernetes.'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
type: 1,
|
|
||||||
name: 'Skippbox',
|
|
||||||
logo: 'skippbox',
|
|
||||||
link: 'http://www.skippbox.com/services/',
|
|
||||||
blurb: 'Skippbox brings its Kubernetes expertise to help companies embrace Kubernetes on their way to digital transformation. Skippbox offers both professional services and expert training.'
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: 1,
|
type: 1,
|
||||||
name: 'Harbur',
|
name: 'Harbur',
|
||||||
@@ -333,8 +263,8 @@
|
|||||||
type: 0,
|
type: 0,
|
||||||
name: 'CA Technologies',
|
name: 'CA Technologies',
|
||||||
logo: 'ca',
|
logo: 'ca',
|
||||||
link: 'https://www.ca.com/us/products/application-deployment.html',
|
link: 'https://docops.ca.com/ca-continuous-delivery-director/integrations/en/plug-ins/kubernetes-plug-in',
|
||||||
blurb: 'The RA CDE Kubernetes plugin enables an automated process for pushing changes to production by applying standard Kubernetes YAML files'
|
blurb: 'The CA Continuous Delivery Director Kubernetes plugin orchestrates deployment of containerized applications within an end-to-end release pipeline.'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 0,
|
type: 0,
|
||||||
@@ -359,7 +289,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 1,
|
type: 1,
|
||||||
name: 'codecrux web technologies pvt ltd',
|
name: 'Codecrux web technologies pvt ltd',
|
||||||
logo: 'codecrux',
|
logo: 'codecrux',
|
||||||
link: 'http://codecrux.com/kubernetes/',
|
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'
|
blurb: 'At CodeCrux we help your organization get the most out of Containers and Kubernetes, regardless of where you are in your journey'
|
||||||
@@ -373,10 +303,10 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 1,
|
type: 1,
|
||||||
name: 'StackOVerdrive.io',
|
name: 'StackOverdrive.io',
|
||||||
logo: 'stackoverdrive',
|
logo: 'stackoverdrive',
|
||||||
link: 'http://www.stackoverdrive.net/kubernetes-consulting/',
|
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.'
|
blurb: 'StackOverdrive helps organizations of all sizes leverage Kubernetes for container based orchestration and management.'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 0,
|
type: 0,
|
||||||
@@ -450,10 +380,10 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 1,
|
type: 1,
|
||||||
name: 'EASYNUBE LTD',
|
name: 'EASYNUBE',
|
||||||
logo: 'easynube',
|
logo: 'easynube',
|
||||||
link: 'https://www.carrefour.es/supermercado/?ic_source=portal-home&ic_medium=menu-links&ic_content=section-home',
|
link: 'http://easynube.co.uk/devopsnube/',
|
||||||
blurb: 'Provide consultancy, architecture and implementation'
|
blurb: 'EasyNube provide architecture, implementation, and manage scalable applications using Kubernetes and Openshift.'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 1,
|
type: 1,
|
||||||
@@ -462,33 +392,19 @@
|
|||||||
link: 'http://www.opcito.com/kubernetes/',
|
link: 'http://www.opcito.com/kubernetes/',
|
||||||
blurb: 'Opcito is a software consultancy that uses Kubernetes to help organisations build, architect & deploy highly scalable applications.'
|
blurb: 'Opcito is a software consultancy that uses Kubernetes to help organisations build, architect & deploy highly scalable applications.'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
type: 2,
|
|
||||||
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,
|
type: 0,
|
||||||
name: '{code} by Dell EMC',
|
name: 'code by Dell EMC',
|
||||||
logo: 'codedellemc',
|
logo: 'codedellemc',
|
||||||
link: 'https://blog.codedellemc.com',
|
link: 'https://blog.codedellemc.com',
|
||||||
blurb: 'Respected as a thought leader in storage persistence for containerized applications. Contributed significant work to K8 and Ecosystem'
|
blurb: 'Respected as a thought leader in storage persistence for containerized applications. Contributed significant work to K8 and Ecosystem'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
type: 0,
|
|
||||||
name: 'SUSE Llc.',
|
|
||||||
logo: 'suse',
|
|
||||||
link: 'https://www.suse.com/products/caas-platform/',
|
|
||||||
blurb: 'SUSE delivers Kubernetes as part of SUSE CaaS Platform and SUSE OpenStack Cloud, for enterprises that want truly open, open source solutions for cloud-native applications.'
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: 0,
|
type: 0,
|
||||||
name: 'Instana',
|
name: 'Instana',
|
||||||
logo: 'instana',
|
logo: 'instana',
|
||||||
link: 'https://www.instana.com/supported-technologies/',
|
link: 'https://www.instana.com/supported-technologies/',
|
||||||
blurb: 'Instana monitors the infrastructure, containers and services deployed on a Kubernetes cluster.'
|
blurb: 'Instana monitors performance of the applications, infrastructure, containers and services deployed on a Kubernetes cluster.'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 0,
|
type: 0,
|
||||||
@@ -500,17 +416,10 @@
|
|||||||
{
|
{
|
||||||
type: 2,
|
type: 2,
|
||||||
name: 'Treasure Data',
|
name: 'Treasure Data',
|
||||||
logo: 'treasure-data',
|
logo: 'treasuredata',
|
||||||
link: 'https://fluentd.treasuredata.com/kubernetes-logging/',
|
link: 'https://fluentd.treasuredata.com/kubernetes-logging/',
|
||||||
blurb: 'Fluentd Enterprise brings smart, secure logging to Kubernetes, and brings integrations with backends such as Splunk, Kafka, or AWS S3.'
|
blurb: 'Fluentd Enterprise brings smart, secure logging to Kubernetes, and brings integrations with backends such as Splunk, Kafka, or AWS S3.'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
type: 2,
|
|
||||||
name: 'IBM',
|
|
||||||
logo: 'IBM',
|
|
||||||
link: 'https://www.ibm.com/cloud-computing/bluemix/containers',
|
|
||||||
blurb: 'IBM Container Service is a managed k8s environment with built-in cluster security and isolation while leveraging services including Watson, IoT, Weather, etc.'
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: 1,
|
type: 1,
|
||||||
name: 'Kenzan',
|
name: 'Kenzan',
|
||||||
@@ -523,7 +432,7 @@
|
|||||||
name: 'Kublr',
|
name: 'Kublr',
|
||||||
logo: 'kublr',
|
logo: 'kublr',
|
||||||
link: 'http://kublr.com',
|
link: 'http://kublr.com',
|
||||||
blurb: 'Simplify your Kubernetes experience with a fully production-ready, enterprise-grade cluster management platform.'
|
blurb: 'Simplify and speed up the management of your containerized applications at scale.'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 0,
|
type: 0,
|
||||||
@@ -581,13 +490,6 @@
|
|||||||
link: 'https://www.contino.io/',
|
link: 'https://www.contino.io/',
|
||||||
blurb: 'We help enterprise organizations adopt DevOps, containers and cloud computing. Contino is a global consultancy that enables regulated organizations to accelerate innovation through the adoption of modern approaches to software delivery.'
|
blurb: 'We help enterprise organizations adopt DevOps, containers and cloud computing. Contino is a global consultancy that enables regulated organizations to accelerate innovation through the adoption of modern approaches to software delivery.'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
type: 2,
|
|
||||||
name: 'Heptio',
|
|
||||||
logo: 'heptio',
|
|
||||||
link: 'http://heptio.com',
|
|
||||||
blurb: 'Heptio helps businesses of all sizes get closer to the vibrant Kubernetes community.'
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: 2,
|
type: 2,
|
||||||
name: 'Booz Allen Hamilton',
|
name: 'Booz Allen Hamilton',
|
||||||
@@ -595,16 +497,528 @@
|
|||||||
link: 'https://www.boozallen.com/',
|
link: 'https://www.boozallen.com/',
|
||||||
blurb: 'Booz Allen partners with public and private sector clients to solve their most difficult challenges through a combination of consulting, analytics, mission operations, technology, systems delivery, cybersecurity, engineering, and innovation expertise.'
|
blurb: 'Booz Allen partners with public and private sector clients to solve their most difficult challenges through a combination of consulting, analytics, mission operations, technology, systems delivery, cybersecurity, engineering, and innovation expertise.'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'BigBinary',
|
||||||
|
logo: 'bigbinary',
|
||||||
|
link: 'http://blog.bigbinary.com/categories/Kubernetes',
|
||||||
|
blurb: 'Provider of Digital Solutions for federal and commercial clients, to include DevSecOps, cloud platforms, transformation strategy, cognitive solutions, and UX.'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
type: 0,
|
type: 0,
|
||||||
name: 'Applatix',
|
name: 'CloudPerceptions',
|
||||||
logo: 'applatix',
|
logo: 'cloudperceptions',
|
||||||
link: 'https://applatix.com/applatix-product/',
|
link: 'https://www.meetup.com/Triangle-Kubernetes-Meetup/files/',
|
||||||
blurb: 'Applatix helps build and run containerized apps on public cloud using Docker and Kubernetes.'
|
blurb: 'Container security solution for small-to-medium size enterprises who plan to run Kubernetes on shared infrastructure.'
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Creationline, Inc.',
|
||||||
|
logo: 'creationline',
|
||||||
|
link: 'https://www.creationline.com/ci',
|
||||||
|
blurb: 'Total solution for container based IT resource management.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'DataCore Software',
|
||||||
|
logo: 'datacore',
|
||||||
|
link: 'https://www.datacore.com/solutions/virtualization/containerization',
|
||||||
|
blurb: 'DataCore provides highly-available, high-performance universal block storage for Kubernetes, radically improving the speed of deployment.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Elastifile',
|
||||||
|
logo: 'elastifile',
|
||||||
|
link: 'https://www.elastifile.com/stateful-containers',
|
||||||
|
blurb: 'Elastifile’s cross-cloud data fabric delivers elastically scalable, high performance, software-defined persistent storage for Kubernetes.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'GitLab',
|
||||||
|
logo: 'gitlab',
|
||||||
|
link: 'https://about.gitlab.com/2016/11/14/idea-to-production/',
|
||||||
|
blurb: 'With GitLab and Kubernetes, you can deploy a complete CI/CD pipeline with multiple environments, automatic deployments, and automatic monitoring.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Gravitational, Inc.',
|
||||||
|
logo: 'gravitational',
|
||||||
|
link: 'https://gravitational.com/telekube/',
|
||||||
|
blurb: 'Telekube combines Kubernetes with Teleport, our modern SSH server, so operators can remotely manage a multitude of K8s application deployments.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Hitachi Data Systems',
|
||||||
|
logo: 'hitachi',
|
||||||
|
link: 'https://www.hds.com/en-us/products-solutions/application-solutions/unified-compute-platform-with-kubernetes-orchestration.html',
|
||||||
|
blurb: 'Build the Applications You Need to Drive Your Business - DEVELOP AND DEPLOY APPLICATIONS FASTER AND MORE RELIABLY.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Infosys Technologies',
|
||||||
|
logo: 'infosys',
|
||||||
|
link: 'https://www.infosys.com',
|
||||||
|
blurb: 'Monolithic to microservices on openshift is a offering that we are building as part of open source practice.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'JFrog',
|
||||||
|
logo: 'jfrog',
|
||||||
|
link: 'https://www.jfrog.com/use-cases/12584/',
|
||||||
|
blurb: 'You can use Artifactory to store and manage all of your application’s container images and deploy to Kubernetes and setup a build, test, deploy pipeline using Jenkins and Artifactory. Once an image is ready to be rolled out, Artifactory can trigger a rolling-update deployment into a Kubernetes cluster without downtime – automatically!'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Navops by Univa',
|
||||||
|
logo: 'navops',
|
||||||
|
link: 'https://www.navops.io',
|
||||||
|
blurb: 'Navops is a suite of products that enables enterprises to take full advantage of Kubernetes and provides the ability to quickly and efficiently run containers at scale.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'NeuVector',
|
||||||
|
logo: 'neuvector',
|
||||||
|
link: 'http://neuvector.com/solutions-for-kubernetes-security/',
|
||||||
|
blurb: 'NeuVector delivers an application and network intelligent container network security solution integrated with and optimized for Kubernetes.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'OpsZero',
|
||||||
|
logo: 'opszero',
|
||||||
|
link: 'https://www.opszero.com/kubernetes.html',
|
||||||
|
blurb: 'opsZero provides DevOps for Startups. We build and service your Kubernetes and Cloud Infrastructure to accelerate your release cycle.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Shiwaforce.com Ltd.',
|
||||||
|
logo: 'shiwaforce',
|
||||||
|
link: 'https://www.shiwaforce.com/en/',
|
||||||
|
blurb: 'Shiwaforce.com is the Agile Partner in Digital Transformation. Our solutions follow business changes quickly, easily and cost-effectively.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'SoftServe',
|
||||||
|
logo: 'softserve',
|
||||||
|
link: 'https://www.softserveinc.com/en-us/blogs/kubernetes-travis-ci/',
|
||||||
|
blurb: 'SoftServe allows its clients to adopt modern application design patterns and benefit from fully integrated, highly available, cost effective Kubernetes clusters at any scale.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Solinea',
|
||||||
|
logo: 'solinea',
|
||||||
|
link: 'https://www.solinea.com/cloud-consulting-services/container-microservices-offerings',
|
||||||
|
blurb: 'Solinea is a digital transformation consultancy that enables businesses to build innovative solutions by adopting cloud native computing.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Sphere Software, LLC',
|
||||||
|
logo: 'spheresoftware',
|
||||||
|
link: 'https://sphereinc.com/kubernetes/',
|
||||||
|
blurb: 'The Sphere Software team of experts allows customers to architect and implement scalable applications using Kubernetes in Google Cloud, AWS, and Azure.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Altoros',
|
||||||
|
logo: 'altoros',
|
||||||
|
link: 'https://www.altoros.com/container-orchestration-tools-enablement.html',
|
||||||
|
blurb: 'Deployment and configuration of Kubernetes, Optimization of existing solutions, training for developers on using Kubernetes, support.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Cloudbase Solutions',
|
||||||
|
logo: 'cloudbase',
|
||||||
|
link: 'https://cloudbase.it/kubernetes',
|
||||||
|
blurb: 'Cloudbase Solutions provides Kubernetes cross-cloud interoperability for Windows and Linux deployments based on open source technologies.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Codefresh',
|
||||||
|
logo: 'codefresh',
|
||||||
|
link: 'https://codefresh.io/kubernetes-deploy/',
|
||||||
|
blurb: 'Codefresh is a complete tool chain for delivering containers to Kubernetes.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'NetApp',
|
||||||
|
logo: 'netapp',
|
||||||
|
link: 'http://netapp.io/2016/12/23/introducing-trident-dynamic-persistent-volume-provisioner-kubernetes/',
|
||||||
|
blurb: 'Dynamic provisioning and persistent storage support.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'OpenEBS',
|
||||||
|
logo: 'OpenEBS',
|
||||||
|
link: 'https://openebs.io/',
|
||||||
|
blurb: 'OpenEBS is containerized storage for containers integrated tightly into Kubernetes and based on distributed block storage and containerization of storage control. OpenEBS derives intent from K8s and other YAML or JSON such as per container QoS SLAs, tiering and replica policies, and more. OpenEBS is EBS API compliant.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Google Kubernetes Engine',
|
||||||
|
logo: 'gcp',
|
||||||
|
link: 'https://cloud.google.com/kubernetes-engine/',
|
||||||
|
blurb: 'Google - Google Kubernetes Engine'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Apprenda',
|
||||||
|
logo: 'apprenda',
|
||||||
|
link: 'https://apprenda.com/kismatic/',
|
||||||
|
blurb: 'Apprenda - Kismatic Enterprise Toolkit (KET)'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Red Hat',
|
||||||
|
logo: 'redhat',
|
||||||
|
link: 'https://www.openshift.com',
|
||||||
|
blurb: 'Red Hat - OpenShift Online and OpenShift Container Platform'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Rancher',
|
||||||
|
logo: 'rancher',
|
||||||
|
link: 'http://rancher.com/kubernetes/',
|
||||||
|
blurb: 'Rancher Inc. - Rancher Kubernetes'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Canonical',
|
||||||
|
logo: 'canonical',
|
||||||
|
link: 'https://www.ubuntu.com/kubernetes',
|
||||||
|
blurb: 'Canonical Ltd. - Canonical Distribution of Kubernetes'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Cisco',
|
||||||
|
logo: 'cisco',
|
||||||
|
link: 'https://www.cisco.com',
|
||||||
|
blurb: 'Cisco Systems - Cisco Container Platform'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Cloud Foundry',
|
||||||
|
logo: 'cff',
|
||||||
|
link: 'https://www.cloudfoundry.org/container-runtime/',
|
||||||
|
blurb: 'Cloud Foundry - Cloud Foundry Container Runtime'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'IBM',
|
||||||
|
logo: 'ibm',
|
||||||
|
link: 'https://www.ibm.com/cloud/container-service',
|
||||||
|
blurb: 'IBM - IBM Cloud Container Service'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Samsung',
|
||||||
|
logo: 'samsung_sds',
|
||||||
|
link: 'https://github.com/samsung-cnct/kraken',
|
||||||
|
blurb: 'Samsung SDS - Kraken'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'IBM',
|
||||||
|
logo: 'ibm',
|
||||||
|
link: 'https://www.ibm.com/cloud-computing/products/ibm-cloud-private/',
|
||||||
|
blurb: 'IBM - IBM Cloud Private'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Heptio',
|
||||||
|
logo: 'heptio',
|
||||||
|
link: 'https://aws.amazon.com/quickstart/architecture/heptio-kubernetes',
|
||||||
|
blurb: 'Heptio - AWS-Quickstart'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'StackPointCloud',
|
||||||
|
logo: 'stackpoint',
|
||||||
|
link: 'https://stackpoint.io',
|
||||||
|
blurb: 'StackPointCloud - StackPointCloud'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Caicloud',
|
||||||
|
logo: 'caicloud',
|
||||||
|
link: 'https://caicloud.io/products/compass',
|
||||||
|
blurb: 'Caicloud - Compass'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 2,
|
||||||
|
name: 'Caicloud',
|
||||||
|
logo: 'caicloud',
|
||||||
|
link: 'https://caicloud.io/',
|
||||||
|
blurb: 'Founded by ex-Googlers,and early Kubernetes contributors, Caicloud leverages Kubernetes to provide container products which have successfully served Fortune 500 enterprises, and further utilizes Kubernetes as a vehicle to deliver ultra-speed deep learning experience.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Alibaba',
|
||||||
|
logo: 'alibaba',
|
||||||
|
link: 'https://www.aliyun.com/product/containerservice?spm=5176.8142029.388261.219.3836dbccRpJ5e9',
|
||||||
|
blurb: 'Alibaba Cloud - Alibaba Cloud Container Service'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Tencent',
|
||||||
|
logo: 'tencent',
|
||||||
|
link: 'https://cloud.tencent.com/product/ccs?lang=en',
|
||||||
|
blurb: 'Tencent Cloud - Tencent Cloud Container Service'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Huawei',
|
||||||
|
logo: 'huawei',
|
||||||
|
link: 'http://www.huaweicloud.com/product/cce.html',
|
||||||
|
blurb: 'Huawei - Huawei Cloud Container Engine'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Google',
|
||||||
|
logo: 'gcp',
|
||||||
|
link: 'https://github.com/kubernetes/kubernetes/tree/master/cluster',
|
||||||
|
blurb: 'Google - kube-up.sh on Google Compute Engine'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Poseidon',
|
||||||
|
logo: 'poseidon',
|
||||||
|
link: 'https://typhoon.psdn.io/',
|
||||||
|
blurb: 'Poseidon - Typhoon'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Netease',
|
||||||
|
logo: 'netease',
|
||||||
|
link: 'https://www.163yun.com/product/container-service-dedicated',
|
||||||
|
blurb: 'Netease - Netease Container Service Dedicated'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Loodse',
|
||||||
|
logo: 'loodse',
|
||||||
|
link: 'https://loodse.com',
|
||||||
|
blurb: 'Loodse - Kubermatic Container Engine'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Microsoft',
|
||||||
|
logo: 'microsoft',
|
||||||
|
link: 'https://github.com/Azure/acs-engine',
|
||||||
|
blurb: 'Microsoft - Azure acs-engine'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Microsoft',
|
||||||
|
logo: 'microsoft',
|
||||||
|
link: 'https://docs.microsoft.com/en-us/azure/aks/',
|
||||||
|
blurb: 'Microsoft - Azure Container Service AKS'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Oracle',
|
||||||
|
logo: 'oracle',
|
||||||
|
link: 'http://www.wercker.com/product',
|
||||||
|
blurb: 'Oracle - Oracle Container Engine'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Oracle',
|
||||||
|
logo: 'oracle',
|
||||||
|
link: 'https://github.com/oracle/terraform-kubernetes-installer',
|
||||||
|
blurb: 'Oracle - Oracle Terraform Kubernetes Installer'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Mesosphere',
|
||||||
|
logo: 'mesosphere',
|
||||||
|
link: 'https://mesosphere.com/kubernetes/',
|
||||||
|
blurb: 'Mesosphere - Kubernetes on DC/OS'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Appscode',
|
||||||
|
logo: 'appscode',
|
||||||
|
link: 'https://appscode.com/products/cloud-deployment/',
|
||||||
|
blurb: 'Appscode - Pharmer'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'SAP',
|
||||||
|
logo: 'sap',
|
||||||
|
link: 'https://cloudplatform.sap.com/index.html',
|
||||||
|
blurb: 'SAP - Cloud Platform - Gardener (not yet released)'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Oracle',
|
||||||
|
logo: 'oracle',
|
||||||
|
link: 'https://www.oracle.com/linux/index.html',
|
||||||
|
blurb: 'Oracle - Oracle Linux Container Services for use with Kubernetes'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'CoreOS',
|
||||||
|
logo: 'coreos',
|
||||||
|
link: 'https://github.com/kubernetes-incubator/bootkube',
|
||||||
|
blurb: 'CoreOS - bootkube'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Weaveworks',
|
||||||
|
logo: 'weave_works',
|
||||||
|
link: 'https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/',
|
||||||
|
blurb: 'Weaveworks - kubeadm'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Wise2c',
|
||||||
|
logo: 'wise2c',
|
||||||
|
link: 'http://www.wise2c.com/solution',
|
||||||
|
blurb: 'Wise2C Technology - WiseCloud'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Docker',
|
||||||
|
logo: 'docker',
|
||||||
|
link: 'https://www.docker.com/enterprise-edition',
|
||||||
|
blurb: 'Docker - Docker Enterprise Edition'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Daocloud',
|
||||||
|
logo: 'daocloud',
|
||||||
|
link: 'http://www.daocloud.io/dce',
|
||||||
|
blurb: 'DaoCloud - DaoCloud Enterprise'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'SUSE',
|
||||||
|
logo: 'suse',
|
||||||
|
link: 'https://www.suse.com/products/caas-platform/',
|
||||||
|
blurb: 'SUSE - SUSE CaaS (Container as a Service) Platform'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'Pivotal',
|
||||||
|
logo: 'pivotal',
|
||||||
|
link: 'https://cloud.vmware.com/pivotal-container-service',
|
||||||
|
blurb: 'Pivotal/VMware - Pivotal Container Service (PKS)'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'VMware',
|
||||||
|
logo: 'vmware',
|
||||||
|
link: 'https://cloud.vmware.com/pivotal-container-service',
|
||||||
|
blurb: 'Pivotal/VMware - Pivotal Container Service (PKS)'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 3,
|
||||||
|
name: 'CoreOS',
|
||||||
|
logo: 'coreos',
|
||||||
|
link: 'https://coreos.com/tectonic/',
|
||||||
|
blurb: 'CoreOS - Tectonic'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'GoPaddle',
|
||||||
|
logo: 'gopaddle',
|
||||||
|
link: 'https://gopaddle.io',
|
||||||
|
blurb: 'goPaddle is a DevOps platform for Kubernetes developers. It simplifies the Kubernetes Service creation and maintenance through source to image conversion, build & version management, team management, access controls and audit logs, single click provision of Kubernetes Clusters across multiple clouds from a single console.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Vexxhost',
|
||||||
|
logo: 'vexxhost',
|
||||||
|
link: 'https://vexxhost.com/public-cloud/container-services/kubernetes/',
|
||||||
|
blurb: 'VEXXHOST offers a high-performance container management service powered by Kubernetes and OpenStack Magnum.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Component Soft',
|
||||||
|
logo: 'componentsoft',
|
||||||
|
link: 'https://www.componentsoft.eu/?p=3925',
|
||||||
|
blurb: 'Component Soft offers training, consultation and support around open cloud technologies like Kubernetes, Docker, Openstack and Ceph.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Datera',
|
||||||
|
logo: 'datera',
|
||||||
|
link: 'http://www.datera.io/kubernetes/',
|
||||||
|
blurb: 'Datera delivers high performance, self-managing elastic block storage with self-service provisioning for deploying Kubernetes at scale.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Containership',
|
||||||
|
logo: 'containership',
|
||||||
|
link: 'https://containership.io/',
|
||||||
|
blurb: 'Containership is a cloud agnostic managed kubernetes offering that supports automatic provisioning on over 14 cloud providers.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Pure Storage',
|
||||||
|
logo: 'pure_storage',
|
||||||
|
link: 'https://hub.docker.com/r/purestorage/k8s/',
|
||||||
|
blurb: 'Our flexvol driver and dynamic provisioner allow FlashArray/Flashblade storage devices to be consumed as first class persistent storage from within Kuberentes.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Elastisys',
|
||||||
|
logo: 'elastisys',
|
||||||
|
link: 'https://elastisys.com/kubernetes/',
|
||||||
|
blurb: 'Predictive autoscaling - detects recurring workload variations, irregular traffic spikes, and everything in between. Runs K8s in any public or private cloud.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Portworx',
|
||||||
|
logo: 'portworx',
|
||||||
|
link: 'https://docs.portworx.com/scheduler/kubernetes/install.html',
|
||||||
|
blurb: 'With Portworx, you can manage any database or stateful service on any infrastructure using Kubernetes. You get a single data management layer for all of your stateful services, no matter where they run.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Object Computing, Inc.',
|
||||||
|
logo: 'objectcomputing',
|
||||||
|
link: 'https://objectcomputing.com/services/software-engineering/devops/kubernetes-services',
|
||||||
|
blurb: 'Our portfolio of DevOps consulting services includes Kubernetes support, development, and training.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Isotoma',
|
||||||
|
logo: 'isotoma',
|
||||||
|
link: 'https://www.isotoma.com/blog/2017/10/24/containerisation-tips-for-using-kubernetes-with-aws/',
|
||||||
|
blurb: 'Based in the North of England, Amazon partners who are delivering Kubernetes solutions on AWS for replatforming and native development.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Servian',
|
||||||
|
logo: 'servian',
|
||||||
|
link: 'https://www.servian.com/cloud-and-technology/',
|
||||||
|
blurb: 'Based in Australia, Servian provides advisory, consulting and managed services to support both application and data centric kubernetes use cases.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 1,
|
||||||
|
name: 'Redzara',
|
||||||
|
logo: 'redzara',
|
||||||
|
link: 'http://redzara.com/cloud-service',
|
||||||
|
blurb: 'Redzara has wide and in-depth experience in Cloud automation, now taking one giant step by providing container service offering and services to our customers.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Dataspine',
|
||||||
|
logo: 'dataspine',
|
||||||
|
link: 'http://dataspine.xyz/',
|
||||||
|
blurb: 'Dataspine is building a secure, elastic and serverless deployment platform for production ML/AI workloads on top of k8s.'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 0,
|
||||||
|
name: 'Logdna',
|
||||||
|
logo: 'logdna',
|
||||||
|
link: 'https://logdna.com/kubernetes',
|
||||||
|
blurb: 'Pinpoint production issues instantly with LogDNA, the best logging platform you will ever use. Get started with only 2 kubectl commands.'
|
||||||
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
var kcspContainer = document.getElementById('kcspContainer')
|
var kcspContainer = document.getElementById('kcspContainer')
|
||||||
|
var distContainer = document.getElementById('distContainer')
|
||||||
var isvContainer = document.getElementById('isvContainer')
|
var isvContainer = document.getElementById('isvContainer')
|
||||||
var servContainer = document.getElementById('servContainer')
|
var servContainer = document.getElementById('servContainer')
|
||||||
|
|
||||||
@@ -644,7 +1058,9 @@
|
|||||||
container = servContainer;
|
container = servContainer;
|
||||||
} else if (obj.type === 2) {
|
} else if (obj.type === 2) {
|
||||||
container = kcspContainer;
|
container = kcspContainer;
|
||||||
}
|
} else if (obj.type === 3) {
|
||||||
|
container = distContainer;
|
||||||
|
}
|
||||||
|
|
||||||
container.appendChild(box)
|
container.appendChild(box)
|
||||||
})
|
})
|
||||||
|
|||||||
+48
-12
@@ -5,6 +5,12 @@
|
|||||||
margin-bottom: 2em;
|
margin-bottom: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.kcsp_section {
|
||||||
|
clear: both;
|
||||||
|
padding: 0px;
|
||||||
|
margin-bottom: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
/* COLUMN SETUP */
|
/* COLUMN SETUP */
|
||||||
.col {
|
.col {
|
||||||
display: block;
|
display: block;
|
||||||
@@ -28,28 +34,54 @@
|
|||||||
zoom:1; /* For IE 6/7 */
|
zoom:1; /* For IE 6/7 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* GRID OF THREE */
|
/* GRID OF FOUR */
|
||||||
.span_3_of_3 {
|
.span_4_of_4 {
|
||||||
width: 32.2%;
|
width: 23%;
|
||||||
background-color: #f9f9f9;
|
background-color: #f9f9f9;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
}
|
}
|
||||||
.span_2_of_3 {
|
.span_3_of_4 {
|
||||||
width: 32.2%;
|
width: 23%;
|
||||||
background-color: #f9f9f9;
|
background-color: #f9f9f9;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
}
|
}
|
||||||
.span_1_of_3 {
|
.span_2_of_4 {
|
||||||
width: 32.2%;
|
width: 23%;
|
||||||
background-color: #f9f9f9;
|
background-color: #f9f9f9;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
}
|
}
|
||||||
|
.span_1_of_4 {
|
||||||
|
width: 23%;
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.col-container {
|
||||||
|
display: table; /* Make the container element behave like a table */
|
||||||
|
width: 100%; /* Set full-width to expand the whole page */
|
||||||
|
padding-bottom: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.col-nav {
|
||||||
|
display: table-cell; /* Make elements inside the container behave like table cells */
|
||||||
|
width: 25%;
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
padding: 20px;
|
||||||
|
border: 5px solid white;
|
||||||
|
}
|
||||||
|
|
||||||
/* GO FULL WIDTH AT LESS THAN 480 PIXELS */
|
/* GO FULL WIDTH AT LESS THAN 480 PIXELS */
|
||||||
|
|
||||||
@media only screen and (max-width: 480px) {
|
@media only screen and (max-width: 480px) {
|
||||||
.col { margin: 1% 0 1% 0%;}
|
.col { margin: 1% 0 1% 0%;}
|
||||||
.span_3_of_3, .span_2_of_3, .span_1_of_3 { width: 100%; }
|
.span_4_of_4, .span_3_of_4, .span_2_of_4, .span_1_of_4 { width: 100%; }
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 650px) {
|
||||||
|
.col-nav {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.button{
|
.button{
|
||||||
@@ -69,7 +101,7 @@ h5 {
|
|||||||
background-color: #f9f9f9;
|
background-color: #f9f9f9;
|
||||||
}
|
}
|
||||||
|
|
||||||
#kcspContainer, #isvContainer, #servContainer {
|
#distContainer, #kcspContainer, #isvContainer, #servContainer {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -85,6 +117,10 @@ h5 {
|
|||||||
margin-bottom: 80px;
|
margin-bottom: 80px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#distContainer {
|
||||||
|
margin-bottom: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
.partner-box {
|
.partner-box {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 47%;
|
width: 47%;
|
||||||
@@ -94,7 +130,7 @@ h5 {
|
|||||||
padding: 20px;
|
padding: 20px;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: left;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,7 +158,7 @@ h5 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 568px) {
|
@media screen and (max-width: 568px) {
|
||||||
#kcspContainer, #isvContainer, #servContainer {
|
#distContainter, #kcspContainer, #isvContainer, #servContainer {
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,7 +176,7 @@ h5 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 568px) {
|
@media screen and (max-width: 568px) {
|
||||||
#kcspContainer, #isvContainer, #servContainer {
|
#distContainer, #kcspContainer, #isvContainer, #servContainer {
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,3 +6,9 @@ or you can use one of these Kubernetes playgrounds:
|
|||||||
|
|
||||||
* [Katacoda](https://www.katacoda.com/courses/kubernetes/playground)
|
* [Katacoda](https://www.katacoda.com/courses/kubernetes/playground)
|
||||||
* [Play with Kubernetes](http://labs.play-with-k8s.com/)
|
* [Play with Kubernetes](http://labs.play-with-k8s.com/)
|
||||||
|
|
||||||
|
{% if page.min-kubernetes-server-version == page.version %}
|
||||||
|
Your Kubernetes server must be version {{page.min-kubernetes-server-version}}.
|
||||||
|
{% elsif page.min-kubernetes-server-version %}
|
||||||
|
Your Kubernetes server must be version {{page.min-kubernetes-server-version}} or later.
|
||||||
|
{% endif %} To check the version, enter `kubectl version`.
|
||||||
|
|||||||
@@ -2,17 +2,19 @@
|
|||||||
|
|
||||||
To write a glossary snippet, start with a copy of the template, [`/_data/glossary/_example.yml`](/_data/glossary/_example.yml). Make sure to provide (or omit) values for the following fields:
|
To write a glossary snippet, start with a copy of the template, [`/_data/glossary/_example.yml`](/_data/glossary/_example.yml). Make sure to provide (or omit) values for the following fields:
|
||||||
|
|
||||||
* (Required) `id`.
|
* (Required) `id`
|
||||||
* This field must match the name of the glossary file itself (without the `*.yml` extension). It is *not* intended to be displayed to users, and is only used programmatically.
|
* This field must match the name of the glossary file itself (without the `*.yml` extension). It is *not* intended to be displayed to users, and is only used programmatically.
|
||||||
* (Required) `name`.
|
* (Required) `name`
|
||||||
* The name of the term.
|
* The name of the term.
|
||||||
* (Required) `tags`.
|
* (Required) `tags`
|
||||||
* Must be one of the tags listed in kubernetes.github.io/_data/canonical-terms-tags.yml.
|
* Must be one of the tags listed in the [tags directory in the website repository](https://github.com/kubernetes/website/tree/master/_data/canonical-tags).
|
||||||
* (Required) `short description`.
|
* (Required) `short description`
|
||||||
* Make sure to replace the instructional text in the template with your content.
|
* Make sure to replace the instructional text in the template with your content.
|
||||||
* (Optional) `formerly` and `related`.
|
* (Optional) `aka`
|
||||||
* If you do not provide these values, remove the fields.
|
* These synonyms do not need to be glossary terms themselves (if they are deprecated), and can include spaces.
|
||||||
* (Optional) `long description`.
|
* (Optional) `related`
|
||||||
|
* These should be the `id`s (not the `names`) of related glossary terms.
|
||||||
|
* (Optional) `long description`
|
||||||
* If you do not provide a long description, remove the field -- that is, the complete key-value pair.
|
* If you do not provide a long description, remove the field -- that is, the complete key-value pair.
|
||||||
|
|
||||||
The `_example.yml` template also contains basic information about how to write your snippet. For additional guidance, continue reading this readme.
|
The `_example.yml` template also contains basic information about how to write your snippet. For additional guidance, continue reading this readme.
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
{% assign term_data = site.data.glossary.[include.term] %}
|
{% assign term_data = site.data.glossary.[include.term_id] %}
|
||||||
|
|
||||||
|
{% if include.length == "all" or include.length == "short" %}
|
||||||
|
|
||||||
{% if term_data.short-description %}
|
{% if term_data.short-description %}
|
||||||
|
|
||||||
{{ term_data.short-description | markdownify }}
|
{{ term_data.short-description | liquify | markdownify }}
|
||||||
|
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
||||||
@@ -10,11 +12,13 @@
|
|||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if include.length == "long" %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if include.length == "all" or include.length == "long" %}
|
||||||
|
|
||||||
{% if term_data.long-description %}
|
{% if term_data.long-description %}
|
||||||
|
|
||||||
{{ term_data.long-description | markdownify }}
|
{{ term_data.long-description | liquify | markdownify }}
|
||||||
|
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,8 @@
|
|||||||
{{ content }}
|
{{ content }}
|
||||||
|
|
||||||
<p><a href=""><img src="https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/{{ page.path }}?pixel" alt="Analytics" /></a></p>
|
<p><a href=""><img src="https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/{{ page.path }}?pixel" alt="Analytics" /></a></p>
|
||||||
{% if page.url != "/404.html" and page.url != "/docs/search/" %}
|
{% if page.url != "/404.html" and page.url != "/docs/search/"%}
|
||||||
|
{% unless page.no_issue %}
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
PDRTJS_settings_8345992 = {
|
PDRTJS_settings_8345992 = {
|
||||||
"id" : "8345992",
|
"id" : "8345992",
|
||||||
@@ -67,7 +68,10 @@
|
|||||||
</script>
|
</script>
|
||||||
<a href="" onclick="window.open('https://github.com/kubernetes/kubernetes.github.io/issues/new?title=Issue%20with%20' +
|
<a href="" onclick="window.open('https://github.com/kubernetes/kubernetes.github.io/issues/new?title=Issue%20with%20' +
|
||||||
'k8s.io'+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>
|
{% endunless %}
|
||||||
|
{% unless page.noedit %}
|
||||||
|
<a href="/editdocs#{{ page.path }}" class="button issue">Edit this Page</a>
|
||||||
|
{% endunless %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
# Custom Jekyll Plugins
|
||||||
|
|
||||||
|
This directory contains `*.rb` files that extend the original Jekyll classes and provide custom formatting for the docs site:
|
||||||
|
|
||||||
|
### `glossary_tags.rb`
|
||||||
|
|
||||||
|
A full list of glossary terms is available on the [Standardized Glossary](https://kubernetes.io/docs/reference/glossary/?fundamental=true) page. For further information about term schemas, see the [README](../_includes/templates/glossary/README.md) and the provided [`_example.yml`](../_data/glossary/_example.yml).
|
||||||
|
|
||||||
|
*NOTE: The "tags" referenced here are Liquid tags like `{% include %}`, **not** the glossary canonical tags that are used to categorize terms.*
|
||||||
|
|
||||||
|
#### (1) `glossary_definition` tag
|
||||||
|
|
||||||
|
This renders the definition of the glossary term inside a `<div>`, preserving Markdown formatting where possible. It uses the [`snippet.md` template](../_includes/templates/glossary/snippet.md).
|
||||||
|
|
||||||
|
**Usage:**
|
||||||
|
|
||||||
|
```
|
||||||
|
{% glossary_definition term_id="helm-chart" length="all" %}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Parameters:**
|
||||||
|
|
||||||
|
|
||||||
|
| Name | Default | Description |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `term_id` | N/A (Required) | The `id` of the glossary term whose definition will be used. (This `id` is the same as the filename of the term, i.e. `_data/glossary/<ID>.yml`.) |
|
||||||
|
| `length` | "short" | Specifies which term definition should be used ("short" for the `short-definition`, "long" for `long-description`, "all" when both should be included). |
|
||||||
|
|
||||||
|
#### (2) `glossary_tooltip` tag
|
||||||
|
|
||||||
|
This renders the glossary term with a tooltip--when the term is moused over by the user, its definition is displayed above.
|
||||||
|
|
||||||
|
**Usage:**
|
||||||
|
|
||||||
|
```
|
||||||
|
{% glossary_tooltip text="Helm Charts" term_id="helm-chart" %}
|
||||||
|
```
|
||||||
|
|
||||||
|
This renders the following:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
**Parameters:**
|
||||||
|
|
||||||
|
|
||||||
|
| Name | Default | Description |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `text` | the `name` of the glossary term | The text that the user will hover over to display the glossary definition. **You should include this if using the tooltip inside of a glossary term's YAML short-definition.** |
|
||||||
|
| `term_id` | N/A (Required) | The `id` of the associated glossary term. (This `id` is the same as the filename of the term, i.e. `_data/glossary/<ID>.yml`.) |
|
||||||
|
|
||||||
|
#### (3) `glossary_injector` tag
|
||||||
|
|
||||||
|
This takes the definition of the term specified by the `term_id` and uses it to populate the contents of another HTML element specified by `placeholder_id`.
|
||||||
|
|
||||||
|
**Usage:**
|
||||||
|
|
||||||
|
```
|
||||||
|
{% glossary_injector term_id="kubectl" placeholder_id="def-container" length="short" %}
|
||||||
|
```
|
||||||
|
|
||||||
|
This renders the following:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
*NOTE: Neither the placeholder nor the term's styling/CSS is determined by this Jekyll tag. You will need to specify this yourself in your Markdown/HTML files, i.e. by assigning a custom class.*
|
||||||
|
|
||||||
|
**Parameters:**
|
||||||
|
|
||||||
|
|
||||||
|
| Name | Default | Description |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `text` | the `name` of the glossary term | The text that the user will hover over to display the glossary definition. |
|
||||||
|
| `term_id` | N/A (Required) | The `id` of the glossary term whose definition will be used. (This `id` is the same as the filename of the term, i.e. `_data/glossary/<ID>.yml`.) |
|
||||||
|
| `placeholder_id` | N/A (Required) | The `id` of the HTML element whose contents will be populated with the definition of `term_id` |
|
||||||
|
| `length` | "short" | Specifies which term definition should be used ("short" for the `short-definition`, "long" for `long-description`, "all" when both should be included). |
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
# See /_plugins/README.md for full documentation of these custom Jekyll tags
|
||||||
|
module Jekyll
|
||||||
|
module GlossaryTags
|
||||||
|
# Base class for tags (not to be instantiated)
|
||||||
|
class Base < Liquid::Tag
|
||||||
|
VALID_PARAM_NAMES = []
|
||||||
|
LENGTH_SHORT = "short"
|
||||||
|
LENGTH_LONG = "long"
|
||||||
|
SNIPPET_TEMPLATE = "templates/glossary/snippet.md"
|
||||||
|
|
||||||
|
def initialize(tag_name, markup, options)
|
||||||
|
super
|
||||||
|
@args = {}
|
||||||
|
@markup.scan(/([\S]+=['"][^=]+["'])+/).each do |arg|
|
||||||
|
key, val = arg.first.split("=")
|
||||||
|
key = key.to_sym
|
||||||
|
next unless val
|
||||||
|
if self.class::VALID_PARAM_NAMES.include?(key)
|
||||||
|
@args[key] = val.gsub("\"", "")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# "abstract" method
|
||||||
|
def render(context)
|
||||||
|
raise NotImplementedError
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def glossary_term_info(context)
|
||||||
|
global_glossary_hash = context.registers[:site].data["glossary"]
|
||||||
|
unless global_glossary_hash.keys.to_set.include?(@args[:term_id])
|
||||||
|
raise StandardError,
|
||||||
|
"#{@args[:term_id]} is not a valid glossary term id. Please " \
|
||||||
|
"see ./_data/glossary/* for the complete list."
|
||||||
|
end
|
||||||
|
global_glossary_hash[@args[:term_id]]
|
||||||
|
end
|
||||||
|
|
||||||
|
def include_snippet(context)
|
||||||
|
@args[:length] ||= LENGTH_SHORT
|
||||||
|
clean_markup = @args.keys.map { |k| "#{k}=\"#{@args[k]}\"" }.join(" ")
|
||||||
|
|
||||||
|
Jekyll::Tags::IncludeTag.parse(
|
||||||
|
"include",
|
||||||
|
"#{SNIPPET_TEMPLATE} #{clean_markup}",
|
||||||
|
nil,
|
||||||
|
@parse_context
|
||||||
|
).render(context)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Tag for displaying a glossary term's definition inline
|
||||||
|
class Definition < Base
|
||||||
|
VALID_PARAM_NAMES = [
|
||||||
|
:term_id,
|
||||||
|
:length
|
||||||
|
].freeze
|
||||||
|
|
||||||
|
def render(context)
|
||||||
|
include_snippet(context)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Tag to display a tooltip for a specific glossary term
|
||||||
|
class Tooltip < Base
|
||||||
|
VALID_PARAM_NAMES = [
|
||||||
|
:text,
|
||||||
|
:term_id
|
||||||
|
].freeze
|
||||||
|
GLOSSARY_HOME = "/docs/reference/glossary/?all=true"
|
||||||
|
NESTED_TOOLTIPS = /{% (.*?text="(.*?)".*?) %}/
|
||||||
|
NESTED_MARKDOWN_LINKS = /(\[(.*?)\]\(.*?\))/
|
||||||
|
|
||||||
|
def render(context)
|
||||||
|
term_info = glossary_term_info(context)
|
||||||
|
external_link =
|
||||||
|
term_info["full-link"] ||
|
||||||
|
"#{GLOSSARY_HOME}#term-#{term_info["id"]}"
|
||||||
|
tooltip = term_info["short-description"].
|
||||||
|
gsub(NESTED_TOOLTIPS, '\2').
|
||||||
|
gsub(NESTED_MARKDOWN_LINKS, '\2').
|
||||||
|
strip
|
||||||
|
|
||||||
|
"<a class='glossary-tooltip' href='#{external_link}'>" \
|
||||||
|
"#{@args[:text] || term_info["name"]}" \
|
||||||
|
"<span class='tooltip-text'>" \
|
||||||
|
"#{tooltip}" \
|
||||||
|
"</span>" \
|
||||||
|
"</a>"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Tag to inject a glossary term definition into another HTML element
|
||||||
|
class Injector < Base
|
||||||
|
VALID_PARAM_NAMES = [
|
||||||
|
:text,
|
||||||
|
:term_id,
|
||||||
|
:placeholder_id,
|
||||||
|
:length
|
||||||
|
].freeze
|
||||||
|
RENDERED_DESCRIPTION_BLOCK = /.*<p>(.+)<\/p>.*/
|
||||||
|
|
||||||
|
def render(context)
|
||||||
|
term_info = glossary_term_info(context)
|
||||||
|
description = RENDERED_DESCRIPTION_BLOCK.match(include_snippet(context))[1]
|
||||||
|
|
||||||
|
"<span class='glossary-injector' data-placeholder-id='#{@args[:placeholder_id]}'>" \
|
||||||
|
"#{@args[:text] || term_info["name"]}" \
|
||||||
|
"<span class='injector-def hide'>" \
|
||||||
|
"#{description}" \
|
||||||
|
"</span>" \
|
||||||
|
"</span>"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Liquid::Template.register_tag('glossary_definition', Jekyll::GlossaryTags::Definition)
|
||||||
|
Liquid::Template.register_tag('glossary_tooltip', Jekyll::GlossaryTags::Tooltip)
|
||||||
|
Liquid::Template.register_tag('glossary_injector', Jekyll::GlossaryTags::Injector)
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# Filter to force liquid parsing
|
||||||
|
module Jekyll
|
||||||
|
module LiquifyFilter
|
||||||
|
def liquify(input)
|
||||||
|
Liquid::Template.parse(input).render(@context)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Liquid::Template.register_filter(Jekyll::LiquifyFilter)
|
||||||
+363
-313
@@ -4,383 +4,433 @@
|
|||||||
# test at https://play.netlify.com/redirects #
|
# test at https://play.netlify.com/redirects #
|
||||||
###############################################
|
###############################################
|
||||||
|
|
||||||
#############
|
|
||||||
TEMPORARY
|
|
||||||
|
|
||||||
/docs/resources-reference/v1.8/* /docs/api-reference/v1.8/:splat 301
|
|
||||||
|
|
||||||
/docs/tasks/administer-cluster/running-cloud-controller.md /docs/tasks/administer-cluster/running-cloud-controller/ 301
|
|
||||||
/docs/concepts/workloads/controllers/statefulset.md /docs/concepts/workloads/controllers/statefulset/ 301
|
|
||||||
/docs/admin/extensible-admission-controllers.md /docs/admin/extensible-admission-controllers/ 301
|
|
||||||
/docs/tasks/administer-cluster/developing-cloud-controller-manager.md /docs/tasks/administer-cluster/developing-cloud-controller-manager/ 301
|
|
||||||
/docs/concepts/workloads/controllers/job/ /docs/concepts/workloads/controllers/jobs-run-to-completion/ 301
|
|
||||||
/docs/federation/api-reference/federation/v1beta1/operations.html /docs/federation/api-reference/federation/v1beta1/operations/ 301
|
|
||||||
/docs/federation/api-reference/federation/v1beta1/definitions.html /docs/federation/api-reference/federation/v1beta1/definitions/ 301
|
|
||||||
/docs/federation/api-reference/extensions/v1beta1/operations.html /docs/federation/api-reference/extensions/v1beta1/operations/ 301
|
|
||||||
/docs/federation/api-reference/v1/operations.html /docs/federation/api-reference/v1/operations/ 301
|
|
||||||
/docs/federation/api-reference/extensions/v1beta1/definitions.html /docs/federation/api-reference/extensions/v1beta1/definitions/ 301
|
|
||||||
/docs/federation/api-reference/v1/definitions.html /docs/federation/api-reference/v1/definitions/ 301
|
|
||||||
/docs/tasks/administer-cluster/certificate-rotation/ /docs/admin/kubelet-tls-bootstrapping/ 301
|
|
||||||
/docs/tasks/administer-cluster/running-cloud-controller.md /docs/tasks/administer-cluster/running-cloud-controller/ 301
|
|
||||||
/docs/concepts/workloads/controllers/statefulset.md /docs/concepts/workloads/controllers/statefulset/ 301
|
|
||||||
/docs/concepts/workloads/controllers/deployment.md /docs/concepts/workloads/controllers/deployment/ 301
|
|
||||||
/docs/tasks/administer-cluster/out-of-resource/memory-available.sh /docs/concepts/cluster-administration/out-of-resource/memory-available.sh 301
|
|
||||||
|
|
||||||
#############
|
|
||||||
|
|
||||||
/api-ref/ https://github.com/kubernetes/kubernetes/milestones/ 301
|
/api-ref/ https://github.com/kubernetes/kubernetes/milestones/ 301
|
||||||
/concepts/containers/container-lifecycle-hooks /docs/concepts/containers/container-lifecycle-hooks 301
|
/concepts/containers/container-lifecycle-hooks/ /docs/concepts/containers/container-lifecycle-hooks/ 301
|
||||||
/docs/ /docs/home/ 301
|
/docs/ /docs/home/ 301
|
||||||
/docs/abstractions/controllers/petset /docs/concepts/workloads/controllers/statefulset 301
|
/docs/abstractions/controllers/petset/ /docs/concepts/workloads/controllers/statefulset/ 301
|
||||||
/docs/admin/ /docs/concepts/cluster-administration/cluster-administration-overview 301
|
|
||||||
|
/docs/admin/ /docs/concepts/cluster-administration/cluster-administration-overview/ 301
|
||||||
/docs/admin/add-ons/ /docs/concepts/cluster-administration/addons/ 301
|
/docs/admin/add-ons/ /docs/concepts/cluster-administration/addons/ 301
|
||||||
/docs/admin/addons /docs/concepts/cluster-administration/addons 301
|
/docs/admin/addons/ /docs/concepts/cluster-administration/addons/ 301
|
||||||
/docs/admin/apparmor /docs/tutorials/clusters/apparmor 301
|
/docs/admin/apparmor/ /docs/tutorials/clusters/apparmor/ 301
|
||||||
/docs/admin/audit /docs/tasks/debug-application-cluster/audit 301
|
/docs/admin/audit/ /docs/tasks/debug-application-cluster/audit/ 301
|
||||||
/docs/admin/authorization/rbac.md /docs/admin/authorization/rbac/ 301
|
/docs/admin/authorization/rbac.md /docs/admin/authorization/rbac/ 301
|
||||||
/docs/admin/cluster-components /docs/concepts/overview/components 301
|
/docs/admin/cluster-components/ /docs/concepts/overview/components/ 301
|
||||||
/docs/admin/cluster-management /docs/tasks/administer-cluster/cluster-management 301
|
/docs/admin/cluster-management/ /docs/tasks/administer-cluster/cluster-management/ 301
|
||||||
/docs/admin/cluster-troubleshooting /docs/tasks/debug-application-cluster/debug-cluster 301
|
/docs/admin/cluster-troubleshooting/ /docs/tasks/debug-application-cluster/debug-cluster/ 301
|
||||||
/docs/admin/daemons /docs/concepts/workloads/controllers/daemonset 301
|
/docs/admin/daemons/ /docs/concepts/workloads/controllers/daemonset/ 301
|
||||||
/docs/admin/disruptions /docs/concepts/workloads/pods/disruptions 301
|
/docs/admin/disruptions/ /docs/concepts/workloads/pods/disruptions/ 301
|
||||||
/docs/admin/dns /docs/concepts/services-networking/dns-pod-service 301
|
/docs/admin/dns/ /docs/concepts/services-networking/dns-pod-service/ 301
|
||||||
/docs/admin/etcd /docs/tasks/administer-cluster/configure-upgrade-etcd 301
|
/docs/admin/etcd/ /docs/tasks/administer-cluster/configure-upgrade-etcd/ 301
|
||||||
/docs/admin/etcd_upgrade /docs/tasks/administer-cluster/configure-upgrade-etcd 301
|
/docs/admin/etcd_upgrade/ /docs/tasks/administer-cluster/configure-upgrade-etcd/ 301
|
||||||
/docs/admin/federation/kubefed /docs/tasks/federation/set-up-cluster-federation-kubefed 301
|
/docs/admin/extensible-admission-controllers.md /docs/admin/extensible-admission-controllers/ 301
|
||||||
|
/docs/admin/federation/kubefed/ /docs/tasks/federation/set-up-cluster-federation-kubefed/ 301
|
||||||
/docs/admin/federation/kubefed.md /docs/tasks/federation/set-up-cluster-federation-kubefed/ 301
|
/docs/admin/federation/kubefed.md /docs/tasks/federation/set-up-cluster-federation-kubefed/ 301
|
||||||
/docs/admin/garbage-collection /docs/concepts/cluster-administration/kubelet-garbage-collection 301
|
/docs/admin/garbage-collection/ /docs/concepts/cluster-administration/kubelet-garbage-collection/ 301
|
||||||
/docs/admin/ha-master-gce /docs/tasks/administer-cluster/highly-available-master 301
|
/docs/admin/ha-master-gce/ /docs/tasks/administer-cluster/highly-available-master/ 301
|
||||||
/docs/admin/ha-master-gce.md /docs/tasks/administer-cluster/highly-available-master/ 301
|
/docs/admin/ha-master-gce.md/ /docs/tasks/administer-cluster/highly-available-master/ 301
|
||||||
/docs/admin/kubeadm-upgrade-1-7 /docs/tasks/administer-cluster/kubeadm-upgrade-1-7 301
|
/docs/admin/kubeadm-upgrade-1-7/ /docs/tasks/administer-cluster/kubeadm-upgrade-1-7/ 301
|
||||||
/docs/admin/limitrange /docs/tasks/administer-cluster/cpu-memory-limit/ 301
|
/docs/admin/limitrange/ /docs/tasks/administer-cluster/cpu-memory-limit/ 301
|
||||||
/docs/admin/limitrange/Limits/ /docs/tasks/administer-cluster/limit-storage-consumption/#limitrange-to-limit-requests-for-storage/ 301
|
/docs/admin/limitrange/Limits/ /docs/tasks/administer-cluster/limit-storage-consumption/#limitrange-to-limit-requests-for-storage/ 301
|
||||||
/docs/admin/master-node-communication /docs/concepts/architecture/master-node-communication 301
|
/docs/admin/master-node-communication/ /docs/concepts/architecture/master-node-communication/ 301
|
||||||
/docs/admin/multi-cluster /docs/concepts/cluster-administration/federation 301
|
/docs/admin/multi-cluster/ /docs/concepts/cluster-administration/federation/ 301
|
||||||
/docs/admin/multiple-schedulers /docs/tasks/administer-cluster/configure-multiple-schedulers 301
|
/docs/admin/multiple-schedulers/ /docs/tasks/administer-cluster/configure-multiple-schedulers/ 301
|
||||||
/docs/admin/namespaces /docs/tasks/administer-cluster/namespaces 301
|
/docs/admin/namespaces/ /docs/tasks/administer-cluster/namespaces/ 301
|
||||||
/docs/admin/namespaces/walkthrough /docs/tasks/administer-cluster/namespaces-walkthrough 301
|
/docs/admin/namespaces/walkthrough/ /docs/tasks/administer-cluster/namespaces-walkthrough/ 301
|
||||||
/docs/admin/network-plugins /docs/concepts/cluster-administration/network-plugins 301
|
/docs/admin/network-plugins/ /docs/concepts/cluster-administration/network-plugins/ 301
|
||||||
/docs/admin/networking /docs/concepts/cluster-administration/networking 301
|
/docs/admin/networking/ /docs/concepts/cluster-administration/networking/ 301
|
||||||
/docs/admin/node /docs/concepts/architecture/nodes 301
|
/docs/admin/node/ /docs/concepts/architecture/nodes/ 301
|
||||||
/docs/admin/node-allocatable /docs/tasks/administer-cluster/reserve-compute-resources 301
|
/docs/admin/node-allocatable/ /docs/tasks/administer-cluster/reserve-compute-resources/ 301
|
||||||
/docs/admin/node-allocatable.md /docs/tasks/administer-cluster/reserve-compute-resources/ 301
|
/docs/admin/node-allocatable.md /docs/tasks/administer-cluster/reserve-compute-resources/ 301
|
||||||
/docs/admin/node-conformance.md /docs/admin/node-conformance/ 301
|
/docs/admin/node-conformance.md /docs/admin/node-conformance/ 301
|
||||||
/docs/admin/node-problem /docs/tasks/debug-application-cluster/monitor-node-health 301
|
/docs/admin/node-problem/ /docs/tasks/debug-application-cluster/monitor-node-health/ 301
|
||||||
/docs/admin/out-of-resource /docs/tasks/administer-cluster/out-of-resource 301
|
/docs/admin/out-of-resource/ /docs/tasks/administer-cluster/out-of-resource/ 301
|
||||||
/docs/admin/rescheduler /docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods 301
|
/docs/admin/rescheduler/ /docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/ 301
|
||||||
/docs/admin/resourcequota/* /docs/concepts/policy/resource-quotas/ 301
|
/docs/admin/resourcequota/* /docs/concepts/policy/resource-quotas/ 301
|
||||||
/docs/admin/resourcequota/limitstorageconsumption /docs/tasks/administer-cluster/limit-storage-consumption 301
|
/docs/admin/resourcequota/limitstorageconsumption/ /docs/tasks/administer-cluster/limit-storage-consumption/ 301
|
||||||
/docs/admin/resourcequota/walkthrough /docs/tasks/administer-cluster/quota-api-object 301
|
/docs/admin/resourcequota/walkthrough/ /docs/tasks/administer-cluster/quota-api-object/ 301
|
||||||
/docs/admin/static-pods /docs/tasks/administer-cluster/static-pod 301
|
/docs/admin/static-pods/ /docs/tasks/administer-cluster/static-pod/ 301
|
||||||
/docs/admin/sysctls /docs/concepts/cluster-administration/sysctl-cluster 301
|
/docs/admin/sysctls/ /docs/concepts/cluster-administration/sysctl-cluster/ 301
|
||||||
/docs/admin/upgrade-1-6 /docs/tasks/administer-cluster/upgrade-1-6 301
|
/docs/admin/upgrade-1-6/ /docs/tasks/administer-cluster/upgrade-1-6/ 301
|
||||||
/docs/api /docs/concepts/overview/kubernetes-api 301
|
/docs/admin/resource-quota/ /docs/concepts/policy/resource-quotas/ 301
|
||||||
/docs/api-reference/1_5/* /docs/api-reference/v1.5/ 301
|
|
||||||
/docs/api-reference/apps/v1alpha1/definitions https://v1-4.docs.kubernetes.io/docs/api-reference/apps/v1alpha1/definitions 301
|
/docs/api/ /docs/concepts/overview/kubernetes-api/ 301
|
||||||
/docs/api-reference/apps/v1beta1/operations https://v1-4.docs.kubernetes.io/docs/api-reference/apps/v1beta1/operations 301
|
|
||||||
/docs/api-reference/authorization.k8s.io/v1beta1/definitions https://v1-4.docs.kubernetes.io/docs/api-reference/authorization.k8s.io/v1beta1/definitions 301
|
/docs/api-reference/apps/v1alpha1/definitions/ https://v1-4.docs.kubernetes.io/docs/api-reference/apps/v1alpha1/definitions/ 301
|
||||||
/docs/api-reference/authorization.k8s.io/v1beta1/operations https://v1-4.docs.kubernetes.io/docs/api-reference/authorization.k8s.io/v1beta1/operations 301
|
/docs/api-reference/apps/v1beta1/operations/ https://v1-4.docs.kubernetes.io/docs/api-reference/apps/v1beta1/operations/ 301
|
||||||
/docs/api-reference/autoscaling/v1/operations https://v1-4.docs.kubernetes.io/docs/api-reference/autoscaling/v1/operations 301
|
/docs/api-reference/authorization.k8s.io/v1beta1/definitions/ https://v1-4.docs.kubernetes.io/docs/api-reference/authorization.k8s.io/v1beta1/definitions/ 301
|
||||||
/docs/api-reference/batch/v1/operations https://v1-4.docs.kubernetes.io/docs/api-reference/batch/v1/operations 301
|
/docs/api-reference/authorization.k8s.io/v1beta1/operations/ https://v1-4.docs.kubernetes.io/docs/api-reference/authorization.k8s.io/v1beta1/operations/ 301
|
||||||
/docs/api-reference/batch/v2alpha1/definitions https://v1-4.docs.kubernetes.io/docs/api-reference/batch/v2alpha1/definitions 301
|
/docs/api-reference/autoscaling/v1/operations/ https://v1-4.docs.kubernetes.io/docs/api-reference/autoscaling/v1/operations/ 301
|
||||||
/docs/api-reference/certificates.k8s.io/v1alpha1/definitions https://v1-4.docs.kubernetes.io/docs/api-reference/certificates.k8s.io/v1alpha1/definitions 301
|
/docs/api-reference/batch/v1/operations/ https://v1-4.docs.kubernetes.io/docs/api-reference/batch/v1/operations/ 301
|
||||||
/docs/api-reference/certificates/v1alpha1/operations https://v1-4.docs.kubernetes.io/docs/api-reference/certificates/v1alpha1/operations 301
|
/docs/api-reference/batch/v2alpha1/definitions/ https://v1-4.docs.kubernetes.io/docs/api-reference/batch/v2alpha1/definitions/ 301
|
||||||
/docs/api-reference/extensions/v1beta1/operations https://v1-4.docs.kubernetes.io/docs/api-reference/extensions/v1beta1/operations 301
|
/docs/api-reference/certificates.k8s.io/v1alpha1/definitions/ https://v1-4.docs.kubernetes.io/docs/api-reference/certificates.k8s.io/v1alpha1/definitions/ 301
|
||||||
/docs/api-reference/policy/v1alpha1/definitions https://v1-4.docs.kubernetes.io/docs/api-reference/policy/v1alpha1/definitions 301
|
/docs/api-reference/certificates/v1alpha1/operations/ https://v1-4.docs.kubernetes.io/docs/api-reference/certificates/v1alpha1/operations/ 301
|
||||||
/docs/api-reference/policy/v1beta1/definitions https://v1-4.docs.kubernetes.io/docs/api-reference/policy/v1beta1/definitions 301
|
/docs/api-reference/extensions/v1beta1/operations/ https://v1-4.docs.kubernetes.io/docs/api-reference/extensions/v1beta1/operations/ 301
|
||||||
/docs/api-reference/README https://v1-4.docs.kubernetes.io/docs/api-reference/README 301
|
/docs/api-reference/labels-annotations-taints/ /docs/reference/labels-annotations-taints/ 301
|
||||||
/docs/api-reference/storage.k8s.io/v1beta1/operations https://v1-4.docs.kubernetes.io/docs/api-reference/storage.k8s.io/v1beta1/operations 301
|
/docs/api-reference/policy/v1alpha1/definitions/ https://v1-4.docs.kubernetes.io/docs/api-reference/policy/v1alpha1/definitions/ 301
|
||||||
/docs/api-reference/v1.5/node_modules/* https://v1-5.docs.kubernetes.io/docs/api-reference/v1.5 301
|
/docs/api-reference/policy/v1beta1/definitions/ https://v1-4.docs.kubernetes.io/docs/api-reference/policy/v1beta1/definitions/ 301
|
||||||
/docs/api-reference/v1.6/node_modules/* https://v1-6.docs.kubernetes.io/docs/api-reference/v1.6 301
|
/docs/api-reference/README/ https://v1-4.docs.kubernetes.io/docs/api-reference/README/ 301
|
||||||
/docs/api-reference/v1.7/node_modules/* /docs/api-reference/v1.7/ 301
|
/docs/api-reference/storage.k8s.io/v1beta1/operations/ https://v1-4.docs.kubernetes.io/docs/api-reference/storage.k8s.io/v1beta1/operations/ 301
|
||||||
/docs/api-reference/v1/definitions /docs/api-reference/v1.8 301
|
/docs/api-reference/v1.4/* https://v1-4.docs.kubernetes.io/docs/reference/ 301
|
||||||
/docs/api-reference/v1/operations /docs/api-reference/v1.8 301
|
/docs/api-reference/1_5/* https://v1-5.docs.kubernetes.io/docs/reference/ 301
|
||||||
/docs/concepts/abstractions/controllers/garbage-collection /docs/concepts/workloads/controllers/garbage-collection 301
|
/docs/api-reference/v1.5/* https://v1-5.docs.kubernetes.io/docs/reference/ 301
|
||||||
/docs/concepts/abstractions/controllers/petsets /docs/concepts/workloads/controllers/statefulset 301
|
/docs/api-reference/v1.6/* https://v1-6.docs.kubernetes.io/docs/reference/ 301
|
||||||
/docs/concepts/abstractions/controllers/statefulsets /docs/concepts/workloads/controllers/statefulset 301
|
/docs/api-reference/v1.7/* https://v1-7.docs.kubernetes.io/docs/reference/ 301
|
||||||
/docs/concepts/abstractions/init-containers /docs/concepts/workloads/pods/init-containers 301
|
/docs/api-reference/v1/definitions/ /docs/api-reference/v1.8/ 301
|
||||||
/docs/concepts/abstractions/overview /docs/concepts/overview/working-with-objects/kubernetes-objects 301
|
/docs/api-reference/v1/operations/ /docs/api-reference/v1.8/ 301
|
||||||
/docs/concepts/abstractions/pod /docs/concepts/workloads/pods/pod-overview 301
|
|
||||||
/docs/concepts/cluster /docs/concepts/cluster-administration/cluster-administration-overview/ 301
|
/docs/concepts/abstractions/controllers/garbage-collection/ /docs/concepts/workloads/controllers/garbage-collection/ 301
|
||||||
/docs/concepts/cluster-administration/access-cluster /docs/tasks/access-application-cluster/access-cluster 301
|
/docs/concepts/abstractions/controllers/petsets/ /docs/concepts/workloads/controllers/statefulset/ 301
|
||||||
/docs/concepts/cluster-administration/audit /docs/tasks/debug-application-cluster/audit 301
|
/docs/concepts/abstractions/controllers/statefulsets/ /docs/concepts/workloads/controllers/statefulset/ 301
|
||||||
/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig /docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig 301
|
/docs/concepts/abstractions/init-containers/ /docs/concepts/workloads/pods/init-containers/ 301
|
||||||
/docs/concepts/cluster-administration/cluster-management /docs/tasks/administer-cluster/cluster-management 301
|
/docs/concepts/abstractions/overview/ /docs/concepts/overview/working-with-objects/kubernetes-objects/ 301
|
||||||
/docs/concepts/cluster-administration/configure-etcd /docs/tasks/administer-cluster/configure-upgrade-etcd 301
|
/docs/concepts/abstractions/pod/ /docs/concepts/workloads/pods/pod-overview/ 301
|
||||||
/docs/concepts/cluster-administration/device-plugins/ /docs/concepts/cluster-administration/network-plugins/ 301
|
/docs/concepts/cluster/ /docs/concepts/cluster-administration/cluster-administration-overview/ 301
|
||||||
/docs/concepts/cluster-administration/etcd-upgrade /docs/tasks/administer-cluster/configure-upgrade-etcd 301
|
/docs/concepts/cluster-administration/access-cluster/ /docs/tasks/access-application-cluster/access-cluster/ 301
|
||||||
/docs/concepts/cluster-administration/federation-service-discovery /docs/tasks/federation/federation-service-discovery 301
|
/docs/concepts/cluster-administration/audit/ /docs/tasks/debug-application-cluster/audit/ 301
|
||||||
/docs/concepts/cluster-administration/guaranteed-scheduling-critical-addon-pods /docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods 301
|
/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig /docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig/ 301
|
||||||
/docs/concepts/cluster-administration/master-node-communication /docs/concepts/architecture/master-node-communication 301
|
/docs/concepts/cluster-administration/cluster-management/ /docs/tasks/administer-cluster/cluster-management/ 301
|
||||||
/docs/concepts/cluster-administration/multiple-clusters /docs/concepts/cluster-administration/federation 301
|
/docs/concepts/cluster-administration/configure-etcd/ /docs/tasks/administer-cluster/configure-upgrade-etcd/ 301
|
||||||
/docs/concepts/cluster-administration/out-of-resource /docs/tasks/administer-cluster/out-of-resource 301
|
/docs/concepts/cluster-administration/etcd-upgrade/ /docs/tasks/administer-cluster/configure-upgrade-etcd/ 301
|
||||||
/docs/concepts/cluster-administration/resource-usage-monitoring /docs/tasks/debug-application-cluster/resource-usage-monitoring 301
|
/docs/concepts/cluster-administration/federation-service-discovery/ /docs/tasks/federation/federation-service-discovery/ 301
|
||||||
/docs/concepts/cluster-administration/static-pod /docs/tasks/administer-cluster/static-pod 301
|
/docs/concepts/cluster-administration/guaranteed-scheduling-critical-addon-pods/ /docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/ 301
|
||||||
/docs/concepts/clusters/logging /docs/concepts/cluster-administration/logging 301
|
/docs/concepts/cluster-administration/master-node-communication/ /docs/concepts/architecture/master-node-communication/ 301
|
||||||
/docs/concepts/configuration/container-command-arg /docs/tasks/inject-data-application/define-command-argument-container/docs/concepts/ecosystem/thirdpartyresource 301 /docs/tasks/access-kubernetes-api/extend-api-third-party-resource
|
/docs/concepts/cluster-administration/multiple-clusters/ /docs/concepts/cluster-administration/federation/ 301
|
||||||
|
/docs/concepts/cluster-administration/out-of-resource/ /docs/tasks/administer-cluster/out-of-resource/ 301
|
||||||
|
/docs/concepts/cluster-administration/resource-usage-monitoring /docs/tasks/debug-application-cluster/resource-usage-monitoring/ 301
|
||||||
|
/docs/concepts/cluster-administration/static-pod/ /docs/tasks/administer-cluster/static-pod/ 301
|
||||||
|
/docs/concepts/clusters/logging/ /docs/concepts/cluster-administration/logging/ 301
|
||||||
|
/docs/concepts/configuration/container-command-arg/ /docs/tasks/inject-data-application/define-command-argument-container/ 301
|
||||||
|
/docs/concepts/configuration/container-command-args/ /docs/tasks/inject-data-application/define-command-argument-container/ 301
|
||||||
/docs/concepts/ecosystem/thirdpartyresource/ /docs/tasks/access-kubernetes-api/extend-api-third-party-resource/ 301
|
/docs/concepts/ecosystem/thirdpartyresource/ /docs/tasks/access-kubernetes-api/extend-api-third-party-resource/ 301
|
||||||
/docs/concepts/jobs/cron-jobs /docs/concepts/workloads/controllers/cron-jobs 301
|
/docs/concepts/jobs/cron-jobs/ /docs/concepts/workloads/controllers/cron-jobs/ 301
|
||||||
/docs/concepts/jobs/run-to-completion-finite-workloads /docs/concepts/workloads/controllers/jobs-run-to-completion 301
|
/docs/concepts/jobs/run-to-completion-finite-workloads/ /docs/concepts/workloads/controllers/jobs-run-to-completion/ 301
|
||||||
/docs/concepts/nodes/node /docs/concepts/architecture/nodes 301
|
/docs/concepts/nodes/node/ /docs/concepts/architecture/nodes/ 301
|
||||||
/docs/concepts/object-metadata/annotations /docs/concepts/overview/working-with-objects/annotations 301
|
/docs/concepts/object-metadata/annotations/ /docs/concepts/overview/working-with-objects/annotations/ 301
|
||||||
/docs/concepts/overview/ /docs/concepts/overview/what-is-kubernetes/ 301
|
/docs/concepts/overview/ /docs/concepts/overview/what-is-kubernetes/ 301
|
||||||
/docs/concepts/policy/container-capabilities/ /docs/tasks/configure-pod-container/security-context/#set-capabilities-for-a-container/ 301
|
/docs/concepts/policy/container-capabilities/ /docs/tasks/configure-pod-container/security-context/#set-capabilities-for-a-container/ 301
|
||||||
/docs/concepts/policy/security-context/ /docs/tasks/configure-pod-container/security-context/ 301
|
/docs/concepts/policy/security-context/ /docs/tasks/configure-pod-container/security-context/ 301
|
||||||
/docs/concepts/services-networking/networkpolicies/ /docs/concepts/services-networking/network-policies/ 301
|
/docs/concepts/services-networking/networkpolicies/ /docs/concepts/services-networking/network-policies/ 301
|
||||||
/docs/concepts/storage/etcd-store-api-object /docs/tasks/administer-cluster/configure-upgrade-etcd 301
|
/docs/concepts/storage/etcd-store-api-object/ /docs/tasks/administer-cluster/configure-upgrade-etcd/ 301
|
||||||
/docs/concepts/storage/volumes/emptyDirapiVersion/ /docs/concepts/storage/volumes/#emptydir/ 301
|
/docs/concepts/storage/volumes/emptyDirapiVersion/ /docs/concepts/storage/volumes/#emptydir/ 301
|
||||||
/docs/concepts/tools/kubectl/object-management-overview /docs/tutorials/object-management-kubectl/object-management 301
|
/docs/concepts/tools/kubectl/object-management-overview/ /docs/tutorials/object-management-kubectl/object-management/ 301
|
||||||
/docs/concepts/tools/kubectl/object-management-using-commands/ /docs/tutorials/object-management-kubectl/imperative-object-management-command/ 301
|
/docs/concepts/tools/kubectl/object-management-using-commands/ /docs/tutorials/object-management-kubectl/imperative-object-management-command/ 301
|
||||||
/docs/concepts/tools/kubectl/object-management-using-declarative-config /docs/tutorials/object-management-kubectl/declarative-object-management-configuration 301
|
/docs/concepts/tools/kubectl/object-management-using-declarative-config/ /docs/tutorials/object-management-kubectl/declarative-object-management-configuration/ 301
|
||||||
/docs/concepts/tools/kubectl/object-management-using-imperative-commands /docs/tutorials/object-management-kubectl/imperative-object-management-command 301
|
/docs/concepts/tools/kubectl/object-management-using-imperative-commands/ /docs/tutorials/object-management-kubectl/imperative-object-management-command/ 301
|
||||||
/docs/concepts/tools/kubectl/object-management-using-imperative-config /docs/tutorials/object-management-kubectl/imperative-object-management-configuration 301
|
/docs/concepts/tools/kubectl/object-management-using-imperative-config/ /docs/tutorials/object-management-kubectl/imperative-object-management-configuration/ 301
|
||||||
/docs/concepts/workload/pods/pod-overview/ /docs/concepts/workloads/pods/pod-overview 301
|
|
||||||
/docs/concepts/workloads/controllers/cron-jobs/deployment/ /docs/concepts/workloads/controllers/cron-jobs/ 301
|
/docs/concepts/workloads/controllers/cron-jobs/deployment/ /docs/concepts/workloads/controllers/cron-jobs/ 301
|
||||||
/docs/concepts/workloads/controllers/daemonset/docs/concepts/workloads/pods/pod /docs/concepts/workloads/pods/pod 301
|
/docs/concepts/workloads/controllers/daemonset/docs/concepts/workloads/pods/pod/ /docs/concepts/workloads/pods/pod/ 301
|
||||||
/docs/concepts/workloads/controllers/deployment/docs/concepts/workloads/pods/pod /docs/concepts/workloads/pods/pod 301
|
/docs/concepts/workloads/controllers/deployment/docs/concepts/workloads/pods/pod/ /docs/concepts/workloads/pods/pod/ 301
|
||||||
/docs/concepts/workloads/controllers/petsets /docs/concepts/workloads/controllers/statefulset 301
|
/docs/concepts/workloads/controllers/deployment.md /docs/concepts/workloads/controllers/deployment/ 301
|
||||||
|
/docs/concepts/workloads/controllers/job/ /docs/concepts/workloads/controllers/jobs-run-to-completion/ 301
|
||||||
|
/docs/concepts/workloads/controllers/petset/ /docs/concepts/workloads/controllers/statefulset/ 301
|
||||||
|
/docs/concepts/workloads/controllers/petsets/ /docs/concepts/workloads/controllers/statefulset/ 301
|
||||||
/docs/concepts/workloads/controllers/statefulsets/ /docs/concepts/workloads/controllers/statefulset/ 301
|
/docs/concepts/workloads/controllers/statefulsets/ /docs/concepts/workloads/controllers/statefulset/ 301
|
||||||
/docs/concepts/workloads/pods/init-containers/Kubernetes /docs/concepts/workloads/pods/init-containers/ 301
|
/docs/concepts/workloads/controllers/statefulset.md /docs/concepts/workloads/controllers/statefulset/ 301
|
||||||
|
/docs/concepts/workloads/pods/init-containers/Kubernetes/ /docs/concepts/workloads/pods/init-containers/ 301
|
||||||
|
|
||||||
/docs/consumer-guideline/pod-security-coverage/ /docs/concepts/policy/pod-security-policy/ 301
|
/docs/consumer-guideline/pod-security-coverage/ /docs/concepts/policy/pod-security-policy/ 301
|
||||||
/docs/contribute/create-pull-request/ /docs/home/contribute/create-pull-request 301
|
|
||||||
/docs/contribute/page-templates/ /docs/home/contribute/page-templates 301
|
/docs/contribute/create-pull-request/ /docs/home/contribute/create-pull-request/ 301
|
||||||
/docs/contribute/review-issues/ /docs/home/contribute/review-issues 301
|
/docs/contribute/page-templates/ /docs/home/contribute/page-templates/ 301
|
||||||
|
/docs/contribute/review-issues/ /docs/home/contribute/review-issues/ 301
|
||||||
/docs/contribute/stage-documentation-changes/ /docs/home/contribute/stage-documentation-changes/ 301
|
/docs/contribute/stage-documentation-changes/ /docs/home/contribute/stage-documentation-changes/ 301
|
||||||
/docs/contribute/style-guide/ /docs/home/contribute/style-guide 301
|
/docs/contribute/style-guide/ /docs/home/contribute/style-guide/ 301
|
||||||
/docs/contribute/write-new-topic /docs/home/contribute/write-new-topic 301
|
|
||||||
|
/docs/contribute/write-new-topic/ /docs/home/contribute/write-new-topic/ 301
|
||||||
/docs/deprecate/ /ddocs/reference/deprecation-policy/ 301
|
/docs/deprecate/ /ddocs/reference/deprecation-policy/ 301
|
||||||
|
/docs/deprecated/ /ddocs/reference/deprecation-policy/ 301
|
||||||
/docs/deprecation-policy/ /docs/reference/deprecation-policy/ 301
|
/docs/deprecation-policy/ /docs/reference/deprecation-policy/ 301
|
||||||
|
|
||||||
/docs/federation/api-reference/ /docs/reference/federation/v1/operations/ 301
|
/docs/federation/api-reference/ /docs/reference/federation/v1/operations/ 301
|
||||||
/docs/federation/api-reference/extensions/v1beta1/definitions /docs/reference/federation/extensions/v1beta1/definitions 301
|
/docs/federation/api-reference/v1/definitions.html /docs/federation/api-reference/v1/definitions/ 301
|
||||||
/docs/federation/api-reference/extensions/v1beta1/operations /docs/reference/federation/extensions/v1beta1/operations/ 301
|
/docs/federation/api-reference/v1/operations.html /docs/federation/api-reference/v1/operations/ 301
|
||||||
/docs/federation/api-reference/federation/v1beta1/definitions /docs/reference/federation/extensions/v1beta1/definitions 301
|
/docs/federation/api-reference/extensions/v1beta1/definitions/ /docs/reference/federation/extensions/v1beta1/definitions/ 301
|
||||||
/docs/federation/api-reference/federation/v1beta1/operations /docs/reference/federation/extensions/v1beta1/operations/ 301
|
/docs/federation/api-reference/extensions/v1beta1/definitions.html /docs/federation/api-reference/extensions/v1beta1/definitions/ 301
|
||||||
/docs/federation/api-reference/README /docs/reference/federation 301
|
/docs/federation/api-reference/extensions/v1beta1/operations/ /docs/reference/federation/extensions/v1beta1/operations/ 301
|
||||||
/docs/federation/api-reference/v1/definitions /docs/reference/federation/v1/definitions 301
|
/docs/federation/api-reference/federation/v1beta1/definitions/ /docs/reference/federation/extensions/v1beta1/definitions/ 301
|
||||||
|
/docs/federation/api-reference/federation/v1beta1/definitions.html /docs/federation/api-reference/federation/v1beta1/definitions/ 301
|
||||||
|
/docs/federation/api-reference/federation/v1beta1/operations/ /docs/reference/federation/extensions/v1beta1/operations/ 301
|
||||||
|
/docs/federation/api-reference/extensions/v1beta1/operations.html /docs/federation/api-reference/extensions/v1beta1/operations/ 301
|
||||||
|
/docs/federation/api-reference/federation/v1beta1/operations.html /docs/federation/api-reference/federation/v1beta1/operations/ 301
|
||||||
|
/docs/federation/api-reference/README/ /docs/reference/federation/ 301
|
||||||
|
/docs/federation/api-reference/v1/definitions/ /docs/reference/federation/v1/definitions/ 301
|
||||||
/docs/federation/api-reference/v1/operations/ /docs/reference/federation/v1/operations/ 301
|
/docs/federation/api-reference/v1/operations/ /docs/reference/federation/v1/operations/ 301
|
||||||
|
|
||||||
/docs/getting-started-guide/* /docs/setup/ 301
|
/docs/getting-started-guide/* /docs/setup/ 301
|
||||||
/docs/getting-started-guides /docs/setup/pick-right-solution 301
|
/docs/getting-started-guides/ /docs/setup/pick-right-solution/ 301
|
||||||
/docs/getting-started-guides/coreos/azure /docs/getting-started-guides/coreos 301
|
/docs/getting-started-guides/coreos/azure/ /docs/getting-started-guides/coreos/ 301
|
||||||
/docs/getting-started-guides/coreos/bare_metal_calico /docs/getting-started-guides/coreos 301
|
/docs/getting-started-guides/coreos/bare_metal_calico/ /docs/getting-started-guides/coreos/ 301
|
||||||
/docs/getting-started-guides/docker-multinode/* /docs/setup/independent/create-cluster-kubeadm/ 301
|
/docs/getting-started-guides/docker-multinode/* /docs/setup/independent/create-cluster-kubeadm/ 301
|
||||||
/docs/getting-started-guides/juju /docs/getting-started-guides/ubuntu/installation 301
|
/docs/getting-started-guides/juju/ /docs/getting-started-guides/ubuntu/installation/ 301
|
||||||
/docs/getting-started-guides/kargo /docs/getting-started-guides/kubespray 301
|
/docs/getting-started-guides/kargo/ /docs/getting-started-guides/kubespray/ 301
|
||||||
/docs/getting-started-guides/kubeadm /docs/setup/independent/create-cluster-kubeadm 301
|
/docs/getting-started-guides/kubeadm/ /docs/setup/independent/create-cluster-kubeadm/ 301
|
||||||
/docs/getting-started-guides/logging /docs/concepts/cluster-administration/logging 301
|
/docs/getting-started-guides/logging/ /docs/concepts/cluster-administration/logging/ 301
|
||||||
/docs/getting-started-guides/logging-elasticsearch /docs/tasks/debug-application-cluster/logging-elasticsearch-kibana 301
|
/docs/getting-started-guides/logging-elasticsearch/ /docs/tasks/debug-application-cluster/logging-elasticsearch-kibana/ 301
|
||||||
/docs/getting-started-guides/meanstack/ https://medium.com/google-cloud/running-a-mean-stack-on-google-cloud-platform-with-kubernetes-149ca81c2b5d/ 301
|
/docs/getting-started-guides/meanstack/ https://medium.com/google-cloud/running-a-mean-stack-on-google-cloud-platform-with-kubernetes-149ca81c2b5d/ 301
|
||||||
/docs/getting-started-guides/network-policy/calico /docs/tasks/administer-cluster/calico-network-policy 301
|
/docs/getting-started-guides/network-policy/calico/ /docs/tasks/administer-cluster/calico-network-policy/ 301
|
||||||
/docs/getting-started-guides/network-policy/romana /docs/tasks/administer-cluster/romana-network-policy 301
|
/docs/getting-started-guides/network-policy/romana/ /docs/tasks/administer-cluster/romana-network-policy/ 301
|
||||||
/docs/getting-started-guides/network-policy/walkthrough /docs/tasks/administer-cluster/declare-network-policy 301
|
/docs/getting-started-guides/network-policy/walkthrough/ /docs/tasks/administer-cluster/declare-network-policy/ 301
|
||||||
/docs/getting-started-guides/network-policy/weave /docs/tasks/administer-cluster/weave-network-policy 301
|
/docs/getting-started-guides/network-policy/weave/ /docs/tasks/administer-cluster/weave-network-policy/ 301
|
||||||
/docs/getting-started-guides/rackspace /docs/setup/pick-right-solution 301
|
/docs/getting-started-guides/rackspace/ /docs/setup/pick-right-solution/ 301
|
||||||
/docs/getting-started-guides/running-cloud-controller /docs/tasks/administer-cluster/running-cloud-controller 301
|
/docs/getting-started-guides/running-cloud-controller/ /docs/tasks/administer-cluster/running-cloud-controller/ 301
|
||||||
/docs/getting-started-guides/ubuntu-calico /docs/getting-started-guides/ubuntu 301
|
/docs/getting-started-guides/ubuntu-calico/ /docs/getting-started-guides/ubuntu/ 301
|
||||||
/docs/getting-started-guides/ubuntu/automated /docs/getting-started-guides/ubuntu 301
|
/docs/getting-started-guides/ubuntu/automated/ /docs/getting-started-guides/ubuntu/ 301
|
||||||
/docs/getting-started-guides/ubuntu/calico /docs/getting-started-guides/ubuntu/ 301
|
/docs/getting-started-guides/ubuntu/calico/ /docs/getting-started-guides/ubuntu/ 301
|
||||||
/docs/getting-started-guides/vagrant /docs/getting-started-guides/alternatives 301
|
/docs/getting-started-guides/vagrant/ /docs/getting-started-guides/alternatives/ 301
|
||||||
/docs/getting-started-guides/windows/While /docs/getting-started-guides/windows 301
|
/docs/getting-started-guides/windows/While/ /docs/getting-started-guides/windows/ 301
|
||||||
/docs/hellonode /docs/tutorials/stateless-application/hello-minikube 301
|
|
||||||
|
/docs/hellonode/ /docs/tutorials/stateless-application/hello-minikube/ 301
|
||||||
/docs/home/coreos/ /docs/getting-started-guides/coreos/ 301
|
/docs/home/coreos/ /docs/getting-started-guides/coreos/ 301
|
||||||
/docs/home/deprecation-policy/ /docs/reference/deprecation-policy/ 301
|
/docs/home/deprecation-policy/ /docs/reference/deprecation-policy/ 301
|
||||||
/docs/reference/federation/v1beta1/definitions /docs/reference/federation/extensions/v1beta1/definitions 301
|
|
||||||
/docs/reference/federation/v1beta1/operations /docs/reference/federation/extensions/v1beta1/operations 301
|
/docs/reference/federation/v1beta1/definitions/ /docs/reference/federation/extensions/v1beta1/definitions/ 301
|
||||||
/docs/reporting-security-issues /security 301
|
/docs/reference/federation/v1beta1/operations/ /docs/reference/federation/extensions/v1beta1/operations/ 301
|
||||||
|
/docs/reporting-security-issues/ /security/ 301
|
||||||
|
|
||||||
/docs/resources-reference/1_5/* /docs/resources-reference/v1.5/ 301
|
/docs/resources-reference/1_5/* /docs/resources-reference/v1.5/ 301
|
||||||
/docs/resources-reference/1_5/* https://v1-5.docs.kubernetes.io/docs/resources-reference/v1.5/ 301
|
/docs/resources-reference/1_5/* https://v1-5.docs.kubernetes.io/docs/resources-reference/v1.5/ 301
|
||||||
/docs/resources-reference/1_6/* /docs/resources-reference/v1.6/ 301
|
/docs/resources-reference/1_6/* /docs/resources-reference/v1.6/ 301
|
||||||
/docs/resources-reference/1_7/* /docs/resources-reference/v1.7/ 301
|
/docs/resources-reference/1_7/* /docs/resources-reference/v1.7/ 301
|
||||||
/docs/resources-reference/v1.5/node_modules/* https://v1-5.docs.kubernetes.io/docs/resources-reference/v1.5/ 301
|
/docs/resources-reference/v1.5/node_modules/* https://v1-5.docs.kubernetes.io/docs/resources-reference/v1.5/ 301
|
||||||
|
/docs/resources-reference/v1.8/* /docs/api-reference/v1.8/:splat 301
|
||||||
|
|
||||||
/docs/roadmap/ https://github.com/kubernetes/kubernetes/milestones/ 301
|
/docs/roadmap/ https://github.com/kubernetes/kubernetes/milestones/ 301
|
||||||
/docs/samples /docs/tutorials/ 301
|
/docs/samples/ /docs/tutorials/ 301
|
||||||
/docs/stable/user-guide/labels /docs/concepts/overview/working-with-objects/labels 301
|
/docs/stable/user-guide/labels/ /docs/concepts/overview/working-with-objects/labels/ 301
|
||||||
/docs/tasks/access-application-cluster/access-cluster.md /docs/tasks/access-application-cluster/access-cluster 301
|
|
||||||
/docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig /docs/tasks/access-application-cluster/configure-access-multiple-clusters 301
|
/docs/tasks/access-application-cluster/access-cluster.md /docs/tasks/access-application-cluster/access-cluster/ 301
|
||||||
/docs/tasks/access-kubernetes-api/access-kubernetes-api/http-proxy-access-api /docs/tasks/access-kubernetes-api/http-proxy-access-api 301
|
/docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig/ /docs/tasks/access-application-cluster/configure-access-multiple-clusters/ 301
|
||||||
/docs/tasks/administer-cluster/apply-resource-quota-limit /docs/tasks/administer-cluster/quota-api-object 301
|
/docs/tasks/access-kubernetes-api/access-kubernetes-api/http-proxy-access-api/ /docs/tasks/access-kubernetes-api/http-proxy-access-api/ 301
|
||||||
/docs/tasks/administer-cluster/assign-pods-nodes /docs/tasks/configure-pod-container/assign-pods-nodes 301
|
/docs/tasks/administer-cluster/apply-resource-quota-limit/ /docs/tasks/administer-cluster/quota-api-object/ 301
|
||||||
|
/docs/tasks/administer-cluster/assign-pods-nodes/ /docs/tasks/configure-pod-container/assign-pods-nodes/ 301
|
||||||
|
/docs/tasks/administer-cluster/certificate-rotation/ /docs/admin/kubelet-tls-bootstrapping/ 301
|
||||||
/docs/tasks/administer-cluster/configure-namespace-isolation/ /docs/concepts/services-networking/network-policies/ 301
|
/docs/tasks/administer-cluster/configure-namespace-isolation/ /docs/concepts/services-networking/network-policies/ 301
|
||||||
/docs/tasks/administer-cluster/configure-pod-disruption-budget/ /docs/tasks/run-application/configure-pdb/ 301
|
/docs/tasks/administer-cluster/configure-pod-disruption-budget/ /docs/tasks/run-application/configure-pdb/ 301
|
||||||
/docs/tasks/administer-cluster/cpu-management-policies/ /docs/concepts/configuration/manage-compute-resources-container/ 301
|
/docs/tasks/administer-cluster/cpu-memory-limit/ /docs/tasks/administer-cluster/memory-default-namespace/ 301
|
||||||
/docs/tasks/administer-cluster/cpu-memory-limit /docs/tasks/administer-cluster/memory-default-namespace 301
|
|
||||||
/docs/tasks/administer-cluster/default-cpu-request-limit/ /docs/tasks/configure-pod-container/assign-cpu-resource/#specify-a-cpu-request-and-a-cpu-limit/ 301
|
/docs/tasks/administer-cluster/default-cpu-request-limit/ /docs/tasks/configure-pod-container/assign-cpu-resource/#specify-a-cpu-request-and-a-cpu-limit/ 301
|
||||||
/docs/tasks/administer-cluster/default-memory-request-limit/ /docs/tasks/configure-pod-container/assign-memory-resource/#specify-a-memory-request-and-a-memory-limit/ 301
|
/docs/tasks/administer-cluster/default-memory-request-limit/ /docs/tasks/configure-pod-container/assign-memory-resource/#specify-a-memory-request-and-a-memory-limit/ 301
|
||||||
/docs/tasks/administer-cluster/overview /docs/concepts/cluster-administration/cluster-administration-overview 301
|
/docs/tasks/administer-cluster/developing-cloud-controller-manager.md /docs/tasks/administer-cluster/developing-cloud-controller-manager/ 301
|
||||||
/docs/tasks/administer-cluster/reserve-compute-resources/out-of-resource.md /docs/tasks/administer-cluster/out-of-resource 301
|
/docs/tasks/administer-cluster/out-of-resource/memory-available.sh /docs/concepts/cluster-administration/out-of-resource/memory-available.sh 301
|
||||||
/docs/tasks/administer-cluster/share-configuration /docs/tasks/access-application-cluster/configure-access-multiple-clusters 301
|
/docs/tasks/administer-cluster/overview/ /docs/concepts/cluster-administration/cluster-administration-overview/ 301
|
||||||
/docs/tasks/configure-pod-container/apply-resource-quota-limit /docs/tasks/administer-cluster/apply-resource-quota-limit 301
|
/docs/tasks/administer-cluster/reserve-compute-resources/out-of-resource.md /docs/tasks/administer-cluster/out-of-resource/ 301
|
||||||
/docs/tasks/configure-pod-container/assign-cpu-ram-container /docs/tasks/configure-pod-container/assign-memory-resource 301
|
/docs/tasks/administer-cluster/running-cloud-controller.md /docs/tasks/administer-cluster/running-cloud-controller/ 301
|
||||||
/docs/tasks/configure-pod-container/calico-network-policy /docs/tasks/administer-cluster/calico-network-policy 301
|
/docs/tasks/administer-cluster/share-configuration/ /docs/tasks/access-application-cluster/configure-access-multiple-clusters/ 301
|
||||||
|
/docs/tasks/configure-pod-container/apply-resource-quota-limit/ /docs/tasks/administer-cluster/apply-resource-quota-limit/ 301
|
||||||
|
/docs/tasks/configure-pod-container/assign-cpu-ram-container/ /docs/tasks/configure-pod-container/assign-memory-resource/ 301
|
||||||
|
/docs/tasks/configure-pod-container/calico-network-policy/ /docs/tasks/administer-cluster/calico-network-policy/ 301
|
||||||
/docs/tasks/configure-pod-container/cilium-network-policy/ /docs/tasks/administer-cluster/cilium-network-policy/ 301
|
/docs/tasks/configure-pod-container/cilium-network-policy/ /docs/tasks/administer-cluster/cilium-network-policy/ 301
|
||||||
/docs/tasks/configure-pod-container/communicate-containers-same-pod /docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume 301
|
/docs/tasks/configure-pod-container/communicate-containers-same-pod/ /docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/ 301
|
||||||
/docs/tasks/configure-pod-container/configure-pod-disruption-budget /docs/tasks/run-application/configure-pdb 301
|
/docs/tasks/configure-pod-container/configure-pod-disruption-budget/ /docs/tasks/run-application/configure-pdb/ 301
|
||||||
/docs/tasks/configure-pod-container/declare-network-policy /docs/tasks/administer-cluster/declare-network-policy 301
|
/docs/tasks/configure-pod-container/declare-network-policy/ /docs/tasks/administer-cluster/declare-network-policy/ 301
|
||||||
/docs/tasks/configure-pod-container/define-command-argument-container /docs/tasks/inject-data-application/define-command-argument-container 301
|
/docs/tasks/configure-pod-container/define-command-argument-container/ /docs/tasks/inject-data-application/define-command-argument-container/ 301
|
||||||
/docs/tasks/configure-pod-container/define-environment-variable-container /docs/tasks/inject-data-application/define-environment-variable-container 301
|
/docs/tasks/configure-pod-container/define-environment-variable-container/ /docs/tasks/inject-data-application/define-environment-variable-container/ 301
|
||||||
/docs/tasks/configure-pod-container/distribute-credentials-secure /docs/tasks/inject-data-application/distribute-credentials-secure 301
|
/docs/tasks/configure-pod-container/distribute-credentials-secure/ /docs/tasks/inject-data-application/distribute-credentials-secure/ 301
|
||||||
/docs/tasks/configure-pod-container/downward-api-volume-expose-pod-information /docs/tasks/inject-data-application/downward-api-volume-expose-pod-information 301
|
/docs/tasks/configure-pod-container/downward-api-volume-expose-pod-information/ /docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/ 301
|
||||||
/docs/tasks/configure-pod-container/environment-variable-expose-pod-information /docs/tasks/inject-data-application/environment-variable-expose-pod-information 301
|
/docs/tasks/configure-pod-container/environment-variable-expose-pod-information/ /docs/tasks/inject-data-application/environment-variable-expose-pod-information/ 301
|
||||||
/docs/tasks/configure-pod-container/limit-range /docs/tasks/administer-cluster/cpu-memory-limit 301
|
/docs/tasks/configure-pod-container/limit-range/ /docs/tasks/administer-cluster/cpu-memory-limit/ 301
|
||||||
/docs/tasks/configure-pod-container/projected-volume/ /docs/tasks/configure-pod-container/configure-projected-volume-storage/ 301
|
/docs/tasks/configure-pod-container/projected-volume/ /docs/tasks/configure-pod-container/configure-projected-volume-storage/ 301
|
||||||
/docs/tasks/configure-pod-container/romana-network-policy /docs/tasks/administer-cluster/romana-network-policy 301
|
/docs/tasks/configure-pod-container/romana-network-policy/ /docs/tasks/administer-cluster/romana-network-policy/ 301
|
||||||
/docs/tasks/configure-pod-container/weave-network-policy /docs/tasks/administer-cluster/weave-network-policy 301
|
/docs/tasks/configure-pod-container/weave-network-policy/ /docs/tasks/administer-cluster/weave-network-policy/ 301
|
||||||
/docs/tasks/debug-application-cluster/sematext-logging-monitoring https://sematext.com/kubernetes/ 301
|
/docs/tasks/debug-application-cluster/sematext-logging-monitoring/ https://sematext.com/kubernetes/ 301
|
||||||
/docs/tasks/federation/set-up-cluster-federation-kubefed.md /docs/tasks/federation/set-up-cluster-federation-kubefed/ 301
|
/docs/tasks/federation/set-up-cluster-federation-kubefed.md /docs/tasks/federation/set-up-cluster-federation-kubefed/ 301
|
||||||
/docs/tasks/job/work-queue-1 /docs/concepts/workloads/controllers/jobs-run-to-completion 301
|
/docs/tasks/job/work-queue-1/ /docs/concepts/workloads/controllers/jobs-run-to-completion/ 301
|
||||||
/docs/tasks/kubectl/get-shell-running-container /docs/tasks/debug-application-cluster/get-shell-running-container 301
|
/docs/tasks/kubectl/get-shell-running-container/ /docs/tasks/debug-application-cluster/get-shell-running-container/ 301
|
||||||
/docs/tasks/kubectl/install /docs/tasks/tools/install-kubectl 301
|
/docs/tasks/kubectl/install/ /docs/tasks/tools/install-kubectl/ 301
|
||||||
/docs/tasks/kubectl/list-all-running-container-images /docs/tasks/access-application-cluster/list-all-running-container-images 301
|
/docs/tasks/kubectl/list-all-running-container-images/ /docs/tasks/access-application-cluster/list-all-running-container-images/ 301
|
||||||
/docs/tasks/manage-stateful-set/debugging-a-statefulset /docs/tasks/debug-application-cluster/debug-stateful-set 301
|
/docs/tasks/manage-stateful-set/debugging-a-statefulset/ /docs/tasks/debug-application-cluster/debug-stateful-set/ 301
|
||||||
/docs/tasks/manage-stateful-set/delete-pods /docs/tasks/run-application/delete-stateful-set 301
|
/docs/tasks/manage-stateful-set/delete-pods/ /docs/tasks/run-application/delete-stateful-set/ 301
|
||||||
/docs/tasks/manage-stateful-set/deleting-a-statefulset /docs/tasks/run-application/delete-stateful-set 301
|
/docs/tasks/manage-stateful-set/deleting-a-statefulset/ /docs/tasks/run-application/delete-stateful-set/ 301
|
||||||
/docs/tasks/manage-stateful-set/scale-stateful-set /docs/tasks/run-application/scale-stateful-set 301
|
/docs/tasks/manage-stateful-set/scale-stateful-set/ /docs/tasks/run-application/scale-stateful-set/ 301
|
||||||
/docs/tasks/manage-stateful-set/upgrade-pet-set-to-stateful-set /docs/tasks/run-application/upgrade-pet-set-to-stateful-set 301
|
/docs/tasks/manage-stateful-set/upgrade-pet-set-to-stateful-set/ /docs/tasks/run-application/upgrade-pet-set-to-stateful-set/ 301
|
||||||
/docs/tasks/run-application/podpreset /docs/tasks/inject-data-application/podpreset 301
|
/docs/tasks/run-application/podpreset/ /docs/tasks/inject-data-application/podpreset/ 301
|
||||||
/docs/tasks/stateful-sets/deleting-pods/ /docs/tasks/run-application/force-delete-stateful-set-pod/ 301
|
/docs/tasks/stateful-sets/deleting-pods/ /docs/tasks/run-application/force-delete-stateful-set-pod/ 301
|
||||||
/docs/tasks/troubleshoot/debug-init-containers /docs/tasks/debug-application-cluster/debug-init-containers 301
|
/docs/tasks/troubleshoot/debug-init-containers/ /docs/tasks/debug-application-cluster/debug-init-containers/ 301
|
||||||
/docs/tasks/web-ui-dashboard /docs/tasks/access-application-cluster/web-ui-dashboard 301
|
/docs/tasks/web-ui-dashboard/ /docs/tasks/access-application-cluster/web-ui-dashboard/ 301
|
||||||
|
|
||||||
/docs/templatedemos/* /docs/home/contribute/page-templates/ 301
|
/docs/templatedemos/* /docs/home/contribute/page-templates/ 301
|
||||||
/docs/tools/kompose /docs/tools/kompose/user-guide 301
|
/docs/tools/kompose/ /docs/tools/kompose/user-guide/ 301
|
||||||
/docs/troubleshooting/ /docs/tasks/debug-application-cluster/troubleshooting/ 301
|
/docs/troubleshooting/ /docs/tasks/debug-application-cluster/troubleshooting/ 301
|
||||||
/docs/tutorials/clusters/multiple-schedulers /docs/tasks/administer-cluster/configure-multiple-schedulers 301
|
|
||||||
/docs/tutorials/connecting-apps/connecting-frontend-backend /docs/tasks/access-application-cluster/connecting-frontend-backend 301
|
/docs/tutorials/clusters/multiple-schedulers/ /docs/tasks/administer-cluster/configure-multiple-schedulers/ 301
|
||||||
/docs/tutorials/federation/set-up-cluster-federation-kubefed /docs/tasks/federation/set-up-cluster-federation-kubefed 301
|
/docs/tutorials/connecting-apps/connecting-frontend-backend/ /docs/tasks/access-application-cluster/connecting-frontend-backend/ 301
|
||||||
|
/docs/tutorials/federation/set-up-cluster-federation-kubefed/ /docs/tasks/federation/set-up-cluster-federation-kubefed/ 301
|
||||||
/docs/tutorials/federation/set-up-cluster-federation-kubefed.md /docs/tasks/federation/set-up-cluster-federation-kubefed/ 301
|
/docs/tutorials/federation/set-up-cluster-federation-kubefed.md /docs/tasks/federation/set-up-cluster-federation-kubefed/ 301
|
||||||
/docs/tutorials/federation/set-up-coredns-provider-federation /docs/tasks/federation/set-up-coredns-provider-federation 301
|
/docs/tutorials/federation/set-up-coredns-provider-federation/ /docs/tasks/federation/set-up-coredns-provider-federation/ 301
|
||||||
/docs/tutorials/federation/set-up-placement-policies-federation /docs/tasks/federation/set-up-placement-policies-federation 301
|
/docs/tutorials/federation/set-up-placement-policies-federation/ /docs/tasks/federation/set-up-placement-policies-federation/ 301
|
||||||
/docs/tutorials/getting-started/cluster-intro /docs/tutorials/kubernetes-basics/cluster-intro 301
|
/docs/tutorials/getting-started/cluster-intro/ /docs/tutorials/kubernetes-basics/cluster-intro/ 301
|
||||||
/docs/tutorials/getting-started/create-cluster /docs/tutorials/kubernetes-basics/cluster-intro 301
|
/docs/tutorials/getting-started/create-cluster/ /docs/tutorials/kubernetes-basics/cluster-intro/ 301
|
||||||
/docs/tutorials/getting-started/expose-intro /docs/tutorials/kubernetes-basics/expose-intro 301
|
/docs/tutorials/getting-started/expose-intro/ /docs/tutorials/kubernetes-basics/expose-intro/ 301
|
||||||
/docs/tutorials/getting-started/scale-app /docs/tutorials/kubernetes-basics/scale-interactive 301
|
/docs/tutorials/getting-started/scale-app/ /docs/tutorials/kubernetes-basics/scale-interactive/ 301
|
||||||
/docs/tutorials/getting-started/scale-intro /docs/tutorials/kubernetes-basics/scale-intro 301
|
/docs/tutorials/getting-started/scale-intro/ /docs/tutorials/kubernetes-basics/scale-intro/ 301
|
||||||
/docs/tutorials/getting-started/update-interactive /docs/tutorials/kubernetes-basics/update-interactive 301
|
/docs/tutorials/getting-started/update-interactive/ /docs/tutorials/kubernetes-basics/update-interactive/ 301
|
||||||
/docs/tutorials/getting-started/update-intro /docs/tutorials/kubernetes-basics/ 301
|
/docs/tutorials/getting-started/update-intro/ /docs/tutorials/kubernetes-basics/ 301
|
||||||
/docs/tutorials/stateful-application/run-replicated-stateful-application /docs/tasks/run-application/run-replicated-stateful-application 301
|
/docs/tutorials/stateful-application/run-replicated-stateful-application/ /docs/tasks/run-application/run-replicated-stateful-application/ 301
|
||||||
/docs/tutorials/stateful-application/run-stateful-application /docs/tasks/run-application/run-single-instance-stateful-application 301
|
/docs/tutorials/stateful-application/run-stateful-application/ /docs/tasks/run-application/run-single-instance-stateful-application/ 301
|
||||||
/docs/tutorials/stateless-application/expose-external-ip-address-service /docs/tasks/access-application-cluster/service-access-application-cluster 301
|
/docs/tutorials/stateless-application/expose-external-ip-address-service/ /docs/tasks/access-application-cluster/service-access-application-cluster/ 301
|
||||||
/docs/tutorials/stateless-application/run-stateless-ap-replication-controller /docs/tasks/run-application/run-stateless-application-deployment 301
|
/docs/tutorials/stateless-application/run-stateless-ap-replication-controller/ /docs/tasks/run-application/run-stateless-application-deployment/ 301
|
||||||
/docs/tutorials/stateless-application/run-stateless-application-deployment /docs/tasks/run-application/run-stateless-application-deployment 301
|
/docs/tutorials/stateless-application/run-stateless-application-deployment/ /docs/tasks/run-application/run-stateless-application-deployment/ 301
|
||||||
/docs/user-guide /docs/home/ 301
|
/docs/tutorials/tasks/set-up-cluster-federation-kubefed/ /docs/tasks/federation/set-up-cluster-federation-kubefed/ 301
|
||||||
/docs/user-guide/accessing-the-cluster /docs/tasks/access-application-cluster/access-cluster 301
|
|
||||||
/docs/user-guide/add-entries-to-pod-etc-hosts-with-host-aliases /docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases 301
|
/docs/user-guide/ /docs/home/ 301
|
||||||
/docs/user-guide/annotations /docs/concepts/overview/working-with-objects/annotations 301
|
/docs/user-guide/accessing-the-cluster/ /docs/tasks/access-application-cluster/access-cluster/ 301
|
||||||
/docs/user-guide/application-troubleshooting /docs/tasks/debug-application-cluster/debug-application 301
|
/docs/user-guide/add-entries-to-pod-etc-hosts-with-host-aliases/ /docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ 301
|
||||||
/docs/user-guide/compute-resources /docs/concepts/configuration/manage-compute-resources-container 301
|
/docs/user-guide/annotations/ /docs/concepts/overview/working-with-objects/annotations/ 301
|
||||||
/docs/user-guide/config-best-practices /docs/concepts/configuration/overview 301
|
/docs/user-guide/application-troubleshooting/ /docs/tasks/debug-application-cluster/debug-application/ 301
|
||||||
/docs/user-guide/configmap /docs/tasks/configure-pod-container/configmap 301
|
/docs/user-guide/compute-resources/ /docs/concepts/configuration/manage-compute-resources-container/ 301
|
||||||
/docs/user-guide/configuring-containers /docs/tasks/ 301
|
/docs/user-guide/config-best-practices/ /docs/concepts/configuration/overview/ 301
|
||||||
/docs/user-guide/connecting-applications /docs/concepts/services-networking/connect-applications-service 301
|
/docs/user-guide/configmap/ /docs/tasks/configure-pod-container/configmap/ 301
|
||||||
/docs/user-guide/connecting-to-applications-port-forward /docs/tasks/access-application-cluster/port-forward-access-application-cluster 301
|
/docs/user-guide/configmap/README/ /docs/tasks/configure-pod-container/configure-pod-configmap/ 301
|
||||||
/docs/user-guide/connecting-to-applications-proxy /docs/tasks/access-kubernetes-api/http-proxy-access-api 301
|
/docs/user-guide/configuring-containers/ /docs/tasks/configure-pod-container/configmap/ 301
|
||||||
/docs/user-guide/container-environment /docs/concepts/containers/container-lifecycle-hooks 301
|
/docs/user-guide/connecting-applications/ /docs/concepts/services-networking/connect-applications-service/ 301
|
||||||
/docs/user-guide/containers /docs/tasks/inject-data-application/define-command-argument-container 301
|
/docs/user-guide/connecting-to-applications-port-forward/ /docs/tasks/access-application-cluster/port-forward-access-application-cluster/ 301
|
||||||
/docs/user-guide/cron-jobs /docs/concepts/workloads/controllers/cron-jobs 301
|
/docs/user-guide/connecting-to-applications-proxy/ /docs/tasks/access-kubernetes-api/http-proxy-access-api/ 301
|
||||||
/docs/user-guide/debugging-pods-and-replication-controllers/ /docs/tasks/debug-application-cluster/debug-pod-replication-controller/ 301
|
/docs/user-guide/container-environment/ /docs/concepts/containers/container-lifecycle-hooks/ 301
|
||||||
/docs/user-guide/debugging-services /docs/tasks/debug-application-cluster/debug-service 301
|
/docs/user-guide/containers/ /docs/tasks/inject-data-application/define-command-argument-container/ 301
|
||||||
/docs/user-guide/deploying-applications /docs/tasks/run-application/run-stateless-application-deployment 301
|
/docs/user-guide/cron-jobs/ /docs/concepts/workloads/controllers/cron-jobs/ 301
|
||||||
/docs/user-guide/deployments /docs/concepts/workloads/controllers/deployment 301
|
/docs/user-guide/debugging-pods-and-replication-controllers/ /docs/tasks/debug-application-cluster/debug-pod-replication-controller/ 301
|
||||||
/docs/user-guide/downward-api /docs/tasks/inject-data-application/downward-api-volume-expose-pod-information 301
|
/docs/user-guide/debugging-services/ /docs/tasks/debug-application-cluster/debug-service/ 301
|
||||||
/docs/user-guide/downward-api/volume /docs/tasks/inject-data-application/downward-api-volume-expose-pod-information 301
|
/docs/user-guide/deploying-applications/ /docs/tasks/run-application/run-stateless-application-deployment/ 301
|
||||||
/docs/user-guide/environment-guide /docs/tasks/inject-data-application/environment-variable-expose-pod-information 301
|
/docs/user-guide/deployments/ /docs/concepts/workloads/controllers/deployment/ 301
|
||||||
/docs/user-guide/federation /docs/concepts/cluster-administration/federation 301
|
/docs/user-guide/docker-cli-to-kubectl/ /docs/reference/kubectl/docker-cli-to-kubectl/
|
||||||
/docs/user-guide/federation/cluster /docs/tasks/administer-federation/cluster 301
|
/docs/user-guide/downward-api/ /docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/ 301
|
||||||
/docs/user-guide/federation/configmap /docs/tasks/administer-federation/configmap 301
|
/docs/user-guide/downward-api/README/ /docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/ 301
|
||||||
/docs/user-guide/federation/daemonsets /docs/tasks/administer-federation/daemonset 301
|
/docs/user-guide/downward-api/volume/ /docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/ 301
|
||||||
/docs/user-guide/federation/deployment /docs/tasks/administer-federation/deployment 301
|
/docs/user-guide/environment-guide/ /docs/tasks/inject-data-application/environment-variable-expose-pod-information/ 301
|
||||||
/docs/user-guide/federation/events /docs/tasks/administer-federation/events 301
|
/docs/user-guide/federation/ /docs/concepts/cluster-administration/federation/ 301
|
||||||
/docs/user-guide/federation/federated-ingress /docs/tasks/administer-federation/ingress 301
|
/docs/user-guide/federation/cluster/ /docs/tasks/administer-federation/cluster/ 301
|
||||||
/docs/user-guide/federation/federated-services /docs/tasks/federation/federation-service-discovery 301
|
/docs/user-guide/federation/configmap/ /docs/tasks/administer-federation/configmap/ 301
|
||||||
/docs/user-guide/federation/namespaces /docs/tasks/administer-federation/namespaces 301
|
/docs/user-guide/federation/configmap.md /docs/tasks/administer-federation/configmap/ 301
|
||||||
/docs/user-guide/federation/replicasets /docs/tasks/administer-federation/replicaset 301
|
/docs/user-guide/federation/daemonsets/ /docs/tasks/administer-federation/daemonset/ 301
|
||||||
/docs/user-guide/federation/secrets /docs/tasks/administer-federation/secret 301
|
/docs/user-guide/federation/daemonsets.md /docs/tasks/administer-federation/daemonset/ 301
|
||||||
/docs/user-guide/garbage-collection /docs/concepts/workloads/controllers/garbage-collection 301
|
/docs/user-guide/federation/deployment/ /docs/tasks/administer-federation/deployment/ 301
|
||||||
|
/docs/user-guide/federation/deployment.md /docs/tasks/administer-federation/deployment/ 301
|
||||||
|
/docs/user-guide/federation/events/ /docs/tasks/administer-federation/events/ 301
|
||||||
|
/docs/user-guide/federation/federated-ingress/ /docs/tasks/administer-federation/ingress/ 301
|
||||||
|
/docs/user-guide/federation/federated-services/ /docs/tasks/federation/federation-service-discovery/ 301
|
||||||
|
/docs/user-guide/federation/index.md /docs/concepts/cluster-administration/federation/ 301
|
||||||
|
/docs/user-guide/federation/namespaces/ /docs/tasks/administer-federation/namespaces/ 301
|
||||||
|
/docs/user-guide/federation/replicasets/ /docs/tasks/administer-federation/replicaset/ 301
|
||||||
|
/docs/user-guide/federation/secrets/ /docs/tasks/administer-federation/secret/ 301
|
||||||
|
/docs/user-guide/garbage-collection/ /docs/concepts/workloads/controllers/garbage-collection/ 301
|
||||||
/docs/user-guide/garbage-collector/* /docs/concepts/workloads/controllers/garbage-collection/ 301
|
/docs/user-guide/garbage-collector/* /docs/concepts/workloads/controllers/garbage-collection/ 301
|
||||||
/docs/user-guide/getting-into-containers /docs/tasks/debug-application-cluster/get-shell-running-container 301
|
/docs/user-guide/getting-into-containers/ /docs/tasks/debug-application-cluster/get-shell-running-container/ 301
|
||||||
/docs/user-guide/gpus /docs/tasks/manage-gpus/scheduling-gpus 301
|
/docs/user-guide/gpus/ /docs/tasks/manage-gpus/scheduling-gpus/ 301
|
||||||
/docs/user-guide/horizontal-pod-autoscaler/* /docs/tasks/run-application/horizontal-pod-autoscale/ 301
|
/docs/user-guide/horizontal-pod-autoscaler/* /docs/tasks/run-application/horizontal-pod-autoscale/ 301
|
||||||
/docs/user-guide/horizontal-pod-autoscaling /docs/tasks/run-application/horizontal-pod-autoscale 301
|
/docs/user-guide/horizontal-pod-autoscaling/ /docs/tasks/run-application/horizontal-pod-autoscale/ 301
|
||||||
/docs/user-guide/horizontal-pod-autoscaling/walkthrough /docs/tasks/run-application/horizontal-pod-autoscale-walkthrough 301
|
/docs/user-guide/horizontal-pod-autoscaling/walkthrough/ /docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/ 301
|
||||||
/docs/user-guide/horizontal-pod-autoscaling/walkthrough.md /docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/ 301
|
/docs/user-guide/horizontal-pod-autoscaling/walkthrough.md /docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/ 301
|
||||||
/docs/user-guide/identifiers /docs/concepts/overview/working-with-objects/names 301
|
/docs/user-guide/identifiers/ /docs/concepts/overview/working-with-objects/names/ 301
|
||||||
/docs/user-guide/images /docs/concepts/containers/images 301
|
/docs/user-guide/images/ /docs/concepts/containers/images/ 301
|
||||||
/docs/user-guide/ingress /docs/concepts/services-networking/ingress 301
|
/docs/user-guide/ingress/ /docs/concepts/services-networking/ingress/ 301
|
||||||
/docs/user-guide/ingress.md /docs/concepts/services-networking/ingress 301
|
/docs/user-guide/ingress.md /docs/concepts/services-networking/ingress/ 301
|
||||||
/docs/user-guide/introspection-and-debugging /docs/tasks/debug-application-cluster/debug-application-introspection 301
|
/docs/user-guide/introspection-and-debugging/ /docs/tasks/debug-application-cluster/debug-application-introspection/ 301
|
||||||
/docs/user-guide/jobs /docs/concepts/workloads/controllers/jobs-run-to-completion 301
|
/docs/user-guide/jsonpath/ /docs/reference/kubectl/jsonpath/
|
||||||
/docs/user-guide/jobs/expansions /docs/tasks/job/parallel-processing-expansion 301
|
/docs/user-guide/jobs/ /docs/concepts/workloads/controllers/jobs-run-to-completion/ 301
|
||||||
/docs/user-guide/jobs/work-queue-1 /docs/tasks/job/coarse-parallel-processing-work-queue/ 301
|
/docs/user-guide/jobs/expansions/ /docs/tasks/job/parallel-processing-expansion/ 301
|
||||||
/docs/user-guide/jobs/work-queue-2 /docs/tasks/job/fine-parallel-processing-work-queue/ 301
|
/docs/user-guide/jobs/work-queue-1/ /docs/tasks/job/coarse-parallel-processing-work-queue/ 301
|
||||||
/docs/user-guide/kubeconfig-file /docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig 301
|
/docs/user-guide/jobs/work-queue-2/ /docs/tasks/job/fine-parallel-processing-work-queue/ 301
|
||||||
|
/docs/user-guide/kubeconfig-file/ /docs/tasks/access-application-cluster/authenticate-across-clusters-kubeconfig/ 301
|
||||||
|
/docs/user-guide/kubectl-overview/ /docs/reference/kubectl/overview/
|
||||||
|
/docs/user-guide/kubectl/ /docs/reference/generated/kubectl/kubectl-options/
|
||||||
|
/docs/user-guide/kubectl/v1.8/ /docs/reference/generated/kubectl/kubectl-commands/
|
||||||
|
/docs/user-guide/kubectl-conventions/ /docs/reference/kubectl/conventions/
|
||||||
|
/docs/user-guide/kubectl-cheatsheet/ /docs/reference/kubectl/cheatsheet/
|
||||||
/docs/user-guide/kubectl/1_5/* https://v1-5.docs.kubernetes.io/docs/user-guide/kubectl/v1.5/ 301
|
/docs/user-guide/kubectl/1_5/* https://v1-5.docs.kubernetes.io/docs/user-guide/kubectl/v1.5/ 301
|
||||||
/docs/user-guide/kubectl/kubectl_*/ /docs/user-guide/kubectl/v1.7/#:splat 200
|
/docs/user-guide/kubectl/kubectl_*/ /docs/user-guide/kubectl/v1.7/#:splat 301
|
||||||
/docs/user-guide/kubectl/v1.5/node_modules/* https://v1-5.docs.kubernetes.io/docs/user-guide/kubectl/v1.5/ 301
|
/docs/user-guide/kubectl/v1.5/node_modules/* https://v1-5.docs.kubernetes.io/docs/user-guide/kubectl/v1.5/ 301
|
||||||
/docs/user-guide/kubectl/v1.6/node_modules/* https://v1-6.docs.kubernetes.io/docs/user-guide/kubectl/v1.6/ 301
|
/docs/user-guide/kubectl/v1.6/node_modules/* https://v1-6.docs.kubernetes.io/docs/user-guide/kubectl/v1.6/ 301
|
||||||
/docs/user-guide/labels /docs/concepts/overview/working-with-objects/labels 301
|
/docs/user-guide/labels/ /docs/concepts/overview/working-with-objects/labels/ 301
|
||||||
/docs/user-guide/liveness /docs/tasks/configure-pod-container/configure-liveness-readiness-probes 301
|
/docs/user-guide/liveness/ /docs/tasks/configure-pod-container/configure-liveness-readiness-probes/ 301
|
||||||
/docs/user-guide/load-balancer /docs/tasks/access-application-cluster/create-external-load-balancer 301
|
/docs/user-guide/load-balancer/ /docs/tasks/access-application-cluster/create-external-load-balancer/ 301
|
||||||
/docs/user-guide/logging/ /docs/concepts/cluster-administration/logging/ 301
|
/docs/user-guide/logging/ /docs/concepts/cluster-administration/logging/ 301
|
||||||
/docs/user-guide/logging/elasticsearch /docs/tasks/debug-application-cluster/logging-elasticsearch-kibana 301
|
/docs/user-guide/logging/elasticsearch/ /docs/tasks/debug-application-cluster/logging-elasticsearch-kibana/ 301
|
||||||
/docs/user-guide/logging/overview /docs/concepts/cluster-administration/logging 301
|
/docs/user-guide/logging/overview/ /docs/concepts/cluster-administration/logging/ 301
|
||||||
/docs/user-guide/logging/stackdriver /docs/tasks/debug-application-cluster/logging-stackdriver 301
|
/docs/user-guide/logging/stackdriver/ /docs/tasks/debug-application-cluster/logging-stackdriver/ 301
|
||||||
/docs/user-guide/managing-deployments /docs/concepts/cluster-administration/manage-deployment 301
|
/docs/user-guide/managing-deployments/ /docs/concepts/cluster-administration/manage-deployment/ 301
|
||||||
/docs/user-guide/monitoring /docs/tasks/debug-application-cluster/resource-usage-monitoring 301
|
/docs/user-guide/monitoring/ /docs/tasks/debug-application-cluster/resource-usage-monitoring/ 301
|
||||||
/docs/user-guide/namespaces /docs/concepts/overview/working-with-objects/namespaces 301
|
/docs/user-guide/namespaces/ /docs/concepts/overview/working-with-objects/namespaces/ 301
|
||||||
/docs/user-guide/networkpolicies /docs/concepts/services-networking/network-policies 301
|
/docs/user-guide/networkpolicies/ /docs/concepts/services-networking/network-policies/ 301
|
||||||
/docs/user-guide/node-selection /docs/concepts/configuration/assign-pod-node 301
|
/docs/user-guide/node-selection/ /docs/concepts/configuration/assign-pod-node/ 301
|
||||||
|
/docs/user-guide/node-selection/README /docs/concepts/configuration/assign-pod-node/ 301
|
||||||
/docs/user-guide/overview/ /docs/concepts/overview/what-is-kubernetes/ 301
|
/docs/user-guide/overview/ /docs/concepts/overview/what-is-kubernetes/ 301
|
||||||
/docs/user-guide/persistent-volumes /docs/concepts/storage/persistent-volumes 301
|
/docs/user-guide/persistent-volumes/ /docs/concepts/storage/persistent-volumes/ 301
|
||||||
/docs/user-guide/persistent-volumes/index /docs/concepts/storage/persistent-volumes/ 301
|
/docs/user-guide/persistent-volumes/index /docs/concepts/storage/persistent-volumes/ 301
|
||||||
/docs/user-guide/persistent-volumes/index.md /docs/concepts/storage/persistent-volumes/ 301
|
/docs/user-guide/persistent-volumes/index.md /docs/concepts/storage/persistent-volumes/ 301
|
||||||
/docs/user-guide/persistent-volumes/walkthrough /docs/tasks/configure-pod-container/configure-persistent-volume-storage 301
|
/docs/user-guide/persistent-volumes/walkthrough/ /docs/tasks/configure-pod-container/configure-persistent-volume-storage/ 301
|
||||||
/docs/user-guide/petset /docs/concepts/workloads/controllers/statefulset 301
|
/docs/user-guide/petset/ /docs/concepts/workloads/controllers/statefulset/ 301
|
||||||
/docs/user-guide/petset/bootstrapping /docs/concepts/workloads/controllers/statefulset 301
|
/docs/user-guide/petset/bootstrapping/ /docs/concepts/workloads/controllers/statefulset/ 301
|
||||||
/docs/user-guide/pod-preset/ /docs/tasks/inject-data-application/podpreset 301
|
/docs/user-guide/pod-preset/ /docs/tasks/inject-data-application/podpreset/ 301
|
||||||
/docs/user-guide/pod-security-policy/ /docs/concepts/policy/pod-security-policy 301
|
/docs/user-guide/pod-security-policy/ /docs/concepts/policy/pod-security-policy/ 301
|
||||||
/docs/user-guide/pod-states /docs/concepts/workloads/pods/pod-lifecycle 301
|
/docs/user-guide/pod-states/ /docs/concepts/workloads/pods/pod-lifecycle/ 301
|
||||||
/docs/user-guide/pod-templates /docs/concepts/workloads/pods/pod-overview 301
|
/docs/user-guide/pod-templates/ /docs/concepts/workloads/pods/pod-overview/ 301
|
||||||
/docs/user-guide/pods /docs/concepts/workloads/pods/pod 301
|
/docs/user-guide/pods/ /docs/concepts/workloads/pods/pod/ 301
|
||||||
/docs/user-guide/pods/init-container /docs/concepts/workloads/pods/init-containers 301
|
/docs/user-guide/pods/init-container/ /docs/concepts/workloads/pods/init-containers/ 301
|
||||||
/docs/user-guide/pods/multi-container /docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume 301
|
/docs/user-guide/pods/multi-container/ /docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/ 301
|
||||||
/docs/user-guide/pods/single-container /docs/tasks/run-application/run-stateless-application-deployment 301
|
/docs/user-guide/pods/single-container/ /docs/tasks/run-application/run-stateless-application-deployment/ 301
|
||||||
/docs/user-guide/prereqs /docs/tasks/tools/install-kubectl 301
|
/docs/user-guide/prereqs/ /docs/tasks/tools/install-kubectl/ 301
|
||||||
/docs/user-guide/production-pods /docs/tasks/ 301
|
/docs/user-guide/production-pods/ /docs/tasks/ 301
|
||||||
/docs/user-guide/projected-volume /docs/tasks/configure-pod-container/configure-projected-volume-storage 301
|
/docs/user-guide/projected-volume/ /docs/tasks/configure-pod-container/configure-projected-volume-storage/ 301
|
||||||
/docs/user-guide/quick-start /docs/tasks/access-application-cluster/service-access-application-cluster 301
|
/docs/user-guide/quick-start/ /docs/tasks/access-application-cluster/service-access-application-cluster/ 301
|
||||||
/docs/user-guide/replicasets /docs/concepts/workloads/controllers/replicaset 301
|
/docs/user-guide/replicasets/ /docs/concepts/workloads/controllers/replicaset/ 301
|
||||||
/docs/user-guide/replication-controller /docs/concepts/workloads/controllers/replicationcontroller 301
|
/docs/user-guide/replication-controller/ /docs/concepts/workloads/controllers/replicationcontroller/ 301
|
||||||
/docs/user-guide/replication-controller/operations /docs/concepts/workloads/controllers/replicationcontroller 301
|
/docs/user-guide/replication-controller/operations/ /docs/concepts/workloads/controllers/replicationcontroller/ 301
|
||||||
/docs/user-guide/resizing-a-replication-controller /docs/concepts/workloads/controllers/replicationcontroller 301
|
/docs/user-guide/resizing-a-replication-controller/ /docs/concepts/workloads/controllers/replicationcontroller/ 301
|
||||||
/docs/user-guide/rolling-updates /docs/tasks/run-application/rolling-update-replication-controller 301
|
/docs/user-guide/rolling-updates/ /docs/tasks/run-application/rolling-update-replication-controller/ 301
|
||||||
/docs/user-guide/scheduled-jobs /docs/concepts/workloads/controllers/cron-jobs 301
|
/docs/user-guide/scheduled-jobs/ /docs/concepts/workloads/controllers/cron-jobs/ 301
|
||||||
/docs/user-guide/secrets /docs/concepts/configuration/secret 301
|
/docs/user-guide/secrets/ /docs/concepts/configuration/secret/ 301
|
||||||
/docs/user-guide/secrets/walkthrough /docs/tasks/inject-data-application/distribute-credentials-secure 301
|
/docs/user-guide/secrets/walkthrough/ /docs/tasks/inject-data-application/distribute-credentials-secure/ 301
|
||||||
/docs/user-guide/security-context /docs/tasks/configure-pod-container/security-context 301
|
/docs/user-guide/security-context/ /docs/tasks/configure-pod-container/security-context/ 301
|
||||||
/docs/user-guide/service-accounts /docs/tasks/configure-pod-container/configure-service-account 301
|
/docs/user-guide/service-accounts/ /docs/tasks/configure-pod-container/configure-service-account/ 301
|
||||||
/docs/user-guide/service-accounts/working-with-resources/ /docs/tutorials/object-management-kubectl/object-management/ 301
|
/docs/user-guide/service-accounts/working-with-resources/ /docs/tutorials/object-management-kubectl/object-management/ 301
|
||||||
/docs/user-guide/services /docs/concepts/services-networking/service 301
|
/docs/user-guide/services/ /docs/concepts/services-networking/service/ 301
|
||||||
/docs/user-guide/services-firewalls /docs/tasks/access-application-cluster/configure-cloud-provider-firewall 301
|
/docs/user-guide/services-firewalls/ /docs/tasks/access-application-cluster/configure-cloud-provider-firewall/ 301
|
||||||
/docs/user-guide/services/operations /docs/tasks/access-application-cluster/connecting-frontend-backend 301
|
/docs/user-guide/services/operations/ /docs/tasks/access-application-cluster/connecting-frontend-backend/ 301
|
||||||
/docs/user-guide/sharing-clusters /docs/tasks/administer-cluster/share-configuration 301
|
/docs/user-guide/sharing-clusters/ /docs/tasks/administer-cluster/share-configuration/ 301
|
||||||
/docs/user-guide/simple-nginx /docs/tasks/run-application/run-stateless-application-deployment 301
|
/docs/user-guide/simple-nginx/ /docs/tasks/run-application/run-stateless-application-deployment/ 301
|
||||||
/docs/user-guide/StatefulSet/ /docs/concepts/workloads/controllers/statefulset/ 301
|
/docs/user-guide/StatefulSet/ /docs/concepts/workloads/controllers/statefulset/ 301
|
||||||
/docs/user-guide/thirdpartyresources /docs/tasks/access-kubernetes-api/extend-api-third-party-resource 301
|
/docs/user-guide/thirdpartyresources/ /docs/tasks/access-kubernetes-api/extend-api-third-party-resource/ 301
|
||||||
/docs/user-guide/ui /docs/tasks/access-application-cluster/web-ui-dashboard 301
|
/docs/user-guide/ui/ /docs/tasks/access-application-cluster/web-ui-dashboard/ 301
|
||||||
/docs/user-guide/ui-access/ /docs/tasks/access-application-cluster/web-ui-dashboard/ 301
|
/docs/user-guide/ui-access/ /docs/tasks/access-application-cluster/web-ui-dashboard/ 301
|
||||||
/docs/user-guide/update-dem/ /docs/tasks/run-application/rolling-update-replication-controller/ 301
|
/docs/user-guide/update-dem/ /docs/tasks/run-application/rolling-update-replication-controller/ 301
|
||||||
/docs/user-guide/update-demo /docs/tasks/run-application/rolling-update-replication-controller 301
|
/docs/user-guide/update-demo/ /docs/tasks/run-application/rolling-update-replication-controller/ 301
|
||||||
/docs/user-guide/volumes /docs/concepts/storage/volumes 301
|
/docs/user-guide/volumes/ /docs/concepts/storage/volumes/ 301
|
||||||
/docs/user-guide/working-with-resources /docs/tutorials/object-management-kubectl/object-management 301
|
|
||||||
/docs/whatisk8s /docs/concepts/overview/what-is-kubernetes 301
|
/docs/user-guide/working-with-resources/ /docs/tutorials/object-management-kubectl/object-management/ 301
|
||||||
|
|
||||||
|
/docs/whatisk8s/ /docs/concepts/overview/what-is-kubernetes/ 301
|
||||||
|
/events/ /docs/community 301
|
||||||
/gettingstarted/ /docs/home/ 301
|
/gettingstarted/ /docs/home/ 301
|
||||||
/horizontal-pod-autoscaler/ /docs/tasks/run-application/horizontal-pod-autoscale/ 301
|
/horizontal-pod-autoscaler/ /docs/tasks/run-application/horizontal-pod-autoscale/ 301
|
||||||
/kubernetes /docs/ 301
|
/kubernetes/ /docs/ 301
|
||||||
/kubernetes-bootcamp/* /docs/tutorials/kubernetes-basics/ 301
|
/kubernetes-bootcamp/* /docs/tutorials/kubernetes-basics/ 301
|
||||||
/kubernetes/swagger-spec https://github.com/kubernetes/kubernetes/tree/master/api/swagger-spec 301
|
/kubernetes/swagger-spec/ https://github.com/kubernetes/kubernetes/tree/master/api/swagger-spec/ 301
|
||||||
/kubernetes/third_party/swagger-ui/ /docs/reference/ 301
|
/kubernetes/third_party/swagger-ui/ /docs/reference/ 301
|
||||||
/latest/docs/ /docs/home/ 301
|
/latest/docs/ /docs/home/ 301
|
||||||
|
/media/ /docs/community 301
|
||||||
|
/news/ /docs/community 301
|
||||||
/resource-quota/ /docs/concepts/policy/resource-quotas/ 301
|
/resource-quota/ /docs/concepts/policy/resource-quotas/ 301
|
||||||
/serviceaccount/token /docs/tasks/configure-pod-container/configure-service-account 301
|
/serviceaccount/token/ /docs/tasks/configure-pod-container/configure-service-account/ 301
|
||||||
/swagger-spec/* https://github.com/kubernetes/kubernetes/tree/master/api/swagger-spec/ 301
|
/swagger-spec/* https://github.com/kubernetes/kubernetes/tree/master/api/swagger-spec/ 301
|
||||||
/third_party/swagger-ui/* /docs/reference/ 301
|
/third_party/swagger-ui/* /docs/reference/ 301
|
||||||
/v1.1/docs/admin/networking.html /docs/concepts/cluster-administration/networking 301
|
/v1.1/docs/admin/networking.html /docs/concepts/cluster-administration/networking/ 301
|
||||||
/v1.1/docs/getting-started-guides /docs/tutorials/kubernetes-basics/ 301
|
/v1.1/docs/getting-started-guides/ /docs/tutorials/kubernetes-basics/ 301
|
||||||
|
|
||||||
|
https://kubernetes-io-v1-7.netlify.com/* https://v1-7.docs.kubernetes.io/"splat 301
|
||||||
|
|
||||||
|
/docs/admin/cloud-controller-manager/ /docs/reference/generated/cloud-controller-manager/ 301
|
||||||
|
/docs/admin/kube-apiserver/ /docs/reference/generated/kube-apiserver/ 301
|
||||||
|
/docs/admin/kube-controller-manager/ /docs/reference/generated/kube-controller-manager/ 301
|
||||||
|
/docs/admin/kube-proxy/ /docs/reference/generated/kube-proxy/ 301
|
||||||
|
/docs/admin/kube-scheduler/ /docs/reference/generated/kube-scheduler/ 301
|
||||||
|
/docs/admin/kube-scheduler/ /docs/reference/generated/kube-scheduler/ 301
|
||||||
|
/docs/admin/kubeadm/ /docs/reference/generated/kubeadm/ 301
|
||||||
|
/docs/admin/kubelet/ /docs/reference/generated/kubelet/ 301
|
||||||
|
/docs/admin/federation-controller-manager/ /docs/reference/generated/federation-controller-manager/ 301
|
||||||
|
/docs/admin/federation-apiserver/ /docs/reference/generated/federation-apiserver/ 301
|
||||||
|
/docs/admin/kubefed/ /docs/reference/generated/kubefed/ 301
|
||||||
|
/docs/admin/kubefed_init/ /docs/reference/generated/kubefed_init/ 301
|
||||||
|
/docs/admin/kubefed_join/ /docs/reference/generated/kubefed_join/ 301
|
||||||
|
/docs/admin/kubefed_options/ /docs/reference/generated/kubefed_options/ 301
|
||||||
|
/docs/admin/kubefed_unjoin/ /docs/reference/generated/kubefed_unjoin/ 301
|
||||||
|
/docs/admin/kubefed_version/ /docs/reference/generated/kubefed_version/ 301
|
||||||
|
|||||||
+33
-23
@@ -379,12 +379,12 @@ ul.global-nav
|
|||||||
width: 100%
|
width: 100%
|
||||||
background-color: transparentize(white, 0.9)
|
background-color: transparentize(white, 0.9)
|
||||||
content: ''
|
content: ''
|
||||||
|
|
||||||
&.no-sub
|
&.no-sub
|
||||||
|
|
||||||
h5
|
h5
|
||||||
display: none
|
display: none
|
||||||
|
|
||||||
h1
|
h1
|
||||||
margin-bottom: 20px
|
margin-bottom: 20px
|
||||||
|
|
||||||
@@ -478,12 +478,12 @@ footer
|
|||||||
display: block
|
display: block
|
||||||
height: 0
|
height: 0
|
||||||
overflow: hidden
|
overflow: hidden
|
||||||
|
|
||||||
&.button
|
&.button
|
||||||
background-image: none
|
background-image: none
|
||||||
width: auto
|
width: auto
|
||||||
height: auto
|
height: auto
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
color: $blue
|
color: $blue
|
||||||
|
|
||||||
@@ -572,7 +572,7 @@ section
|
|||||||
height: 44px
|
height: 44px
|
||||||
line-height: 44px
|
line-height: 44px
|
||||||
position: relative
|
position: relative
|
||||||
|
|
||||||
&:before
|
&:before
|
||||||
position: absolute
|
position: absolute
|
||||||
width: 15px
|
width: 15px
|
||||||
@@ -829,7 +829,7 @@ dd
|
|||||||
|
|
||||||
h1,h2
|
h1,h2
|
||||||
border-bottom: 1px solid #cccccc
|
border-bottom: 1px solid #cccccc
|
||||||
|
|
||||||
h1
|
h1
|
||||||
font-size: 32px
|
font-size: 32px
|
||||||
padding-right: 60px
|
padding-right: 60px
|
||||||
@@ -1009,7 +1009,7 @@ dd
|
|||||||
a.button
|
a.button
|
||||||
border-radius: 2px
|
border-radius: 2px
|
||||||
text-decoration: none
|
text-decoration: none
|
||||||
|
|
||||||
&:visited
|
&:visited
|
||||||
color: white
|
color: white
|
||||||
|
|
||||||
@@ -1022,6 +1022,9 @@ dd
|
|||||||
|
|
||||||
#miceType
|
#miceType
|
||||||
clear: both
|
clear: both
|
||||||
|
font-size: 11px
|
||||||
|
line-height: 18px
|
||||||
|
color: #aaa
|
||||||
|
|
||||||
|
|
||||||
html.search #docsContent
|
html.search #docsContent
|
||||||
@@ -1125,7 +1128,7 @@ $feature-box-div-margin-bottom: 40px
|
|||||||
#video
|
#video
|
||||||
width: 100%
|
width: 100%
|
||||||
position: relative
|
position: relative
|
||||||
background-image: url(/images/kub_video_banner.jpg)
|
background-image: url(/images/kub_video_banner_box.jpg)
|
||||||
background-position: center center
|
background-position: center center
|
||||||
background-size: cover
|
background-size: cover
|
||||||
|
|
||||||
@@ -1135,10 +1138,8 @@ $feature-box-div-margin-bottom: 40px
|
|||||||
position: absolute
|
position: absolute
|
||||||
top: 50%
|
top: 50%
|
||||||
left: 75%
|
left: 75%
|
||||||
width: 50%
|
width: 525px
|
||||||
max-width: 600px
|
padding-right: 80px
|
||||||
min-width: 500px
|
|
||||||
padding-right: 10%
|
|
||||||
transform: translate(-50%, -50%)
|
transform: translate(-50%, -50%)
|
||||||
color: white
|
color: white
|
||||||
|
|
||||||
@@ -1150,6 +1151,14 @@ $feature-box-div-margin-bottom: 40px
|
|||||||
p
|
p
|
||||||
margin-bottom: 20px
|
margin-bottom: 20px
|
||||||
|
|
||||||
|
#desktopKCButton
|
||||||
|
position: relative
|
||||||
|
font-size: 18px
|
||||||
|
background-color: $dark-grey
|
||||||
|
border-radius: 8px
|
||||||
|
color: $white
|
||||||
|
padding: 20px 10px 20px 10px
|
||||||
|
|
||||||
#desktopShowVideoButton
|
#desktopShowVideoButton
|
||||||
position: relative
|
position: relative
|
||||||
font-size: 24px
|
font-size: 24px
|
||||||
@@ -1157,6 +1166,7 @@ $feature-box-div-margin-bottom: 40px
|
|||||||
border-radius: 8px
|
border-radius: 8px
|
||||||
color: $blue
|
color: $blue
|
||||||
padding: 15px 30px 15px 80px
|
padding: 15px 30px 15px 80px
|
||||||
|
margin-bottom: 15px
|
||||||
|
|
||||||
&:before
|
&:before
|
||||||
content: ""
|
content: ""
|
||||||
@@ -1332,7 +1342,7 @@ $feature-box-div-margin-bottom: 40px
|
|||||||
height: 30vw
|
height: 30vw
|
||||||
max-width: 1200px
|
max-width: 1200px
|
||||||
max-height: 450px
|
max-height: 450px
|
||||||
margin: 20px auto
|
margin: 20px auto
|
||||||
|
|
||||||
iframe
|
iframe
|
||||||
position: absolute
|
position: absolute
|
||||||
@@ -1414,7 +1424,7 @@ $feature-box-div-margin-bottom: 40px
|
|||||||
|
|
||||||
h1,h2
|
h1,h2
|
||||||
border-bottom: 1px solid #cccccc
|
border-bottom: 1px solid #cccccc
|
||||||
|
|
||||||
h1
|
h1
|
||||||
font-size: 32px
|
font-size: 32px
|
||||||
padding-right: 60px
|
padding-right: 60px
|
||||||
@@ -1594,7 +1604,7 @@ $feature-box-div-margin-bottom: 40px
|
|||||||
a.button
|
a.button
|
||||||
border-radius: 2px
|
border-radius: 2px
|
||||||
text-decoration: none
|
text-decoration: none
|
||||||
|
|
||||||
&:visited
|
&:visited
|
||||||
color: white
|
color: white
|
||||||
|
|
||||||
@@ -1696,7 +1706,7 @@ $feature-box-div-margin-bottom: 40px
|
|||||||
#talkToUs
|
#talkToUs
|
||||||
main
|
main
|
||||||
padding: 30px 0
|
padding: 30px 0
|
||||||
|
|
||||||
h5
|
h5
|
||||||
font-size: 20px
|
font-size: 20px
|
||||||
|
|
||||||
@@ -1705,7 +1715,7 @@ $feature-box-div-margin-bottom: 40px
|
|||||||
position: relative
|
position: relative
|
||||||
text-align: center
|
text-align: center
|
||||||
margin-bottom: 30px
|
margin-bottom: 30px
|
||||||
|
|
||||||
div
|
div
|
||||||
position: relative
|
position: relative
|
||||||
display: inline-block
|
display: inline-block
|
||||||
@@ -1728,10 +1738,10 @@ $feature-box-div-margin-bottom: 40px
|
|||||||
|
|
||||||
div:nth-child(4)
|
div:nth-child(4)
|
||||||
background-image: url(/images/community_logos/wikimedia_foundation_logo.png)
|
background-image: url(/images/community_logos/wikimedia_foundation_logo.png)
|
||||||
|
|
||||||
p
|
p
|
||||||
font-size: 20px
|
font-size: 20px
|
||||||
|
|
||||||
a
|
a
|
||||||
position: absolute
|
position: absolute
|
||||||
bottom: 0
|
bottom: 0
|
||||||
@@ -1740,16 +1750,16 @@ $feature-box-div-margin-bottom: 40px
|
|||||||
color: $blue
|
color: $blue
|
||||||
font-weight: 400
|
font-weight: 400
|
||||||
|
|
||||||
|
|
||||||
//#bigSocial
|
//#bigSocial
|
||||||
// text-align: center
|
// text-align: center
|
||||||
//
|
//
|
||||||
// div
|
// div
|
||||||
// display: inline-block
|
// display: inline-block
|
||||||
// float: none
|
// float: none
|
||||||
// padding-top: 125px
|
// padding-top: 125px
|
||||||
// width: calc(90%)
|
// width: calc(90%)
|
||||||
//
|
//
|
||||||
// a
|
// a
|
||||||
// margin-top: 15px
|
// margin-top: 15px
|
||||||
// font-size: 18px
|
// font-size: 18px
|
||||||
|
|||||||
+11
-4
@@ -49,7 +49,7 @@ $video-section-height: 550px
|
|||||||
|
|
||||||
#searchBox
|
#searchBox
|
||||||
float: right
|
float: right
|
||||||
width: 320px
|
width: 250px
|
||||||
|
|
||||||
#search
|
#search
|
||||||
vertical-align: middle
|
vertical-align: middle
|
||||||
@@ -97,12 +97,15 @@ $video-section-height: 550px
|
|||||||
section, header, footer
|
section, header, footer
|
||||||
main
|
main
|
||||||
max-width: $main-max-width
|
max-width: $main-max-width
|
||||||
|
|
||||||
header, #vendorStrip, #encyclopedia, #hero h1, #hero h5, #docs #hero h1, #docs #hero h5,
|
header, #vendorStrip, #encyclopedia, #hero h1, #hero h5, #docs #hero h1, #docs #hero h5,
|
||||||
#community #hero h1, .gridPage #hero h1, #community #hero h5, .gridPage #hero h5
|
#community #hero h1, .gridPage #hero h1, #community #hero h5, .gridPage #hero h5
|
||||||
padding-left: 100px
|
padding-left: 100px
|
||||||
padding-right: 100px
|
padding-right: 100px
|
||||||
|
|
||||||
|
#vendorStrip
|
||||||
|
padding-right: 10px
|
||||||
|
|
||||||
#home
|
#home
|
||||||
section, header, footer
|
section, header, footer
|
||||||
main
|
main
|
||||||
@@ -135,7 +138,7 @@ $video-section-height: 550px
|
|||||||
#video
|
#video
|
||||||
height: $video-section-height
|
height: $video-section-height
|
||||||
position: relative
|
position: relative
|
||||||
background-image: url(../images/kub_video_banner.jpg)
|
background-image: url(../images/kub_video_banner_box.jpg)
|
||||||
background-position: center center
|
background-position: center center
|
||||||
background-size: cover
|
background-size: cover
|
||||||
|
|
||||||
@@ -296,7 +299,7 @@ $video-section-height: 550px
|
|||||||
width: auto
|
width: auto
|
||||||
background-color: $blue
|
background-color: $blue
|
||||||
padding: 0 20px
|
padding: 0 20px
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -309,3 +312,7 @@ $video-section-height: 550px
|
|||||||
div
|
div
|
||||||
width: 24%
|
width: 24%
|
||||||
min-height: 260px
|
min-height: 260px
|
||||||
|
|
||||||
|
@media screen and (min-width: 1300px)
|
||||||
|
#vendorStrip
|
||||||
|
padding-right: 100px
|
||||||
|
|||||||
Executable
+100
@@ -0,0 +1,100 @@
|
|||||||
|
---
|
||||||
|
title: BlaBlaCar Case Study
|
||||||
|
layout: basic
|
||||||
|
case_study_styles: true
|
||||||
|
cid: caseStudies
|
||||||
|
css: /css/style_blablacar.css
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="banner1">
|
||||||
|
<h1> CASE STUDY:<img src="/images/blablacar_logo.png" class="header_logo"><br> <div class="subhead">Turning to Containerization to Support Millions of Rideshares</div></h1>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="details">
|
||||||
|
Company <b>BlaBlaCar</b> Location <b>Paris, France</b> Industry <b>Ridesharing Company</b>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<section class="section1">
|
||||||
|
<div class="cols">
|
||||||
|
<div class="col1">
|
||||||
|
<h2>Challenge</h2>
|
||||||
|
The world’s largest long-distance carpooling community, <a href="https://www.blablacar.com/">BlaBlaCar</a>, connects 40 million members across 22 countries. The company has been experiencing exponential growth since 2012 and needed its infrastructure to keep up. "When you’re thinking about doubling the number of servers, you start thinking, ‘What should I do to be more efficient?’" says Simon Lallemand, Infrastructure Engineer at BlaBlaCar. "The answer is not to hire more and more people just to deal with the servers and installation." The team knew they had to scale the platform, but wanted to stay on their own bare metal servers.
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<h2>Solution</h2>
|
||||||
|
Opting not to shift to cloud virtualization or use a private cloud on their own servers, the BlaBlaCar team became early adopters of containerization, using the CoreOs runtime <a href="https://coreos.com/rkt">rkt</a>, initially deployed using <a href="https://coreos.com/fleet/docs/latest/launching-containers-fleet.html">fleet</a> cluster manager. Last year, the company switched to <a href="http://kubernetes.io/">Kubernetes</a> orchestration, and now also uses <a href="https://prometheus.io/">Prometheus</a> for monitoring.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col2">
|
||||||
|
<h2>Impact</h2>
|
||||||
|
"Before using containers, it would take sometimes a day, sometimes two, just to create a new service," says Lallemand. "With all the tooling that we made around the containers, copying a new service now is a matter of minutes. It’s really a huge gain. We are better at capacity planning in our data center because we have fewer constraints due to this abstraction between the services and the hardware we run on. For the developers, it also means they can focus only on the features that they’re developing, and not on the infrastructure."
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="banner2">
|
||||||
|
<div class="banner2text">
|
||||||
|
"When you’re switching to this cloud-native model and running everything in containers, you have to make sure that at any moment you can reboot without any downtime and without losing traffic. [With Kubernetes] our infrastructure is much more resilient and we have better availability than before."<br style="height:25px"><span style="font-size:14px;letter-spacing:2px;text-transform:uppercase;margin-top:5% !important;"><br>- Simon Lallemand, Infrastructure Engineer at BlaBlaCar</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<section class="section2">
|
||||||
|
<div class="fullcol">
|
||||||
|
<h2>For the 40 million users of <a href="https://www.blablacar.com/">BlaBlaCar</a>, it’s easy to find strangers headed in the same direction to share rides and costs. You can even choose how much "bla bla" chatter you want from a long-distance ride mate.</h2>
|
||||||
|
Behind the scenes, though, the infrastructure was falling woefully behind the rider community’s exponential growth. Founded in 2006, the company hit its current stride around 2012. "Our infrastructure was very traditional," says Infrastructure Engineer Simon Lallemand, who began working at the company in 2014. "In the beginning, it was a bit chaotic because we had to [grow] fast. But then comes the time when you have to design things to make it manageable."<br><br>
|
||||||
|
By 2015, the company had about 50 bare metal servers. The team was using a <a href="https://www.mysql.com/">MySQL</a> database and <a href="http://php.net/">PHP</a>, but, Lallemand says, "it was a very static way." They also utilized the configuration management system, <a href="https://www.chef.io/chef/">Chef</a>, but had little automation in its process. "When you’re thinking about doubling the number of servers, you start thinking, ‘What should I do to be more efficient?’" says Lallemand. "The answer is not to hire more and more people just to deal with the servers and installation."<br><br>
|
||||||
|
Instead, BlaBlaCar began its cloud-native journey but wasn’t sure which route to take. "We could either decide to go into cloud virtualization or even use a private cloud on our own servers," says Lallemand. "But going into the cloud meant we had to make a lot of changes in our application work, and we were just not ready to make the switch from on premise to the cloud." They wanted to keep the great performance they got on bare metal, so they didn’t want to go to virtualization on premise.<br><br>
|
||||||
|
The solution: containerization. This was early 2015 and containers were still relatively new. "It was a bold move at the time," says Lallemand. "We decided that the next servers that we would buy in the new data center would all be the same model, so we could outsource the maintenance of the servers. And we decided to go with containers and with <a href="https://coreos.com/">CoreOS</a> Container Linux as an abstraction for this hardware. It seemed future-proof to go with containers because we could see what companies were already doing with containers."
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="banner3">
|
||||||
|
<div class="banner3text">
|
||||||
|
"With all the tooling that we made around the containers, copying a new service is a matter of minutes. It’s a huge gain. For the developers, it means they can focus only on the features that they’re developing and not on the infrastructure or the hour they would test their code, or the hour that it would get deployed."
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<section class="section3">
|
||||||
|
<div class="fullcol">
|
||||||
|
Next, they needed to choose a runtime for the containers, but "there were very few deployments in production at that time," says Lallemand. They experimented with <a href="https://www.docker.com/">Docker</a> but decided to go with <a href="https://coreos.com/rkt">rkt</a>. Lallemand explains that for BlaBlaCar, it was "much simpler to integrate things that are on rkt." At the time, the project was still pre-v1.0, so "we could speak with the developers of rkt and give them feedback. It was an advantage." Plus, he notes, rkt was very stable, even at this early stage.<br><br>
|
||||||
|
Once those decisions were made that summer, the company came up with a plan for implementation. First, they formed a task force to create a workflow that would be tested by three of the 10 members on Lallemand’s team. But they took care to run regular workshops with all 10 members to make sure everyone was on board. "When you’re focused on your product sometimes you forget if it’s really user friendly, whether other people can manage to create containers too," Lallemand says. "So we did a lot of iterations to find a good workflow."<br><br>
|
||||||
|
After establishing the workflow, Lallemand says with a smile that "we had this strange idea that we should try the most difficult thing first. Because if it works, it will work for everything." So the first project the team decided to containerize was the database. "Nobody did that at the time, and there were really no existing tools for what we wanted to do, including building container images," he says. So the team created their own tools, such as <a href="https://github.com/blablacar/dgr">dgr</a>, which builds container images so that the whole team has a common framework to build on the same images with the same standards. They also revamped the service-discovery tools <a href="https://github.com/airbnb/nerve">Nerve</a> and <a href="http://airbnb.io/projects/synapse/">Synapse</a>; their versions, <a href="https://github.com/blablacar/go-nerve">Go-Nerve</a> and <a href="https://github.com/blablacar/go-synapse">Go-Synapse</a>, were written in Go and built to be more efficient and include new features. All of these tools were open-sourced.<br><br>
|
||||||
|
At the same time, the company was working to migrate its entire platform to containers with a deadline set for Christmas 2015. With all the work being done in parallel, BlaBlaCar was able to get about 80 percent of its production into containers by its deadline with live traffic running on containers during December. (It’s now at 100 percent.) "It’s a really busy time for traffic," says Lallemand. "We knew that by using those new servers with containers, it would help us handle the traffic."<br><br>
|
||||||
|
In the middle of that peak season for carpooling, everything worked well. "The biggest impact that we had was for the deployment of new services," says Lallemand. "Before using containers, we had to first deploy a new server and create configurations with Chef. It would take sometimes a day, sometimes two, just to create a new service. And with all the tooling that we made around the containers, copying a new service is a matter of minutes. So it’s really a huge gain. For the developers, it means they can focus only on the features that they’re developing and not on the infrastructure or the hour they would test their code, or the hour that it would get deployed."
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="banner4">
|
||||||
|
<div class="banner4text">
|
||||||
|
"We realized that there was a really strong community around it [Kubernetes], which meant we would not have to maintain a lot of tools of our own," says Lallemand. "It was better if we could contribute to some bigger project like Kubernetes."
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<section class="section4">
|
||||||
|
<div class="fullcol">
|
||||||
|
In order to meet their self-imposed deadline, one of the decisions they made was to not do any "orchestration magic" for containers in the first production alignment. Instead, they used the basic <a href="https://coreos.com/fleet/docs/latest/launching-containers-fleet.html">fleet</a> tool from CoreOS to deploy their containers. (They did build a tool called <a href="https://github.com/blablacar/ggn">GGN</a>, which they’ve open-sourced, to make it more manageable for their system engineers to use.)<br><br>
|
||||||
|
Still, the team knew that they’d want more orchestration. "Our tool was doing a pretty good job, but at some point you want to give more autonomy to the developer team," Lallemand says. "We also realized that we don’t want to be the single point of contact for developers when they want to launch new services." By the summer of 2016, they found their answer in <a href="http://kubernetes.io/">Kubernetes</a>, which had just begun supporting rkt implementation.<br><br>
|
||||||
|
After discussing their needs with their contacts at CoreOS and Google, they were convinced that Kubernetes would work for BlaBlaCar. "We realized that there was a really strong community around it, which meant we would not have to maintain a lot of tools of our own," says Lallemand. "It was better if we could contribute to some bigger project like Kubernetes." They also started using <a href="https://prometheus.io/">Prometheus</a>, as they were looking for "service-oriented monitoring that could be updated nightly." Production on Kubernetes began in December 2016. "We like to do crazy stuff around Christmas," he adds with a laugh.<br><br>
|
||||||
|
BlaBlaCar now has about 3,000 pods, with 1200 of them running on Kubernetes. Lallemand leads a "foundations team" of 25 members who take care of the networks, databases and systems for about 100 developers. There have been some challenges getting to this point. "The rkt implementation is still not 100 percent finished," Lallemand points out. "It’s really good, but there are some features still missing. We have questions about how we do things with stateful services, like databases. We know how we will be migrating some of the services; some of the others are a bit more complicated to deal with. But the Kubernetes community is making a lot of progress on that part."<br><br>
|
||||||
|
The team is particularly happy that they’re now able to plan capacity better in the company’s data center. "We have fewer constraints since we have this abstraction between the services and the hardware we run on," says Lallemand. "If we lose a server because there’s a hardware problem on it, we just move the containers onto another server. It’s much more efficient. We do that by just changing a line in the configuration file. And with Kubernetes, it should be automatic, so we would have nothing to do."
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="banner5">
|
||||||
|
<div class="banner5text">
|
||||||
|
"If we lose a server because there’s a hardware problem on it, we just move the containers onto another server. It’s much more efficient. We do that by just changing a line in the configuration file. With Kubernetes, it should be automatic, so we would have nothing to do."
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<section class="section5">
|
||||||
|
<div class="fullcol">
|
||||||
|
And these advances ultimately trickle down to BlaBlaCar’s users. "We have improved availability overall on our website," says Lallemand. "When you’re switching to this cloud-native model with running everything in containers, you have to make sure that you can at any moment reboot a server or a data container without any downtime, without losing traffic. So now our infrastructure is much more resilient and we have better availability than before."<br><br>
|
||||||
|
Within BlaBlaCar’s technology department, the cloud-native journey has created some profound changes. Lallemand thinks that the regular meetings during the conception stage and the training sessions during implementation helped. "After that everybody took part in the migration process," he says. "Then we split the organization into different ‘tribes’—teams that gather developers, product managers, data analysts, all the different jobs, to work on a specific part of the product. Before, they were organized by function. The idea is to give all these tribes access to the infrastructure directly in a self-service way without having to ask. These people are really autonomous. They have responsibility of that part of the product, and they can make decisions faster." <br><br>
|
||||||
|
This DevOps transformation turned out to be a positive one for the company’s staffers. "The team was very excited about the DevOps transformation because it was new, and we were working to make things more reliable, more future-proof," says Lallemand. "We like doing things that very few people are doing, other than the internet giants." <br><br>
|
||||||
|
With these changes already making an impact, BlaBlaCar is looking to split up more and more of its application into services. "I don’t say microservices because they’re not so micro," Lallemand says. "If we can split the responsibilities between the development teams, it would be easier to manage and more reliable, because we can easily add and remove services if one fails. You can handle it easily, instead of adding a big monolith that we still have." <br><br>
|
||||||
|
When Lallemand speaks to other European companies curious about what BlaBlaCar has done with its infrastructure, he tells them to come along for the ride. "I tell them that it’s such a pleasure to deal with the infrastructure that we have today compared to what we had before," he says. "They just need to keep in mind their real motive, whether it’s flexibility in development or reliability or so on, and then go step by step towards reaching those objectives. That’s what we’ve done. It’s important not to do technology for the sake of technology. Do it for a purpose. Our focus was on helping the developers."
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
@@ -56,7 +56,7 @@ css: /css/style_golfnow.css
|
|||||||
<br> <br>
|
<br> <br>
|
||||||
The path to those stellar results began in late 2014. In order to support GolfNow’s global growth, the team decided that the company needed to have multiple data centers and the ability to quickly and easily re-route traffic as needed. "From there we knew that we needed to go in a direction of breaking things apart, microservices, and containerization," says Sheriff. "At the time we were trying to get away from <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 didn’t run very well on Linux, where everything container was running smoothly."
|
The path to those stellar results began in late 2014. In order to support GolfNow’s global growth, the team decided that the company needed to have multiple data centers and the ability to quickly and easily re-route traffic as needed. "From there we knew that we needed to go in a direction of breaking things apart, microservices, and containerization," says Sheriff. "At the time we were trying to get away from <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 didn’t run very well on Linux, where everything container was running smoothly."
|
||||||
<br> <br>
|
<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 that’s the way the industry is heading."
|
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, <a href="https://www.docker.com/">Docker</a>, the platform for deploying applications in containers, was still new. But once the team began experimenting with it, Sheriff says, "we realized that was the way we wanted to go, especially since that’s the way the industry is heading."
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,12 @@ cid: caseStudies
|
|||||||
<main>
|
<main>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="case-studies">
|
<div class="case-studies">
|
||||||
|
<div class="case-study">
|
||||||
|
<img src="/images/case_studies/blablacar-logo.png" alt="blablacar">
|
||||||
|
<p class="quote">"[With Kubernetes] our infrastructure is much more resilient and we have better availability than before."</p>
|
||||||
|
<!--<p class="attrib">— Simon Lallemand, Infrastructure Engineer at BlaBlaCar</p>-->
|
||||||
|
<a href="/case-studies/blablacar/">Read about BlaBlaCar</a>
|
||||||
|
</div>
|
||||||
<div class="case-study">
|
<div class="case-study">
|
||||||
<img src="/images/case_studies/peardeck.png" alt="peardeck">
|
<img src="/images/case_studies/peardeck.png" alt="peardeck">
|
||||||
<p class="quote">"In terms of the cloud, Kubernetes and Prometheus have so much to offer."</p>
|
<p class="quote">"In terms of the cloud, Kubernetes and Prometheus have so much to offer."</p>
|
||||||
@@ -32,12 +38,6 @@ cid: caseStudies
|
|||||||
<!--<p class="attrib">— Kit Klein, Head of Engineering at Wink</p>-->
|
<!--<p class="attrib">— Kit Klein, Head of Engineering at Wink</p>-->
|
||||||
<a href="/case-studies/wink/">Read about Wink</a>
|
<a href="/case-studies/wink/">Read about Wink</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="case-study">
|
|
||||||
<img src="/images/case_studies/ancestry-logo.png" alt="Ancestry">
|
|
||||||
<p class="quote">"Kubernetes saved our time tremendously; it’s an enabler. It really is incredible."</p>
|
|
||||||
<!--<p class="attrib">— Paul MacKay, Software Engineer and Architect at Ancestry</p>-->
|
|
||||||
<a href="/case-studies/ancestry/">Read about Ancestry.com</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
@@ -61,6 +61,7 @@ cid: caseStudies
|
|||||||
<div id="usersGrid">
|
<div id="usersGrid">
|
||||||
<a target="_blank" href="http://www.nextplatform.com/2015/08/04/amadeus-takes-off-with-containers-and-clouds/"><img src="/images/case_studies/amadeus.png" alt="Amadeus"></a>
|
<a target="_blank" href="http://www.nextplatform.com/2015/08/04/amadeus-takes-off-with-containers-and-clouds/"><img src="/images/case_studies/amadeus.png" alt="Amadeus"></a>
|
||||||
<a target="_blank" href="/case-studies/ancestry/"><img src="/images/case_studies/ancestry.png" alt="Ancestry.com"></a>
|
<a target="_blank" href="/case-studies/ancestry/"><img src="/images/case_studies/ancestry.png" alt="Ancestry.com"></a>
|
||||||
|
<a target="_blank" href="/case-studies/blablacar/"><img src="/images/case_studies/blablacar.png" alt="BlaBlaCar"></a>
|
||||||
<a target="_blank" href="/case-studies/box/"><img src="/images/case_studies/box_logo.png" alt="box"></a>
|
<a target="_blank" href="/case-studies/box/"><img src="/images/case_studies/box_logo.png" alt="box"></a>
|
||||||
<a target="_blank" href="/case-studies/buffer/"><img src="/images/case_studies/buffer_logo.png" alt="Buffer"></a>
|
<a target="_blank" href="/case-studies/buffer/"><img src="/images/case_studies/buffer_logo.png" alt="Buffer"></a>
|
||||||
<a target="_blank" href="https://cloud.google.com/customers/ccp-games/"><img src="/images/case_studies/ccp.png" alt="CCP Games"></a>
|
<a target="_blank" href="https://cloud.google.com/customers/ccp-games/"><img src="/images/case_studies/ccp.png" alt="CCP Games"></a>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ css: /css/style_peardeck.css
|
|||||||
|
|
||||||
<div class="col2">
|
<div class="col2">
|
||||||
<h2>Solution</h2>
|
<h2>Solution</h2>
|
||||||
In 2016, the company began moving their code from Heroku to <a href="https://www.docker.com/">Docker</a> containers running on <a href="https://cloud.google.com/container-engine/">Google Container Engine</a>, orchestrated by <a href="http://kubernetes.io/">Kubernetes</a> and monitored with <a href="https://prometheus.io/">Prometheus</a>.
|
In 2016, the company began moving their code from Heroku to <a href="https://www.docker.com/">Docker</a> containers running on <a href="https://cloud.google.com/kubernetes-engine/">Google Kubernetes Engine</a>, orchestrated by <a href="http://kubernetes.io/">Kubernetes</a> and monitored with <a href="https://prometheus.io/">Prometheus</a>.
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
<h2>Impact</h2>
|
<h2>Impact</h2>
|
||||||
@@ -51,22 +51,22 @@ But once it launched, the user base began growing steadily at a rate of 30 perce
|
|||||||
<br><br>
|
<br><br>
|
||||||
On top of that, many of Pear Deck’s customers are behind government firewalls and connect through Firebase, not Pear Deck’s servers, making troubleshooting even more difficult.
|
On top of that, many of Pear Deck’s customers are behind government firewalls and connect through Firebase, not Pear Deck’s servers, making troubleshooting even more difficult.
|
||||||
<br><br>
|
<br><br>
|
||||||
The team began looking around for another solution, and finally decided in early 2016 to start moving the app from Heroku to <a href="https://www.docker.com/">Docker</a> containers running on <a href="https://cloud.google.com/container-engine/">Google Container Engine</a>, orchestrated by <a href="http://kubernetes.io/">Kubernetes</a> and monitored with <a href="https://prometheus.io/">Prometheus</a>.
|
The team began looking around for another solution, and finally decided in early 2016 to start moving the app from Heroku to <a href="https://www.docker.com/">Docker</a> containers running on <a href="https://cloud.google.com/kubernetes-engine/">Google Kubernetes Engine</a>, orchestrated by <a href="http://kubernetes.io/">Kubernetes</a> and monitored with <a href="https://prometheus.io/">Prometheus</a>.
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<div class="banner3">
|
<div class="banner3">
|
||||||
<div class="banner3text">
|
<div class="banner3text">
|
||||||
"When it became clear that Google Container Engine was going to have a lot of support from Google and be a fully-managed Kubernetes platform, it seemed very obvious to us that was the way to go," says Eynon-Lynch.
|
"When it became clear that Google Kubernetes Engine was going to have a lot of support from Google and be a fully-managed Kubernetes platform, it seemed very obvious to us that was the way to go," says Eynon-Lynch.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<section class="section3">
|
<section class="section3">
|
||||||
<div class="fullcol">
|
<div class="fullcol">
|
||||||
They had considered other options like Google’s App Engine (which they were already using for one service) and Amazon’s <a href="https://aws.amazon.com/ec2/">Elastic Compute Cloud</a> (EC2), while experimenting with running one small service that wasn’t accessible to the Internet in Kubernetes. "When it became clear that Google Container Engine was going to have a lot of support from Google and be a fully-managed Kubernetes platform, it seemed very obvious to us that was the way to go," says Eynon-Lynch. "We didn’t really consider Terraform and the other competitors because the abstractions offered by Kubernetes just jumped off the page to us."<br><br>
|
They had considered other options like Google’s App Engine (which they were already using for one service) and Amazon’s <a href="https://aws.amazon.com/ec2/">Elastic Compute Cloud</a> (EC2), while experimenting with running one small service that wasn’t accessible to the Internet in Kubernetes. "When it became clear that Google Kubernetes Engine was going to have a lot of support from Google and be a fully-managed Kubernetes platform, it seemed very obvious to us that was the way to go," says Eynon-Lynch. "We didn’t really consider Terraform and the other competitors because the abstractions offered by Kubernetes just jumped off the page to us."<br><br>
|
||||||
Once the team started porting its Heroku apps into Kubernetes, which was "super easy," he says, the impact was immediate. "Before, to make a new version of the app meant going to Heroku and reconfiguring 10 new services, so basically no one was willing to do it, and we never staged things," he says. "Now we can deploy our exact same configuration in lots of different clusters in 30 seconds. We have a full set up that’s always running, and then any of our developers or designers can stage new versions with one command, including their recent changes. We stage all the time now, and everyone stopped talking about how cool it is because it’s become invisible how great it is."
|
Once the team started porting its Heroku apps into Kubernetes, which was "super easy," he says, the impact was immediate. "Before, to make a new version of the app meant going to Heroku and reconfiguring 10 new services, so basically no one was willing to do it, and we never staged things," he says. "Now we can deploy our exact same configuration in lots of different clusters in 30 seconds. We have a full set up that’s always running, and then any of our developers or designers can stage new versions with one command, including their recent changes. We stage all the time now, and everyone stopped talking about how cool it is because it’s become invisible how great it is."
|
||||||
<br><br>
|
<br><br>
|
||||||
Along with Kubernetes came Prometheus. "Until pretty recently we didn’t have any kind of visibility into aggregate server metrics or performance," says Eynon-Lynch. The team had tried to use GKE’s <a href="https://cloud.google.com/stackdriver/">Stackdriver</a> monitoring, but had problems making it work, and considered <a href="https://newrelic.com/">New Relic</a>. When they started looking at Prometheus in the fall of 2016, "the fit between the abstractions in Prometheus and the way we think about how our system works, was so clear and obvious," he says.<br><br>
|
Along with Kubernetes came Prometheus. "Until pretty recently we didn’t have any kind of visibility into aggregate server metrics or performance," says Eynon-Lynch. The team had tried to use Google Kubernetes Engine’s <a href="https://cloud.google.com/stackdriver/">Stackdriver</a> monitoring, but had problems making it work, and considered <a href="https://newrelic.com/">New Relic</a>. When they started looking at Prometheus in the fall of 2016, "the fit between the abstractions in Prometheus and the way we think about how our system works, was so clear and obvious," he says.<br><br>
|
||||||
The integration with Kubernetes made set-up easy. Once Helm installed Prometheus, "We started getting a graph of the health of all our Kubernetes nodes and pods immediately. I think we were pretty hooked at that point," Eynon-Lynch says. "Then we got our own custom instrumentation working in 15 minutes, and had an actively updated count of requests that we could do, rate on and get a sense of how many users are connected at a given point. And then it was another hour before we had alarms automatically showing up in our Slack channel. All that was in one afternoon. And it was an afternoon of gasping with delight, basically!"
|
The integration with Kubernetes made set-up easy. Once Helm installed Prometheus, "We started getting a graph of the health of all our Kubernetes nodes and pods immediately. I think we were pretty hooked at that point," Eynon-Lynch says. "Then we got our own custom instrumentation working in 15 minutes, and had an actively updated count of requests that we could do, rate on and get a sense of how many users are connected at a given point. And then it was another hour before we had alarms automatically showing up in our Slack channel. All that was in one afternoon. And it was an afternoon of gasping with delight, basically!"
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
{% capture samplecode %}{% include_relative {{include.file}} %}{% endcapture %}
|
||||||
|
{% if include.k8slink %}{% capture ghlink %}https://raw.githubusercontent.com/kubernetes/kubernetes/blob/{{page.githubbranch}}{{include.k8slink}}{% endcapture %}{% endif %}
|
||||||
|
{% if include.ghlink %}{% capture ghlink %}https://raw.githubusercontent.com/kubernetes/website/{{page.docsbranch}}{{include.ghlink}}{% endcapture %}{% endif %}
|
||||||
|
{% capture mysample %}
|
||||||
|
```{{include.language}}
|
||||||
|
{{ samplecode | raw | strip }}
|
||||||
|
```
|
||||||
|
{: id="{{include.file | handleize}}"}
|
||||||
|
{% endcapture %}
|
||||||
|
<table class="includecode">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{% if ghlink %}<a href="{{ghlink}}" download="{{include.file}}">{% endif %}
|
||||||
|
<code>{{include.file}}</code>
|
||||||
|
{% if ghlink %}</a>{% endif %}
|
||||||
|
<img src="/images/copycode.svg" style="max-height:24px" onclick="copyCode('{{include.file | handleize}}')" title="Copy {{include.file}} to clipboard">
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>{{ mysample | markdownify }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
You need to have a Kubernetes cluster, and the kubectl command-line tool must
|
||||||
|
be configured to communicate with your cluster. If you do not already have a
|
||||||
|
cluster, you can create one by using
|
||||||
|
[Minikube](/docs/getting-started-guides/minikube).
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
{% if overview %}
|
||||||
|
|
||||||
|
{{ overview }}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
{% include templates/_errorthrower.md missing_block='overview' purpose='states, in one or two sentences, the purpose of this document' %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
* TOC
|
||||||
|
{: toc}
|
||||||
|
|
||||||
|
|
||||||
|
{% if prerequisites %}
|
||||||
|
|
||||||
|
## Before you begin
|
||||||
|
|
||||||
|
{{ prerequisites }}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
{% include templates/_errorthrower.md missing_block='prerequisites' heading='Before you begin' purpose='lists action prerequisites and knowledge prerequisites' %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
{% if steps %}
|
||||||
|
|
||||||
|
{{ steps }}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
{% include templates/_errorthrower.md missing_block='steps' purpose='lists a sequence of numbered steps that accomplish the task.' %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
{% if discussion %}
|
||||||
|
|
||||||
|
{{ discussion }}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
{% if whatsnext %}
|
||||||
|
|
||||||
|
## What's next
|
||||||
|
|
||||||
|
{{ whatsnext }}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
{% if overview %}
|
||||||
|
|
||||||
|
{{ overview }}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
{% include templates/_errorthrower.md missing_block='overview' purpose='states, in one or two sentences, the purpose of this document' %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
* TOC
|
||||||
|
{: toc}
|
||||||
|
|
||||||
|
|
||||||
|
{% if objectives %}
|
||||||
|
|
||||||
|
## Objectives
|
||||||
|
|
||||||
|
{{ objectives }}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
{% include templates/_errorthrower.md missing_block='objectives' heading='Objectives' purpose='lists the objectives for this tutorial.' %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
{% if prerequisites %}
|
||||||
|
|
||||||
|
## Before you begin
|
||||||
|
|
||||||
|
{{ prerequisites }}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
{% include templates/_errorthrower.md missing_block='prerequisites' heading='Before you begin' purpose='lists action prerequisites and knowledge prerequisites' %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
{% if lessoncontent %}
|
||||||
|
|
||||||
|
{{ lessoncontent }}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
{% include templates/_errorthrower.md missing_block='lessoncontent' purpose='provides the lesson content for this tutorial.' %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
{% if cleanup %}
|
||||||
|
|
||||||
|
## Cleaning up
|
||||||
|
|
||||||
|
{{ cleanup }}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
{% if whatsnext %}
|
||||||
|
|
||||||
|
## What's next
|
||||||
|
|
||||||
|
{{ whatsnext }}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
assignees:
|
approvers:
|
||||||
- erictune
|
- erictune
|
||||||
- lavalamp
|
- lavalamp
|
||||||
- deads2k
|
- deads2k
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
assignees:
|
approvers:
|
||||||
- erictune
|
- erictune
|
||||||
- lavalamp
|
- lavalamp
|
||||||
- deads2k
|
- deads2k
|
||||||
|
|||||||
@@ -0,0 +1,142 @@
|
|||||||
|
---
|
||||||
|
approvers:
|
||||||
|
- erictune
|
||||||
|
- lavalamp
|
||||||
|
- deads2k
|
||||||
|
- liggitt
|
||||||
|
title: Webhook Mode
|
||||||
|
---
|
||||||
|
|
||||||
|
{% capture overview %}
|
||||||
|
WebHook 是一种 HTTP 回调:某些条件下触发的 HTTP POST 请求;通过 HTTP POST 发送的简单事件通知。一个基于 web 应用实现的 WebHook 会在特定事件发生时把消息发送给特定的 URL 。
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
{% capture body %}
|
||||||
|
具体来说,当在判断用户权限时,`Webhook` 模式会使 Kubernetes 查询外部的 REST 服务。
|
||||||
|
|
||||||
|
## 配置文件格式
|
||||||
|
|
||||||
|
`Webhook` 模式需要一个 HTTP 配置文件,通过 `--authorization-webhook-config-file=SOME_FILENAME` 的参数声明。
|
||||||
|
|
||||||
|
配置文件的格式使用 [kubeconfig](/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/)。
|
||||||
|
在文件中,"users" 代表着 API 服务器的 webhook,而 "cluster" 代表着远程服务。
|
||||||
|
|
||||||
|
使用 HTTPS 客户端认证的配置例子:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# clusters 代表远程服务。
|
||||||
|
clusters:
|
||||||
|
- name: name-of-remote-authz-service
|
||||||
|
cluster:
|
||||||
|
certificate-authority: /path/to/ca.pem # 对远程服务进行身份认证的CA。
|
||||||
|
server: https://authz.example.com/authorize # 远程服务的查询 URL. 必须使用 'https'。
|
||||||
|
|
||||||
|
# users 代表 API 服务器的 webhook 配置.
|
||||||
|
users:
|
||||||
|
- name: name-of-api-server
|
||||||
|
user:
|
||||||
|
client-certificate: /path/to/cert.pem # webhook plugin 使用的 cert。
|
||||||
|
client-key: /path/to/key.pem # cert 所对应的 key。
|
||||||
|
|
||||||
|
# kubeconfig 文件必须有 context 。 需要提供一个给 API 服务器。
|
||||||
|
current-context: webhook
|
||||||
|
contexts:
|
||||||
|
- context:
|
||||||
|
cluster: name-of-remote-authz-service
|
||||||
|
user: name-of-api-server
|
||||||
|
name: webhook
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 请求载荷
|
||||||
|
|
||||||
|
在做认证决策时,API 服务器会 POST 一个 JSON 序列化的 api.authorization.v1beta1.SubjectAccessReview 对象来描述这个动作。这个对象包含了描述用户请求的字段,同时也包含了需要被访问资源或者请求特征的具体信息。
|
||||||
|
|
||||||
|
需要注意的是 webhook API 对象与其他 Kubernetes API 对象一样都同样都服从 [版本兼容规则](/docs/api/) 。
|
||||||
|
实施人员应该了解 beta 对象的更宽松的兼容性承诺,同时确认请求的 "apiVersion" 字段以确保能被正确地反序列化。
|
||||||
|
此外,API 服务器还必须启用 `authorization.k8s.io/v1beta1` API 扩展组(`--runtime-config=authorization.k8s.io/v1beta1=true`)。
|
||||||
|
|
||||||
|
|
||||||
|
一个请求内容的例子:
|
||||||
|
|
||||||
|
```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"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
远程服务被预期能填写请求和反馈的 SubjectAccessReviewStatus 字段,无论是允许访问还是拒绝访问。
|
||||||
|
反馈内容的 "spec" 字段是被忽略的,也是可以被省略的。当请求是被允许的时候,返回的响应如下例所示:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"apiVersion": "authorization.k8s.io/v1beta1",
|
||||||
|
"kind": "SubjectAccessReview",
|
||||||
|
"status": {
|
||||||
|
"allowed": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
如拒绝,远程服务器会返回:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"apiVersion": "authorization.k8s.io/v1beta1",
|
||||||
|
"kind": "SubjectAccessReview",
|
||||||
|
"status": {
|
||||||
|
"allowed": false,
|
||||||
|
"reason": "user does not have read access to the namespace"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
对于非资源的路径访问是这么发送的:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"apiVersion": "authorization.k8s.io/v1beta1",
|
||||||
|
"kind": "SubjectAccessReview",
|
||||||
|
"spec": {
|
||||||
|
"nonResourceAttributes": {
|
||||||
|
"path": "/debug",
|
||||||
|
"verb": "get"
|
||||||
|
},
|
||||||
|
"user": "jane",
|
||||||
|
"group": [
|
||||||
|
"group1",
|
||||||
|
"group2"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
非资源类的路径包括:`/api`, `/apis`, `/metrics`, `/resetMetrics`,
|
||||||
|
`/logs`, `/debug`, `/healthz`, `/swagger-ui/`, `/swaggerapi/`, `/ui`, and
|
||||||
|
`/version`。 客户端需要访问 `/api`, `/api/*`, `/apis`, `/apis/*`, 和 `/version` 以便
|
||||||
|
能发现服务器上有什么资源和版本。对于其他非资源类的路径访问在没有 REST API 访问限制的情况下拒绝。
|
||||||
|
|
||||||
|
|
||||||
|
更多信息可以参考 uthorization.v1beta1 API 对象和
|
||||||
|
[webhook.go](https://git.k8s.io/kubernetes/staging/src/k8s.io/apiserver/plugin/pkg/authorizer/webhook/webhook.go).
|
||||||
|
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
|
{% include templates/concept.md %}
|
||||||
@@ -0,0 +1,137 @@
|
|||||||
|
---
|
||||||
|
approvers:
|
||||||
|
- jbeda
|
||||||
|
title: 使用启动引导令牌(Bootstrap Tokens)认证
|
||||||
|
---
|
||||||
|
|
||||||
|
* TOC
|
||||||
|
{:toc}
|
||||||
|
|
||||||
|
## 概述
|
||||||
|
|
||||||
|
启动引导令牌是一种简单的持有者令牌(Bearer Token),这种令牌是在新建集群或者在现有集群中添加新节点时使用的。
|
||||||
|
它被设计成能够支持 [`kubeadm`](/docs/admin/kubeadm/),但是也可以被用在其他的案例中以便用户在
|
||||||
|
不使用 `kubeadm` 的情况下启动集群。它也被设计成可以通过 RBAC 策略,结合 [Kubelet TLS
|
||||||
|
Bootstrapping](/docs/admin/kubelet-tls-bootstrapping/) 系统进行工作。
|
||||||
|
|
||||||
|
启动引导令牌被定义成一个特定类型的 secrets(`bootstrap.kubernetes.io/token`),并存在于
|
||||||
|
`kube-system` 命名空间中。然后这些 secrets 会被 API 服务器上的启动引导的认证器读取。
|
||||||
|
控制器管理器中的控制器TokenCleaner能够删除过期的令牌。在节点发现的过程中Kubernetes会使用特殊的ConfigMap对象。
|
||||||
|
控制器管理器中的BootstrapSigner控制器也会使用启动引导令牌为这类对象生成签名信息。
|
||||||
|
|
||||||
|
目前,启动引导令牌处于 **alpha** 阶段,但是预期也不会有大的突破性变化。
|
||||||
|
|
||||||
|
## 令牌格式
|
||||||
|
|
||||||
|
启动引导令牌使用 `abcdef.0123456789abcdef` 的形式。
|
||||||
|
更加规范地说,它们必须符合正则表达式 `[a-z0-9]{6}\.[a-z0-9]{16}`。
|
||||||
|
|
||||||
|
令牌的第一部分是 "Token ID" ,它是公共信息。用于引用某个令牌,并确保不会泄露认证所使用的秘密信息。
|
||||||
|
第二部分是 "令牌秘密(Token Secret)",它应该被共享给收信的第三方。
|
||||||
|
|
||||||
|
## 启用启动引导令牌
|
||||||
|
|
||||||
|
所有与启动引导令牌相关的特性在 Kubernetes v1.6 版本中默认都是禁用的。
|
||||||
|
|
||||||
|
你可以在 API 服务器上通过 `--experimental-bootstrap-token-auth` 参数启用启动引导令牌。
|
||||||
|
你可以设置控制管理器的 `--controllers` 参数来启用启动引导令牌相关的控制器,例如 `--controllers=*,tokencleaner,bootstrapsigner` 。
|
||||||
|
在使用 `kubeadm` 时,这是自动完成的。
|
||||||
|
|
||||||
|
HTTPS 调用中的令牌是这样使用的:
|
||||||
|
|
||||||
|
```http
|
||||||
|
Authorization: Bearer 07401b.f395accd246ae52d
|
||||||
|
```
|
||||||
|
|
||||||
|
## 启动引导令牌的密文格式
|
||||||
|
|
||||||
|
每个合法的令牌背后对应着 `kube-system` 命名空间中的某个 Secret 对象。
|
||||||
|
你可以从 [这里](https://git.k8s.io/community/contributors/design-proposals/bootstrap-discovery.md) 找到完整设计文档。
|
||||||
|
|
||||||
|
这是 secret 看起来的样子。注意,`base64(string)` 表示应该通过 base64 对值进行编码。
|
||||||
|
这里使用的是未解码的版本以便于阅读。
|
||||||
|
|
||||||
|
```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)
|
||||||
|
```
|
||||||
|
|
||||||
|
secret 的类型必须是 `bootstrap.kubernetes.io/token` ,而且名字必须是 `bootstrap-token-<token id>`。
|
||||||
|
`description` 是人类可读的描述,而不应该是机器可读的信息。令牌 ID 和 Secret 是包含在数据字典中的。
|
||||||
|
|
||||||
|
`usage-bootstrap-*` 成员表示这个 secret 的用途。启用时,值必须设置为 `true`。
|
||||||
|
|
||||||
|
`usage-bootstrap-authentication` 表示令牌可以用于 API 服务器的认证。认证器会以
|
||||||
|
`system:bootstrap:<Token ID>` 认证。它被包含在 `system:bootstrappers` 组中。
|
||||||
|
命名和组是故意受限制的,以防止用户在启动引导后再使用这些令牌。
|
||||||
|
|
||||||
|
`usage-bootstrap-signing` 表示令牌应该被用于 `cluster-info` ConfigMap 的签名,就像下面描述的那样。
|
||||||
|
|
||||||
|
`expiration` 数据成员显示了令牌在失效后到现在的时间。这是遵循 RFC3339 进行编码的 UTC 时间。
|
||||||
|
TokenCleaner 控制器会删除过期的令牌。
|
||||||
|
|
||||||
|
## 使用 `kubeadm` 管理令牌
|
||||||
|
|
||||||
|
你可以使用 `kubeadm` 工具管理正在运行集群的令牌。它会从 `kubeadm` 创建的集群(`/etc/kubernetes/admin.conf`)
|
||||||
|
自动抓取默认管理员密码。你可以通过参数 `--kubeconfig` 对下面命令指定一个另外的 kubeconfig 文件抓取密码。
|
||||||
|
|
||||||
|
* `kubeadm token list` 列举了令牌,同时显示了它们的过期时间和用途。
|
||||||
|
* `kubeadm token create` 创建一个新令牌。
|
||||||
|
* `--description` 设置新令牌的描述。
|
||||||
|
* `--ttl duration` 设置令牌从 "现在" 起到过期时间的差值。
|
||||||
|
默认是 0 ,也就是不过期。
|
||||||
|
* `--usages` 设置令牌被使用的方式。默认是 `signing,authentication`。用途在上面已经描述。
|
||||||
|
* `kubeadm token delete <token id>|<token id>.<token secret>` 删除令牌。
|
||||||
|
令牌可以只用 ID 来确认,也可以用整个令牌的值。如果只用 ID 的情况下,密文不匹配的令牌也会被删除。
|
||||||
|
|
||||||
|
### ConfigMap签名
|
||||||
|
|
||||||
|
除了认证之外,令牌可以用于签名 ConfigMap。这在集群启动过程的早期,在客户端信任 API 服务器之前被使用。
|
||||||
|
被签名的 ConfigMap 可以通过共享令牌被认证。
|
||||||
|
|
||||||
|
被签名的 ConfigMap 是 `cluster-info`,存在于 `kube-public` 命名空间中。
|
||||||
|
典型的工作流中,客户端在未经认证和忽略 TLS 报错的状态下读取这个 ConfigMap。
|
||||||
|
通过 ConfigMap 中嵌入的签名校验 ConfigMap 的载荷。
|
||||||
|
|
||||||
|
ConfigMap 会是这个样子的:
|
||||||
|
|
||||||
|
```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: []
|
||||||
|
```
|
||||||
|
|
||||||
|
ConfigMap 的 `kubeconfig` 成员是一个填好了集群信息的配置文件。
|
||||||
|
这里主要交换的信息是 `certificate-authority-data`。在将来可能会有扩展。
|
||||||
|
|
||||||
|
签名是一个 JWS 签名,使用了 "detached" 模式。为了检验签名,用户应该按照 JWS 规则
|
||||||
|
(base64 编码而忽略结尾的 `=`)对 `kubeconfig` 的载荷进行编码。完成编码的载荷会被通过插入 JWS 并存在于两个点的中间
|
||||||
|
,用于形成一个完整的 JWS。可以使用令牌的完整信息(比如 `07401b.f395accd246ae52d`)作为共享密钥,
|
||||||
|
通过 `HS256` 方式 (HMAC-SHA256) 对 JWS 进行校验。 用户 _必须_ 确保使用了 HS256。
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
---
|
||||||
|
approvers:
|
||||||
|
- davidopp
|
||||||
|
- lavalamp
|
||||||
|
title: 创建大规模集群
|
||||||
|
---
|
||||||
|
|
||||||
|
## 支持规格
|
||||||
|
|
||||||
|
在 {{page.version}},Kubernetes支持最多5000节点规模的集群。 更具体地说,我们支持满足以下 *所有* 标准的配置:
|
||||||
|
|
||||||
|
* 不超过5000节点
|
||||||
|
* 总共不超过15000个pod
|
||||||
|
* 总共不超过300000个容器
|
||||||
|
* 每个节点不超过100个pod
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
* TOC
|
||||||
|
{:toc}
|
||||||
|
|
||||||
|
## 创建
|
||||||
|
|
||||||
|
集群是一组运行Kubernetes代理组件的节点(物理或虚拟机),它们被 "master" (集群管理平面)所管理。
|
||||||
|
|
||||||
|
一般来说,集群的节点数量通过平台相关的 `config-default.sh` 文件中的 `NUM_NODES` 值来控制,(例如,详见 [GCE's `config-default.sh`](http://releases.k8s.io/{{page.githubbranch}}/cluster/gce/config-default.sh))。
|
||||||
|
|
||||||
|
对很多云提供商来说,单纯地修改`NUM_NODES` 为一个非常大的值,可能会导致集群的创建脚本失败。 例如,在GCE中部署时,会因配额不足,导致集群启动失败。
|
||||||
|
|
||||||
|
当建立一个大型的Kubernetes集群,以下几个问题必须考虑。
|
||||||
|
|
||||||
|
### 配额问题
|
||||||
|
|
||||||
|
为了避免出现配额问题,当创建包含大量节点的集群时,考虑:
|
||||||
|
|
||||||
|
* 提高相关配额,如CPU,IP等。
|
||||||
|
* 如,在 [GCE](https://cloud.google.com/compute/docs/resource-quotas)中,你可能需要提高以下资源的配额:
|
||||||
|
* CPU
|
||||||
|
* 虚机实例
|
||||||
|
* 磁盘
|
||||||
|
* 使用的IP地址
|
||||||
|
* 防火墙规则
|
||||||
|
* 转发规则
|
||||||
|
* 路由
|
||||||
|
* 对象池
|
||||||
|
* 设置创建脚本,使其以较小的规模分批次拉起新的节点,并在其间设置一定的等待时间,因为一些云供应商可能对虚机的创建速率进行了限制。
|
||||||
|
|
||||||
|
### Etcd存储
|
||||||
|
|
||||||
|
为了提升大规模集群的性能,我们将事件对象存储到独立的etcd实例中。
|
||||||
|
|
||||||
|
创建集群时,当前的salt脚本:
|
||||||
|
|
||||||
|
* 启动并配置额外的etcd实例
|
||||||
|
* 配置api-server,将该etcd实例用于事件对象的存储
|
||||||
|
|
||||||
|
### 管理节点和组件的规格
|
||||||
|
|
||||||
|
在 GCE/Google Kubernetes Engine 或 AWS平台中, `kube-up` 会根据集群的节点规模合理地设置管理节点的规格。 在其他云平台上,用户需要手动配置。 作为参考,GCE使用的规格为:
|
||||||
|
|
||||||
|
* 1-5 节点: n1-standard-1
|
||||||
|
* 6-10 节点: n1-standard-2
|
||||||
|
* 11-100 节点: n1-standard-4
|
||||||
|
* 101-250 节点: n1-standard-8
|
||||||
|
* 251-500 节点: n1-standard-16
|
||||||
|
* 500节点以上: n1-standard-32
|
||||||
|
|
||||||
|
AWS使用的规格为:
|
||||||
|
|
||||||
|
* 1-5 节点: m3.medium
|
||||||
|
* 6-10 节点: m3.large
|
||||||
|
* 11-100 节点: m3.xlarge
|
||||||
|
* 101-250 节点: m3.2xlarge
|
||||||
|
* 251-500 节点: c4.4xlarge
|
||||||
|
* 500节点以上: c4.8xlarge
|
||||||
|
|
||||||
|
注意,管理节点的规格只会在集群创建时进行设置,后续集群规模发生变化 (如 手动增删节点或集群自动扩缩容)后不会再调整。
|
||||||
|
|
||||||
|
### 插件的资源占用
|
||||||
|
|
||||||
|
为防止 [集群插件](https://releases.k8s.io/{{page.githubbranch}}/cluster/addons) 耗尽节点资源引起内存泄漏或其他资源问题, Kubernetes 设置了插件容器资源的上限,来限制其对CPU和内存资源的占用 (参考 PR [#10653](http://pr.k8s.io/10653/files) 和 [#10778](http://pr.k8s.io/10778/files))。
|
||||||
|
|
||||||
|
例如:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
containers:
|
||||||
|
- name: fluentd-cloud-logging
|
||||||
|
image: gcr.io/google_containers/fluentd-gcp:1.16
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 200Mi
|
||||||
|
```
|
||||||
|
|
||||||
|
除 Heapster 外,这些限制是静态的,基于4个节点规模的集群上运行的插件所采集的数据 (详见 [#10335](http://issue.k8s.io/10335#issuecomment-117861225))。 而实际大规模集群中插件所消耗的资源要多得多 (详见 [#5880](http://issue.k8s.io/5880#issuecomment-113984085))。 所以如果部署大规模集群时不对这些值进行调整,插件可能会因为资源占用达到上限而不断被杀死。
|
||||||
|
|
||||||
|
为了避免集群插件的资源问题,创建多节点的集群时,考虑以下几点:
|
||||||
|
|
||||||
|
* 当扩大集群规模时,如果涉及,相应扩大以下插件的内存和CPU限制 (通过一个实例处理整个集群,因此其内存和CPU使用量往往与集群的大小/负载成比例增长):
|
||||||
|
* [InfluxDB 和 Grafana](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/cluster-monitoring/influxdb/influxdb-grafana-controller.yaml)
|
||||||
|
* [kubedns, dnsmasq, 和 sidecar](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/dns/kubedns-controller.yaml.in)
|
||||||
|
* [Kibana](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/fluentd-elasticsearch/kibana-controller.yaml)
|
||||||
|
* 当扩大集群规模时,如果涉及,相应扩大以下插件副本数 (每个组件有多个副本,因此增加副本将有助于处理增加的负载,但是,由于每个副本的负载也略有增加,也应考虑提高CPU /内存上限):
|
||||||
|
* [elasticsearch](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/fluentd-elasticsearch/es-controller.yaml)
|
||||||
|
* 当扩大集群规模时,如果涉及,略微扩大以下插件的内存和CPU限制 (每个节点一个副本, 但是CPU/内存使用随集群的大小/负载增长变化不明显):
|
||||||
|
* [FluentD with ElasticSearch Plugin](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/fluentd-elasticsearch/fluentd-es-ds.yaml)
|
||||||
|
* [FluentD with GCP Plugin](http://releases.k8s.io/{{page.githubbranch}}/cluster/addons/fluentd-gcp/fluentd-gcp-ds.yaml)
|
||||||
|
|
||||||
|
Heapster的资源限制是基于集群的初始规模动态设置的 (参考 [#16185](http://issue.k8s.io/16185)
|
||||||
|
和 [#22940](http://issue.k8s.io/22940))。 当发现Heapster资源耗尽,应考虑调整计算Heapster内存请求的公式 (参考上述PR)。
|
||||||
|
|
||||||
|
关于如何检测插件是否达到资源上限 参考 [计算资源的故障排除章节](/docs/concepts/configuration/manage-compute-resources-container/#troubleshooting)。
|
||||||
|
|
||||||
|
[将来](http://issue.k8s.io/13048),我们期望基于集群规模来设置集群插件的资源限制,并且在集群规模增长或缩小时能够动态调整。
|
||||||
|
欢迎提出PR来实现这些特性。
|
||||||
|
|
||||||
|
### 启动时允许部分失败
|
||||||
|
|
||||||
|
因为种种原因 (详见 [#18969](https://github.com/kubernetes/kubernetes/issues/18969)),在 `NUM_NODES` 值很大的情况下执行
|
||||||
|
`kube-up.sh`, 可能因为其中一小部分节点没有正常启动而失败。
|
||||||
|
这时我们有两种选择:重启集群 (`kube-down.sh` 然后再 `kube-up.sh`),或者在执行 `kube-up.sh`之前,
|
||||||
|
将环境变量 `ALLOWED_NOTREADY_NODES` 设置为合适的值。 这将允许 `kube-up.sh` 以少于 `NUM_NODES` 的节点数量启动集群。 依据失败的具体原因,另外的节点可能在后面加入集群,或者集群节点数量将保持在 `NUM_NODES - ALLOWED_NOTREADY_NODES`。
|
||||||
@@ -9,7 +9,7 @@ title: 构建高可用集群
|
|||||||
本文描述了如何构建一个高可用(high-availability, HA)的Kubernetes集群。这是一个非常高级的主题。
|
本文描述了如何构建一个高可用(high-availability, HA)的Kubernetes集群。这是一个非常高级的主题。
|
||||||
|
|
||||||
对于仅希望使用Kubernetes进行试验的用户,推荐使用更简单的配置工具进行搭建,例如:
|
对于仅希望使用Kubernetes进行试验的用户,推荐使用更简单的配置工具进行搭建,例如:
|
||||||
[Minikube](/docs/getting-started-guides/minikube/),或者尝试使用[Google Container Engine](https://cloud.google.com/container-engine/) 来运行Kubernetes。
|
[Minikube](/docs/getting-started-guides/minikube/),或者尝试使用[Google Kubernetes Engine](https://cloud.google.com/kubernetes-engine/) 来运行Kubernetes。
|
||||||
|
|
||||||
此外,当前在我们的端到端(e2e)测试环境中,没有对Kubernetes高可用的支持进行连续测试。我们将会增加这个连续测试项,但当前对单节点master的安装测试得更加严格。
|
此外,当前在我们的端到端(e2e)测试环境中,没有对Kubernetes高可用的支持进行连续测试。我们将会增加这个连续测试项,但当前对单节点master的安装测试得更加严格。
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ To enable API bearer tokens (including service account tokens) to be used to aut
|
|||||||
* start the kubelet with the `--authentication-token-webhook`, `--kubeconfig`, and `--require-kubeconfig` flags
|
* start the kubelet with the `--authentication-token-webhook`, `--kubeconfig`, and `--require-kubeconfig` flags
|
||||||
* the kubelet calls the `TokenReview` API on the configured API server to determine user information from bearer tokens
|
* the kubelet calls the `TokenReview` API on the configured API server to determine user information from bearer tokens
|
||||||
|
|
||||||
|
**Note:** The flag `--require-kubeconfig` is deprecated as of Kubernetes 1.8, this will be removed in a future version. You no longer need to use `--require-kubeconfig` in Kubernetes 1.8.
|
||||||
|
|
||||||
## Kubelet authorization
|
## Kubelet authorization
|
||||||
|
|
||||||
Any request that is successfully authenticated (including an anonymous request) is then authorized. The default authorization mode is `AlwaysAllow`, which allows all requests.
|
Any request that is successfully authenticated (including an anonymous request) is then authorized. The default authorization mode is `AlwaysAllow`, which allows all requests.
|
||||||
@@ -52,6 +54,8 @@ To subdivide access to the kubelet API, delegate authorization to the API server
|
|||||||
* start the kubelet with the `--authorization-mode=Webhook`, `--kubeconfig`, and `--require-kubeconfig` flags
|
* start the kubelet with the `--authorization-mode=Webhook`, `--kubeconfig`, and `--require-kubeconfig` flags
|
||||||
* the kubelet calls the `SubjectAccessReview` API on the configured API server to determine whether each request is authorized
|
* the kubelet calls the `SubjectAccessReview` API on the configured API server to determine whether each request is authorized
|
||||||
|
|
||||||
|
**Note:** The flag `--require-kubeconfig` is deprecated as of Kubernetes 1.8, this will be removed in a future version. You no longer need to use `--require-kubeconfig` in Kubernetes 1.8.
|
||||||
|
|
||||||
The kubelet authorizes API requests using the same [request attributes](/docs/admin/authorization/#request-attributes) approach as the apiserver.
|
The kubelet authorizes API requests using the same [request attributes](/docs/admin/authorization/#request-attributes) approach as the apiserver.
|
||||||
|
|
||||||
The verb is determined from the incoming request's HTTP verb:
|
The verb is determined from the incoming request's HTTP verb:
|
||||||
|
|||||||
@@ -10,13 +10,13 @@ title: 多区域运行
|
|||||||
|
|
||||||
Kubernetes 从v1.2开始支持将集群运行在多个故障域中。
|
Kubernetes 从v1.2开始支持将集群运行在多个故障域中。
|
||||||
(GCE 中称其为 "区(Zones)", AWS 中称其为 "可用区(Availability Zones)",这里我们也称其为 "区")。
|
(GCE 中称其为 "区(Zones)", AWS 中称其为 "可用区(Availability Zones)",这里我们也称其为 "区")。
|
||||||
它是广泛意义上的集群联邦特性的轻量级版本 (之前被称为 ["Ubernetes"](https://github.com/kubernetes/community/blob/{{page.githubbranch}}/contributors/design-proposals/federation/federation.md))。
|
它是广泛意义上的集群联邦特性的轻量级版本 (之前被称为 ["Ubernetes"](https://github.com/kubernetes/community/blob/{{page.githubbranch}}/contributors/design-proposals/multicluster/federation.md))。
|
||||||
完整的集群联邦能够将多个分别运行在不同区或云供应商(或本地数据中心)的集群集中管理。
|
完整的集群联邦能够将多个分别运行在不同区或云供应商(或本地数据中心)的集群集中管理。
|
||||||
然而,很多用户只是希望通过将单一云供应商上的Kubernetes集群运行在多个区域,来提高集群的可用性,
|
然而,很多用户只是希望通过将单一云供应商上的Kubernetes集群运行在多个区域,来提高集群的可用性,
|
||||||
这就是1.2版本中提供的对多区域的支持。
|
这就是1.2版本中提供的对多区域的支持。
|
||||||
(之前被称为 "Ubernetes Lite")。
|
(之前被称为 "Ubernetes Lite")。
|
||||||
|
|
||||||
多区域的支持是有明确限制的: Kubernetes集群能够运行在多个区,但必须在同一个地域内 (云供应商也须一致)。
|
多区域的支持是有明确限制的: Kubernetes集群能够运行在多个区,但必须在同一个地域内 (云供应商也须一致)。
|
||||||
目前只有GCE和AWS自动支持 (尽管在其他云甚至裸机上,也很容易通过为节点和卷添加合适的标签来实现类似的支持)。
|
目前只有GCE和AWS自动支持 (尽管在其他云甚至裸机上,也很容易通过为节点和卷添加合适的标签来实现类似的支持)。
|
||||||
|
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ Kubernetes 从v1.2开始支持将集群运行在多个故障域中。
|
|||||||
|
|
||||||
## 演练
|
## 演练
|
||||||
|
|
||||||
接下来我们将介绍如何同时在 GCE 和 AWS 上创建和使用多区域的集群。 为此,你需要创建一个完整的集群
|
接下来我们将介绍如何同时在 GCE 和 AWS 上创建和使用多区域的集群。 为此,你需要创建一个完整的集群
|
||||||
(指定 `MULTIZONE=true`),然后再次执行 `kube-up`(指定 `KUBE_USE_EXISTING_MASTER=true`)来添加其他区域的节点。
|
(指定 `MULTIZONE=true`),然后再次执行 `kube-up`(指定 `KUBE_USE_EXISTING_MASTER=true`)来添加其他区域的节点。
|
||||||
|
|
||||||
### 创建集群
|
### 创建集群
|
||||||
|
|||||||
@@ -0,0 +1,84 @@
|
|||||||
|
---
|
||||||
|
approvers:
|
||||||
|
- Random-Liu
|
||||||
|
title: 节点设置校验
|
||||||
|
---
|
||||||
|
|
||||||
|
* TOC
|
||||||
|
{:toc}
|
||||||
|
|
||||||
|
## 节点合规性测试
|
||||||
|
|
||||||
|
*节点合规性测试* 是一个容器化的测试框架,提供了针对节点的系统验证和功能测试。 该测试主要检测节点是否满足 Kubernetes 的最低要求,通过检测的节点有资格加入 Kubernetes 集群。
|
||||||
|
|
||||||
|
## 限制
|
||||||
|
|
||||||
|
在 Kubernetes 1.5版本中,节点合规性测试存在以下限制:
|
||||||
|
|
||||||
|
* 节点合规性测试只支持 Docker 作为容器运行时环境。
|
||||||
|
|
||||||
|
## 节点的前提条件
|
||||||
|
|
||||||
|
为运行节点合规性测试,节点必须满足与标准的 Kubernetes 节点同样的前提条件。最基本地, 节点应安装以下组件:
|
||||||
|
|
||||||
|
* 容器运行时 (Docker)
|
||||||
|
* Kubelet
|
||||||
|
|
||||||
|
## 运行节点合规性测试
|
||||||
|
|
||||||
|
执行以下步骤来运行节点合规性测试:
|
||||||
|
|
||||||
|
1. 因为测试框架会启动一个本地的 master 来测试 Kubelet,
|
||||||
|
所以将 Kubelet 指向本机 `--api-servers="http://localhost:8080"。 还有一些其他 Kubelet 参数可能需要注意:
|
||||||
|
* `--pod-cidr`: 如果使用 `kubenet`, 需要为 Kubelet 任意指定一个 CIDR, 例如 `--pod-cidr=10.180.0.0/24`。
|
||||||
|
* `--cloud-provider`: 如果使用 `--cloud-provider=gce`,需要移除这个参数来运行测试。
|
||||||
|
|
||||||
|
2. 执行以下命令来运行节点合规性测试:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# $CONFIG_DIR 是 Kubelet 的 manifest 文件路径。
|
||||||
|
# $LOG_DIR 是测试结果输出的路径。
|
||||||
|
sudo docker run -it --rm --privileged --net=host \
|
||||||
|
-v /:/rootfs -v $CONFIG_DIR:$CONFIG_DIR -v $LOG_DIR:/var/result \
|
||||||
|
gcr.io/google_containers/node-test:0.2
|
||||||
|
```
|
||||||
|
|
||||||
|
## 针对其他硬件体系结构运行节点合规性测试
|
||||||
|
|
||||||
|
Kubernetes 也为其他硬件体系结构的系统提供了节点合规性测试的 Docker 镜像:
|
||||||
|
|
||||||
|
Arch | Image |
|
||||||
|
--------|:-----------------:|
|
||||||
|
amd64 | node-test-amd64 |
|
||||||
|
arm | node-test-arm |
|
||||||
|
arm64 | node-test-arm64 |
|
||||||
|
|
||||||
|
## 运行选定的测试
|
||||||
|
|
||||||
|
为运行指定的测试,用正则表达式来描述将要运行的测试,并重载 `FOCUS` 环境变量。
|
||||||
|
|
||||||
|
```shell
|
||||||
|
sudo docker run -it --rm --privileged --net=host \
|
||||||
|
-v /:/rootfs:ro -v $CONFIG_DIR:$CONFIG_DIR -v $LOG_DIR:/var/result \
|
||||||
|
-e FOCUS=MirrorPod \ # 只运行MirrorPod测试
|
||||||
|
gcr.io/google_containers/node-test:0.2
|
||||||
|
```
|
||||||
|
|
||||||
|
为跳过指定的测试,用正则表达式来描述将要跳过的测试,并重载 `SKIP` 环境变量。
|
||||||
|
|
||||||
|
```shell
|
||||||
|
sudo docker run -it --rm --privileged --net=host \
|
||||||
|
-v /:/rootfs:ro -v $CONFIG_DIR:$CONFIG_DIR -v $LOG_DIR:/var/result \
|
||||||
|
-e SKIP=MirrorPod \ # 运行除MirrorPod外的所有测试
|
||||||
|
gcr.io/google_containers/node-test:0.2
|
||||||
|
```
|
||||||
|
|
||||||
|
节点合规性测试是[节点端到端测试](https://github.com/kubernetes/community/blob/{{page.githubbranch}}/contributors/devel/e2e-node-tests.md)的一个容器化的版本。
|
||||||
|
默认情况下, 它会运行所有的合规性测试用例。
|
||||||
|
|
||||||
|
理论上,只要合理地配置容器和挂载所需的卷,就可以运行任何的节点端到端测试用例。 但是这里 **强烈建议只运行合规性测试**,因为运行非合规性测试需要很多复杂的配置。
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
* 测试会在节点上遗留一些Docker镜像, 包括节点合规性测试本身的镜像,和功能测试相关的镜像。
|
||||||
|
* 测试会在节点上遗留一些死的容器。这些容器是在功能测试的过程中创建的。
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
assignees:
|
approvers:
|
||||||
- thockin
|
- thockin
|
||||||
title: Kubernetes OpenVSwitch GRE/VxLAN 网络
|
title: Kubernetes OpenVSwitch GRE/VxLAN 网络
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -0,0 +1,89 @@
|
|||||||
|
---
|
||||||
|
approvers:
|
||||||
|
- bprashanth
|
||||||
|
- davidopp
|
||||||
|
- lavalamp
|
||||||
|
- liggitt
|
||||||
|
title: 管理Service Accounts
|
||||||
|
---
|
||||||
|
|
||||||
|
*这是一篇针对service accounts(服务账户)的集群管理员指南。 它呈现了 [User Guide to Service Accounts](/docs/user-guide/service-accounts)中的信息。*
|
||||||
|
|
||||||
|
*对授权和用户账户的支持已在规划中,当前并不完备,为了更好地描述service accounts,有时这些不完善的特性也会被提及。*
|
||||||
|
|
||||||
|
## 用户账户与服务账户
|
||||||
|
|
||||||
|
Kubernetes 区分用户账户和服务账户的概念主要基于以下原因:
|
||||||
|
|
||||||
|
- 用户账户是针对人而言的。 服务账户是针对运行在pod中的进程而言的。
|
||||||
|
- 用户账户是全局性的。 其名称在集群各namespace中都是全局唯一的,未来的用户资源不会做namespace隔离,
|
||||||
|
服务账户是namespace隔离的。
|
||||||
|
- 通常情况下,集群的用户账户可能会从企业数据库进行同步,其创建需要特殊权限,并且涉及到复杂的业务流程。 服务账户创建的目的是为了更轻量,允许集群用户为了具体的任务创建服务账户 (即权限最小化原则)。
|
||||||
|
- 对人员和服务账户审计所考虑的因素可能不同。
|
||||||
|
- 针对复杂系统的配置可能包含系统组件相关的各种服务账户的定义。 因为服务账户可以定制化地创建,并且有namespace级别的名称,这种配置是很轻量的。
|
||||||
|
|
||||||
|
## 服务账户的自动化
|
||||||
|
|
||||||
|
三个独立组件协作完成服务账户相关的自动化:
|
||||||
|
|
||||||
|
- 服务账户准入控制器(Service account admission controller)
|
||||||
|
- Token控制器(Token controller)
|
||||||
|
- 服务账户控制器(Service account controller)
|
||||||
|
|
||||||
|
### 服务账户准入控制器
|
||||||
|
|
||||||
|
对pod的改动通过一个被称为[Admission Controller](/docs/admin/admission-controllers)的插件来实现。它是apiserver的一部分。
|
||||||
|
当pod被创建或更新时,它会同步地修改pod。 当该插件处于激活状态(在大多数发行版中都是默认的),当pod被创建或更新时它会进行以下动作:
|
||||||
|
|
||||||
|
1. 如果该pod没有 `ServiceAccount` 设置,将其 `ServiceAccount` 设为 `default`。
|
||||||
|
2. 保证pod所关联的 `ServiceAccount` 存在,否则拒绝该pod。
|
||||||
|
4. 如果pod不包含 `ImagePullSecrets`设置,那么 将 `ServiceAccount`中的`ImagePullSecrets` 信息添加到pod中。
|
||||||
|
5. 将一个包含用于API访问的token的 `volume` 添加到pod中。
|
||||||
|
6. 将挂载于 `/var/run/secrets/kubernetes.io/serviceaccount` 的 `volumeSource`添加到pod下的每个容器中。
|
||||||
|
|
||||||
|
### Token管理器
|
||||||
|
|
||||||
|
Token管理器是controller-manager的一部分。 以异步的形式工作:
|
||||||
|
|
||||||
|
- 检测服务账户的创建,并且创建相应的Secret以支持API访问。
|
||||||
|
- 检测服务账户的删除,并且删除所有相应的服务账户Token Secret。
|
||||||
|
- 检测Secret的增加,保证相应的服务账户存在,如有需要,为Secret增加token。
|
||||||
|
- 检测Secret的删除,如有需要,从相应的服务账户中移除引用。
|
||||||
|
|
||||||
|
你需要通过 `--service-account-private-key-file` 参数项传入一个服务账户私钥文件至Token管理器。 私钥用于为生成的服务账户token签名。
|
||||||
|
同样地,你需要通过 `--service-account-key-file` 参数将对应的公钥传入kube-apiserver。 公钥用于认证过程中的token校验。
|
||||||
|
|
||||||
|
#### 创建额外的 API tokens
|
||||||
|
|
||||||
|
控制器中有专门的循环来保证每个服务账户中都存在API token对应的Secret。 当需要为服务账户创建额外的API token时,创建一个类型为 `ServiceAccountToken` 的Secret,并在annotation中引用服务账户,控制器会生成token并更新:
|
||||||
|
|
||||||
|
secret.json:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"kind": "Secret",
|
||||||
|
"apiVersion": "v1",
|
||||||
|
"metadata": {
|
||||||
|
"name": "mysecretname",
|
||||||
|
"annotations": {
|
||||||
|
"kubernetes.io/service-account.name": "myserviceaccount"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "kubernetes.io/service-account-token"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```shell
|
||||||
|
kubectl create -f ./secret.json
|
||||||
|
kubectl describe secret mysecretname
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 删除/失效 服务账户token
|
||||||
|
|
||||||
|
```shell
|
||||||
|
kubectl delete secret mysecretname
|
||||||
|
```
|
||||||
|
|
||||||
|
### 服务账户管理器
|
||||||
|
|
||||||
|
服务账户管理器管理各命名空间下的服务账户,并且保证每个活跃的命名空间下存在一个名为 "default" 的服务账户
|
||||||
@@ -0,0 +1,248 @@
|
|||||||
|
title: 云控制器管理器的基本概念
|
||||||
|
|
||||||
|
## 云控制器管理器
|
||||||
|
|
||||||
|
云控制器管理器(CCM)这个概念创建的初衷是为了让特定的云服务供应商代码和Kubernetes核心相互独立演化。云控制器管理器与其他主要组件如Kubernetes控制器管理器,API服务器和调度程序同时运行。云控制器管理器也可以作为Kubernetes的插件启动,这种情况下,CCM运行在Kubernetes系统之上。
|
||||||
|
|
||||||
|
云控制器管理器基于插件机制设计,允许新的云服务供应商通过插件轻松地与Kubernetes集成。目前已经有在Kubernetes上加入新的云服务供应商计划,并为云服务供应商提供从原先的旧模式迁移到新CCM模式的方案。
|
||||||
|
|
||||||
|
本文讨论了云控制器管理器背后的概念,并提供了相关功能的详细信息。
|
||||||
|
|
||||||
|
下面这张图描述了没有云控制器管理器的Kubernetes集群架构:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 设计
|
||||||
|
|
||||||
|
在上图中,Kubernetes和云服务供应商通过几个不同的组件进行了集成,分别是:
|
||||||
|
|
||||||
|
* Kubelet
|
||||||
|
* Kubernetes 控制管理器
|
||||||
|
* Kubernetes API服务器
|
||||||
|
|
||||||
|
而CCM整合了前三个组件中的所有依赖于云的逻辑,用来创建与云的单点集成。新架构如下图所示:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## CCM的组件
|
||||||
|
|
||||||
|
CCM突破了Kubernetes控制器管理器(KCM)的一些功能,并将其作为一个独立的进程运行。具体而言,它打破了KCM中与云相关的控制器。KCM具有以下依赖于云的控制器引擎:
|
||||||
|
|
||||||
|
* 节点控制器
|
||||||
|
* 卷控制器
|
||||||
|
* 路由控制器
|
||||||
|
* 服务控制器
|
||||||
|
|
||||||
|
在1.8版本中,当前运行中的CCM从上面的列表中运行以下控制器:
|
||||||
|
|
||||||
|
* 节点控制器
|
||||||
|
* 路由控制器
|
||||||
|
* 服务控制器
|
||||||
|
|
||||||
|
另外,它运行另一个名为 PersistentVolumeLabels Controller 的控制器。这个控制器负责对在GCP和AWS云里创建的PersistentVolumes的域(Zone)和区(Region)标签进行设置。
|
||||||
|
|
||||||
|
**注意**:卷控制器被特意设计为CCM之外的一部分。由于其中涉及到的复杂性和对现有供应商特定卷的逻辑抽象,因此决定了卷控制器不会被移动到CCM之中。
|
||||||
|
|
||||||
|
原本计划使用CCM来支持卷的目的是为了引入FlexVolume卷来支持可插拔卷。然而,官方正在计划使用更具备竞争力的CSI来取代FlexVolume卷。
|
||||||
|
|
||||||
|
考虑到这些正在进行中的变化,我们决定暂时停止当前工作直至CSI准备就绪。
|
||||||
|
|
||||||
|
云服务供应商工作组(wg-cloud-provider)正在开展相关工作,以实现通过CCM支持PersistentVolume的功能。详细信息请参见[kubernetes/kubernetes#52371](https://github.com/kubernetes/kubernetes/pull/52371)。
|
||||||
|
|
||||||
|
## CCM功能
|
||||||
|
|
||||||
|
CCM从Kubernetes组件中继承了与云服务供应商相关的功能。本节基于被CCM继承其功能的组件展开描述。
|
||||||
|
|
||||||
|
### 1. Kubernetes 控制器管理器
|
||||||
|
|
||||||
|
CCM的大部分功能都来自KCM。 如上一节所述,CCM运行以下控制引擎:
|
||||||
|
|
||||||
|
* 节点控制器
|
||||||
|
* 路由控制器
|
||||||
|
* 服务控制器
|
||||||
|
* PersistentVolumeLabels控制器
|
||||||
|
|
||||||
|
#### 节点控制器
|
||||||
|
|
||||||
|
节点控制器负责通过从云服务供应商获得有关在集群中运行的节点的信息来初始化节点。节点控制器执行以下功能:
|
||||||
|
|
||||||
|
1.使用云特定域(Zone)/区(Region)标签初始化节点。
|
||||||
|
|
||||||
|
1.使用特定于云的实例详细信息初始化节点,例如类型和大小。
|
||||||
|
|
||||||
|
1.获取节点的网络地址和主机名。
|
||||||
|
|
||||||
|
1.如果节点无响应,检查该节点是否已从云中删除。如果该节点已从云中删除,则删除Kubernetes节点对象。
|
||||||
|
|
||||||
|
#### 路由控制器
|
||||||
|
|
||||||
|
路由控制器负责为云配置正确的路由,以便Kubernetes集群中不同节点上的容器可以相互通信。路由控制器仅适用于Google Compute Engine平台。
|
||||||
|
|
||||||
|
#### 服务控制器
|
||||||
|
|
||||||
|
服务控制器负责监听服务的创建、更新和删除事件。根据Kubernetes中各个服务的当前状态,它将配置云负载平衡器(如ELB或Google LB)以反映Kubernetes中的服务状态。此外,它还确保云负载均衡器的服务后端保持最新。
|
||||||
|
|
||||||
|
#### PersistentVolumeLabels 控制器
|
||||||
|
|
||||||
|
PersistentVolumeLabels控制器在AWS的EBS卷、GCE的PD卷创建时申请标签,这使得用户不再需要手动设置这些卷标签。
|
||||||
|
|
||||||
|
这些标签对于pod的调度工作是非常重要的,因为这些卷只能在它们所在的域(Zone)/区(Region)内工作,因此所有使用这些卷的pod都必须要在同一个域/区中才能保证进行调度正常进行。
|
||||||
|
|
||||||
|
PersistentVolumeLabels控制器是专门为CCM创建的; 也就是说,在CCM创建之前它是不存在的。这样做是为了将Kubernetes API服务器(它是一个许可控制器)中的PV标签逻辑移动到CCM。 它不在KCM上运行。
|
||||||
|
|
||||||
|
### 2. Kubelet
|
||||||
|
|
||||||
|
Node控制器包含kubelet中依赖于云的功能。在系统引入CCM组件之前,是由kubelet采用包含云特定信息的方式对节点进行初始化,如IP地址、区(Region)/域(Zone)标签和实例类型信息;引入CCM之后,这部分的初始化操作就从kubelet转移到了CCM中。
|
||||||
|
|
||||||
|
在引入CCM后的新的模型中,kubelet采用不包含云特定信息的方式初始化一个节点。但是,它会为新创建的节点添加一个污点,使得该节点不可被立即调度,直到CCM使用包含云的特定信息初始化节点后,才会删除该污点,使得该节点可被调度。
|
||||||
|
|
||||||
|
### 3. Kubernetes API服务器
|
||||||
|
|
||||||
|
PersistentVolumeLabels控制器将Kubernetes API服务器的依赖于云的功能移至CCM,如前面部分所述。
|
||||||
|
|
||||||
|
## 插件机制
|
||||||
|
|
||||||
|
云控制器管理器使用Go接口与外部对接从而实现功能扩展。具体来说,它使用了[这里](https://github.com/kubernetes/kubernetes/blob/master/pkg/cloudprovider/cloud.go)定义的CloudProvider接口。
|
||||||
|
|
||||||
|
上面强调的四个共享控制器的实现,以及一些辅助设施(scaffolding)和共享的云服务供应商接口,将被保留在Kubernetes核心当中。但云服务供应商特有的实现将会建立在核心之外,并实现核心中定义的接口。
|
||||||
|
|
||||||
|
有关开发插件的更多信息,请参阅
|
||||||
|
[开发云控制器管理器](/docs/tasks/administrators-cluster/developing-cloud-controller-manager/)。
|
||||||
|
|
||||||
|
## 授权
|
||||||
|
|
||||||
|
本节分解了CCM对各种API对象的访问,以执行其操作。
|
||||||
|
|
||||||
|
### 节点控制器
|
||||||
|
|
||||||
|
节点控制器仅适用于节点对象。它需要完全访问权限来获取、列出、创建、更新、修补、监视和删除节点对象。
|
||||||
|
|
||||||
|
v1/Node:
|
||||||
|
- Get
|
||||||
|
- List
|
||||||
|
- Create
|
||||||
|
- Update
|
||||||
|
- Patch
|
||||||
|
- Watch
|
||||||
|
|
||||||
|
### 路由控制器
|
||||||
|
|
||||||
|
路由控制器监听节点对象的创建并配置合适的路由。它需要对节点对象的访问权限。
|
||||||
|
|
||||||
|
v1/Node:
|
||||||
|
- Get
|
||||||
|
|
||||||
|
### 服务控制器
|
||||||
|
|
||||||
|
服务控制器侦听服务对象创建、更新和删除事件,然后对这些服务的端点进行恰当的配置。
|
||||||
|
|
||||||
|
要访问服务,它需要罗列和监控权限。要更新服务,它需要修补和更新权限。
|
||||||
|
|
||||||
|
要为服务设置端点,需要访问创建、列表、获取、监视和更新。
|
||||||
|
|
||||||
|
v1/Service:
|
||||||
|
- List
|
||||||
|
- Get
|
||||||
|
- Watch
|
||||||
|
- Patch
|
||||||
|
- Update
|
||||||
|
|
||||||
|
### PersistentVolumeLabels 控制器
|
||||||
|
|
||||||
|
PersistentVolumeLabels控制器监听PersistentVolume(PV)创建事件并更新它们。该控制器需要访问列表、查看、获取和更新PV的权限。
|
||||||
|
|
||||||
|
v1/PersistentVolume:
|
||||||
|
- Get
|
||||||
|
- List
|
||||||
|
- Watch
|
||||||
|
- Update
|
||||||
|
|
||||||
|
### 其它
|
||||||
|
|
||||||
|
CCM核心的实现需要创建事件的权限,为了确保安全操作,需要创建ServiceAccounts的权限。
|
||||||
|
|
||||||
|
v1/Event:
|
||||||
|
- Create
|
||||||
|
- Patch
|
||||||
|
- Update
|
||||||
|
|
||||||
|
v1/ServiceAccount:
|
||||||
|
- Create
|
||||||
|
|
||||||
|
针对CCM的RBAC ClusterRole如下所示:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
name: cloud-controller-manager
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- events
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- patch
|
||||||
|
- update
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- nodes
|
||||||
|
verbs:
|
||||||
|
- '*'
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- nodes/status
|
||||||
|
verbs:
|
||||||
|
- patch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- services
|
||||||
|
verbs:
|
||||||
|
- list
|
||||||
|
- patch
|
||||||
|
- update
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- serviceaccounts
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- persistentvolumes
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- update
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- endpoints
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- update
|
||||||
|
```
|
||||||
|
|
||||||
|
## 供应商实施
|
||||||
|
|
||||||
|
以下云服务供应商为自己的云部署了CCM。
|
||||||
|
|
||||||
|
* [Digital Ocean]()
|
||||||
|
* [Oracle]()
|
||||||
|
* [Azure]()
|
||||||
|
* [GCE]()
|
||||||
|
* [AWS]()
|
||||||
|
|
||||||
|
## 群集管理
|
||||||
|
|
||||||
|
[这里](/docs/tasks/administer-cluster/running-cloud-controller/#cloud-controller-manager)提供了配置和运行CCM的完整说明。
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user