2017-06-22 23:48:48 +00:00
---
title: Custom Resources
2018-02-27 18:51:46 +00:00
reviewers:
2017-06-22 23:48:48 +00:00
- enisoc
- deads2k
2020-05-30 19:10:23 +00:00
content_type: concept
2020-03-16 04:46:35 +00:00
weight: 10
2017-06-22 23:48:48 +00:00
---
2020-05-30 19:10:23 +00:00
<!-- overview -->
Release docs for Kubernetes 1.11 (#9171)
* Seperate priority and preemption (#8144)
* Doc about PID pressure condition. (#8211)
* Doc about PID pressure condition.
Signed-off-by: Da K. Ma <klaus1982.cn@gmail.com>
* "so" -> "too"
* Update version selector for 1.11
* StorageObjectInUseProtection is GA (#8291)
* Feature gate: StorageObjectInUseProtection is GA
Update feature gate reference for 1.11
* Trivial commit to re-trigger Netlify
* CRIContainerLogRotation is Beta in 1.11 (#8665)
* Seperate priority and preemption (#8144)
* CRIContainerLogRotation is Beta in 1.11
xref: kubernetes/kubernetes#64046
* Bring StorageObjectInUseProtection feature to GA (#8159)
* StorageObjectInUseProtection is GA (#8291)
* Feature gate: StorageObjectInUseProtection is GA
Update feature gate reference for 1.11
* Trivial commit to re-trigger Netlify
* Bring StorageObjectInUseProtection feature to GA
StorageObjectInUseProtection is Beta in K8s 1.10.
It's brought to GA in K8s 1.11.
* Fixed typo and added feature state tags.
* Remove KUBE_API_VERSIONS doc (#8292)
The support to the KUBER_API_VERSIONS environment variable is completely
dropped (no deprecation). This PR removes the related doc in
release-1.11.
xref: kubernetes/kubernetes#63165
* Remove InitialResources from admission controllers (#8293)
The feature (was experimental) is dropped in 1.11.
xref: kubernetes/kubernetes#58784
* Remove docs related to in-tree support to GPU (#8294)
* Remove docs related to in-tree support to GPU
The in-tree support to GPU is completely removed in release 1.11.
This PR removes the related docs in release-1.11 branch.
xref: kubernetes/kubernetes#61498
* Update content updated by PR to Hugo syntax
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Update the doc about extra volume in kubeadm config (#8453)
Signed-off-by: Xianglin Gao <xianglin.gxl@alibaba-inc.com>
* Update CRD Subresources for 1.11 (#8519)
* coredns: update notes in administer-cluster/coredns.md (#8697)
CoreDNS is installed by default in 1.11.
Add notes on how to install kube-dns instead.
Update notes about CoreDNS->CoreDNS upgrades as in 1.11
the Corefile is retained.
Add example on upgrading from kube-dns to CoreDNS.
* kubeadm-alpha: CoreDNS related changes (#8727)
Update note about CoreDNS feature gate.
This change also updates a tab as a kubeadm sub-command
will change.
It looks for a new generated file:
generated/kubeadm_alpha_phase_addon_coredns.md
instead of:
generated/kubeadm_alpha_phase_addon_kube-dns.md
* Update cloud controller manager docs to beta 1.11 (#8756)
* Update cloud controller manager docs to beta 1.11
* Use Hugo shortcode for feature state
* kubeadm-upgrade: include new command `kubeadm upgrade diff` (#8617)
Also:
- Include note that this was added in 1.11.
- Modify the note about upgrade guidance.
* independent: update CoreDNS mentions for kubeadm (#8753)
Give CoreDNS instead of kube-dns examples in:
- docs/setup/independent/create-cluster-kubeadm.md
- docs/setup/independent/troubleshooting-kubeadm.md
* update 1.11 --server-print info (#8870)
* update 1.11 --server-print info
* Copyedit
* Mark ExpandPersistentVolumes feature to beta (#8778)
* Update version selector for 1.11
* Mark ExpandPersistentVolumes Beta
xref: kubernetes/kubernetes#64288
* fix shortcode, add placeholder files to fix deploy failures (#8874)
* declare ipvs ga (#8850)
* kubeadm: update info about CoreDNS in kubeadm-init.md (#8728)
Add info to install kube-dns instead of CoreDNS, as CoreDNS
is the default DNS server in 1.11.
Add notes that kubeadm config images can be used to list and pull
the required images in 1.11.
* kubeadm: update implementation-details.md about CoreDNS (#8829)
- Replace examples from kube-dns to CoreDNS
- Add notes about the CoreDNS feature gate status in 1.11
- Add note that the service name for CoreDNS is also
called `kube-dns`
* Update block device support for 1.11 (#8895)
* Update block device support for 1.11
* Copyedits
* Fix typo 'fiber channel' (#8957)
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* kubeadm-upgrade: add the 'node [config]' sub-command (#8960)
- Add includes for the generated pages
- Include placeholder generated pages
* kubeadm-init: update the example for the MasterConfiguration (#8958)
- include godocs link for MasterConfiguration
- include example MasterConfiguration
- add note that `kubeadm config print-default` can be used
* kubeadm-config: include new commands (#8862)
Add notes and includes for these new commands in 1.11:
- kubeadm config print-default
- kubeadm config migrate
- kubeadm config images list
- kubeadm config images pull
Include placeholder generated files for the above.
* administer-cluster/coredns: include more changes (#8985)
It was requested that for this page a couple of methods
should be outlined:
- manual installation for CoreDNS explained at the Kubernetes
section of the GitHub project for CoreDNS
- installation and upgrade via kubeadm
Make the above changes and also add a section "About CoreDNS".
This commit also lowercases a section title.
* Update CRD subresources doc for 1.11 (#8918)
* Add docs for volume expansion and online resizing (#8896)
* Add docs for volume expansion going beta
* Copyedit
* Address feedback
* Update exec plugin docs with TLS credentials (#8826)
* Update exec plugin docs with TLS credentials
kubernetes/kubernetes#61803 implements TLS client credential support for
1.11.
* Copyedit
* More copyedits for clarification
* Additional copyedit
* Change token->credential
* NodeRestriction admission prevents kubelet taint removal (#8911)
* dns-custom-namerserver: break down the page into mutliple sections (#8900)
* dns-custom-namerserver: break down the page into mutliple sections
This page is currently about kube-dns and is a bit outdated.
Introduce the heading `# Customizing kube-dns`.
Introduce a separate section about CoreDNS.
* Copyedits, fix headings for customizing DNS
Hey Lubomir,
I coypedited pretty heavily because this workflow is so much easier for docs and because I'm trying to help improve everything touching kubeadm as much as possible.
But there's one outstanding issue wrt headings and intro content: you can't add a heading 1 to a topic to do what you wanted to do. The page title in the front matter is rendered as a heading 1 and everything else has to start at heading 2. (We still need to doc this better in the docs contributing content, I know.)
Instead, I think we need to rewrite the top-of-page intro content to explain better the relationship between kube-dns and CoreDNS. I'm happy to write something, but I thought I'd push this commit first so you can see what I'm doing.
Hope it's all clear -- ping here or on Slack with any questions ~ Jennifer
* Interim fix for talking about CoreDNS
* Fix CoreDNS details
* PSP readOnly hostPath (#8898)
* Add documentation for crictl (#8880)
* Add documentation for crictl
* Copyedit
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Final copyedit
* VolumeSubpathEnvExpansion alpha feature (#8835)
* Note that Heapster is deprecated (#8827)
* Note that Heapster is deprecated
This notes that Heapster is deprecated, and migrates the relevant
docs to talk about metrics-server or other solutions by default.
* Copyedits and improvements
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Address feedback
* fix shortcode to troubleshoot deploy (#9057)
* update dynamic kubelet config docs for v1.11 (#8766)
* update dynamic kubelet config docs for v1.11
* Substantial copyedit
* Address feedback
* Reference doc for kubeadm (release-1.11) (#9044)
* Reference doc for kubeadm (release-1.11)
* fix shortcode to troubleshoot deploy (#9057)
* Reference doc for kube-components (release-1.11) (#9045)
* Reference doc for kube-components (release-1.11)
* Update cloud-controller-manager.md
* fix shortcode to troubleshoot deploy (#9057)
* Documentation on lowercasing kubeadm init apiserver SANs (#9059)
* Documentation on lowercasing kubeadm init apiserver SANs
* fix shortcode to troubleshoot deploy (#9057)
* Clarification in dynamic Kubelet config doc (#9061)
* Promote sysctls to Beta (#8804)
* Promote sysctls to Beta
* Copyedits
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Review comments
* Address feedback
* More feedback
* kubectl reference docs for 1.11 (#9080)
* Update Kubernetes API 1.11 ref docs (#8977)
* Update v1alpha1 to v1beta1.
* Adjust left nav for 1.11 ref docs.
* Trim list of old ref docs.
* Update Federation API ref docs for 1.11. (#9064)
* Update Federation API ref docs for 1.11.
* Add titles.
* Update definitions.html
* CRD versioning Public Documentation (#8834)
* CRD versioning Public Documentation
* Copyedit
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Address feedback
* More rewrites
* Address feedback
* Update main CRD page in light of versioning
* Reorg CRD docs
* Further reorg
* Tweak title
* CSI documentation update for raw block volume support (#8927)
* CSI documetation update for raw block volume support
* minor edits for "CSI raw block volume support"
Some small grammar and style nits.
* minor CSIBlockVolume edits
* Update kubectl component ref page for 1.11. (#9094)
* Update kubectl component ref page for 1.11.
* Add title. Replace stevepe with username.
* crd versioning doc: fix nits (#9142)
* Update `DynamicKubeletConfig` feature to beta (#9110)
xref: kubernetes/kubernetes#64275
* Documentation for dynamic volume limits based on node type (#8871)
* add cos for storage limits
* Update docs specific for aws and gce
* fix some minor things
* Update storage-limits.md
* Add k8s version to feature-state shortcode
* The Doc update for ScheduleDaemonSetPods (#8842)
Signed-off-by: Da K. Ma <klaus1982.cn@gmail.com>
* Update docs related to PersistentVolumeLabel admission control (#9109)
The said admission controller is disabled by default in 1.11
(kubernetes/kubernetes#64326) and scheduled to be removed in future
release.
* client exec auth: updates for 1.11 (#9154)
* Updates HA kubeadm docs (#9066)
* Updates HA kubeadm docs
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* kubeadm HA - Add stacked control plane steps
* ssh instructions and some typos in the bash scripts
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* Fix typos and copypasta errors
* Fix rebase issues
* Integrate more changes
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* copyedits, layout and formatting fixes
* final copyedits
* Adds a sanity check for load balancer connection
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* formatting fixes, copyedits
* fix typos, formatting
* Document the Pod Ready++ feature (#9180)
Closes: #9107
Xref: kubernetes/kubernetes#64057
* Mention 'KubeletPluginsWatcher' feature (#9177)
* Mention 'KubeletPluginsWatcher' feature
This feature is more developers oriented than users oriented, so simply
mention it in the feature gate should be fine.
In future, when the design doc is migrated from Google doc to the
kubernetes/community repo, we can add links to it for users who want to
dig deeper.
Closes: #9108
Xref: kubernetes/kubernetes#63328, kubernetes/kubernetes#64605
* Copyedit
* Amend dynamic volume list docs (#9181)
The dynamic volume list feature has been documented but the feature gate
related was not there yet.
Closes: #9105
* Document for service account projection (#9182)
This adds docs for the service account projection feature.
Xref: kubernetes/kubernetes#63819, kubernetes/community#1973
Closes: #9102
* Update pod priority and preemption user docs (#9172)
* Update pod priority and preemption user docs
* Copyedit
* Documentation on setting node name with Kubeadm (#8925)
* Documentation on setting node name with Kubeadm
* copyedit
* Add kubeadm upgrade docs for 1.11 (#9089)
* Add kubeadm upgrade docs for 1.11
* Initial docs review feedback
* Add 1-11 to outline
* Fix formatting on tab blocks
* Move file to correct location
* Add `kubeadm upgrade node config` step
* Overzealous ediffing
* copyedit, fix lists and headings
* clarify --force flag for fixing bad state
* Get TOML ready for 1.11 release
* Blog post for 1.11 release (#9254)
* Blog post for 1.11 release
* Update 2018-06-26-kubernetes-1.11-release-announcement.md
* Update 2018-06-26-kubernetes-1.11-release-announcement.md
* Update 2018-06-26-kubernetes-1.11-release-announcement.md
2018-06-27 22:26:18 +00:00
2019-02-28 04:53:31 +00:00
*Custom resources* are extensions of the Kubernetes API. This page discusses when to add a custom
resource to your Kubernetes cluster and when to use a standalone service. It describes the two
methods for adding custom resources and how to choose between them.
2017-11-29 19:47:48 +00:00
2020-05-30 19:10:23 +00:00
<!-- body -->
2017-06-22 23:48:48 +00:00
## Custom resources
2020-10-12 23:41:14 +00:00
A *resource* is an endpoint in the [Kubernetes API ](/docs/concepts/overview/kubernetes-api/ ) that stores a collection of
2020-03-04 05:19:05 +00:00
[API objects ](/docs/concepts/overview/working-with-objects/kubernetes-objects/ ) of a certain kind; for example, the built-in *pods* resource contains a collection of Pod objects.
2017-06-22 23:48:48 +00:00
2019-02-28 04:53:31 +00:00
A *custom resource* is an extension of the Kubernetes API that is not necessarily available in a default
Kubernetes installation. It represents a customization of a particular Kubernetes installation. However,
many core Kubernetes functions are now built using custom resources, making Kubernetes more modular.
2017-06-22 23:48:48 +00:00
Custom resources can appear and disappear in a running cluster through dynamic registration,
and cluster admins can update custom resources independently of the cluster itself.
2019-02-28 04:53:31 +00:00
Once a custom resource is installed, users can create and access its objects using
2020-07-17 08:11:14 +00:00
[kubectl ](/docs/reference/kubectl/overview/ ), just as they do for built-in resources like
2019-02-28 04:53:31 +00:00
*Pods*.
2017-06-22 23:48:48 +00:00
2019-02-28 04:53:31 +00:00
## Custom controllers
2017-06-22 23:48:48 +00:00
2021-02-04 21:41:29 +00:00
On their own, custom resources let you store and retrieve structured data.
2019-02-28 04:53:31 +00:00
When you combine a custom resource with a *custom controller* , custom resources
provide a true _declarative API_ .
2021-08-12 20:21:27 +00:00
The Kubernetes [declarative API ](/docs/concepts/overview/kubernetes-api/ )
enforces a separation of responsibilities. You declare the desired state of
your resource. The Kubernetes controller keeps the current state of Kubernetes
objects in sync with your declared desired state. This is in contrast to an
imperative API, where you *instruct* a server what to do.
2017-11-29 19:47:48 +00:00
2019-02-28 04:53:31 +00:00
You can deploy and update a custom controller on a running cluster, independently
2020-01-29 22:20:14 +00:00
of the cluster's lifecycle. Custom controllers can work with any kind of resource,
2019-02-28 04:53:31 +00:00
but they are especially effective when combined with custom resources. The
2021-03-29 03:54:32 +00:00
[Operator pattern ](/docs/concepts/extend-kubernetes/operator/ ) combines custom
2019-02-28 04:53:31 +00:00
resources and custom controllers. You can use custom controllers to encode domain knowledge
for specific applications into an extension of the Kubernetes API.
2017-11-29 19:47:48 +00:00
2019-02-28 04:53:31 +00:00
## Should I add a custom resource to my Kubernetes Cluster?
2017-11-29 19:47:48 +00:00
2020-07-17 08:11:14 +00:00
When creating a new API, consider whether to
[aggregate your API with the Kubernetes cluster APIs ](/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/ )
or let your API stand alone.
2017-11-29 19:47:48 +00:00
| Consider API aggregation if: | Prefer a stand-alone API if: |
2018-05-10 17:31:54 +00:00
| ---------------------------- | ---------------------------- |
2017-11-29 19:47:48 +00:00
| Your API is [Declarative ](#declarative-apis ). | Your API does not fit the [Declarative ](#declarative-apis ) model. |
| You want your new types to be readable and writable using `kubectl` .| `kubectl` support is not required |
2018-02-01 12:24:09 +00:00
| You want to view your new types in a Kubernetes UI, such as dashboard, alongside built-in types. | Kubernetes UI support is not required. |
2018-02-07 01:01:44 +00:00
| You are developing a new API. | You already have a program that serves your API and works well. |
2017-11-29 19:47:48 +00:00
| You are willing to accept the format restriction that Kubernetes puts on REST resource paths, such as API Groups and Namespaces. (See the [API Overview ](/docs/concepts/overview/kubernetes-api/ ).) | You need to have specific REST paths to be compatible with an already defined REST API. |
2020-01-29 22:20:14 +00:00
| Your resources are naturally scoped to a cluster or namespaces of a cluster. | Cluster or namespace scoped resources are a poor fit; you need control over the specifics of resource paths. |
2017-11-29 19:47:48 +00:00
| You want to reuse [Kubernetes API support features ](#common-features ). | You don't need those features. |
2019-02-28 04:53:31 +00:00
### Declarative APIs
2017-11-29 19:47:48 +00:00
In a Declarative API, typically:
2018-05-10 17:31:54 +00:00
2017-12-16 02:59:08 +00:00
- Your API consists of a relatively small number of relatively small objects (resources).
- The objects define configuration of applications or infrastructure.
- The objects are updated relatively infrequently.
- Humans often need to read and write the objects.
- The main operations on the objects are CRUD-y (creating, reading, updating and deleting).
- Transactions across objects are not required: the API represents a desired state, not an exact state.
2017-11-29 19:47:48 +00:00
2017-12-18 17:36:31 +00:00
Imperative APIs are not declarative.
2017-11-29 19:47:48 +00:00
Signs that your API might not be declarative include:
2018-05-10 17:31:54 +00:00
2018-02-01 12:22:05 +00:00
- The client says "do this", and then gets a synchronous response back when it is done.
2018-12-04 09:36:24 +00:00
- The client says "do this", and then gets an operation ID back, and has to check a separate Operation object to determine completion of the request.
2017-12-16 02:59:08 +00:00
- You talk about Remote Procedure Calls (RPCs).
2020-03-04 05:19:05 +00:00
- Directly storing large amounts of data; for example, > a few kB per object, or > 1000s of objects.
2017-12-16 02:59:08 +00:00
- High bandwidth access (10s of requests per second sustained) needed.
2020-01-29 22:20:14 +00:00
- Store end-user data (such as images, PII, etc.) or other large-scale data processed by applications.
2017-12-16 02:59:08 +00:00
- The natural operations on the objects are not CRUD-y.
- The API is not easily modeled as objects.
2018-12-04 09:36:24 +00:00
- You chose to represent pending operations with an operation ID or an operation object.
2017-11-29 19:47:48 +00:00
2019-02-28 04:53:31 +00:00
## Should I use a configMap or a custom resource?
2017-11-29 19:47:48 +00:00
Use a ConfigMap if any of the following apply:
* There is an existing, well-documented config file format, such as a `mysql.cnf` or `pom.xml` .
* You want to put the entire config file into one key of a configMap.
* The main use of the config file is for a program running in a Pod on your cluster to consume the file to configure itself.
* Consumers of the file prefer to consume via file in a Pod or environment variable in a pod, rather than the Kubernetes API.
2020-01-29 22:20:14 +00:00
* You want to perform rolling updates via Deployment, etc., when the file is updated.
2017-11-29 19:47:48 +00:00
2018-05-05 16:00:51 +00:00
{{< note > }}
2018-11-06 19:33:04 +00:00
Use a [secret ](/docs/concepts/configuration/secret/ ) for sensitive data, which is similar to a configMap but more secure.
2018-05-05 16:00:51 +00:00
{{< / note > }}
2017-11-29 19:47:48 +00:00
Use a custom resource (CRD or Aggregated API) if most of the following apply:
* You want to use Kubernetes client libraries and CLIs to create and update the new resource.
2020-03-04 05:19:05 +00:00
* You want top-level support from `kubectl` ; for example, `kubectl get my-object object-name` .
2017-11-29 19:47:48 +00:00
* You want to build new automation that watches for updates on the new object, and then CRUD other objects, or vice versa.
* You want to write automation that handles updates to the object.
* You want to use Kubernetes API conventions like `.spec` , `.status` , and `.metadata` .
* You want the object to be an abstraction over a collection of controlled resources, or a summarization of other resources.
## Adding custom resources
Kubernetes provides two ways to add custom resources to your cluster:
Release docs for Kubernetes 1.11 (#9171)
* Seperate priority and preemption (#8144)
* Doc about PID pressure condition. (#8211)
* Doc about PID pressure condition.
Signed-off-by: Da K. Ma <klaus1982.cn@gmail.com>
* "so" -> "too"
* Update version selector for 1.11
* StorageObjectInUseProtection is GA (#8291)
* Feature gate: StorageObjectInUseProtection is GA
Update feature gate reference for 1.11
* Trivial commit to re-trigger Netlify
* CRIContainerLogRotation is Beta in 1.11 (#8665)
* Seperate priority and preemption (#8144)
* CRIContainerLogRotation is Beta in 1.11
xref: kubernetes/kubernetes#64046
* Bring StorageObjectInUseProtection feature to GA (#8159)
* StorageObjectInUseProtection is GA (#8291)
* Feature gate: StorageObjectInUseProtection is GA
Update feature gate reference for 1.11
* Trivial commit to re-trigger Netlify
* Bring StorageObjectInUseProtection feature to GA
StorageObjectInUseProtection is Beta in K8s 1.10.
It's brought to GA in K8s 1.11.
* Fixed typo and added feature state tags.
* Remove KUBE_API_VERSIONS doc (#8292)
The support to the KUBER_API_VERSIONS environment variable is completely
dropped (no deprecation). This PR removes the related doc in
release-1.11.
xref: kubernetes/kubernetes#63165
* Remove InitialResources from admission controllers (#8293)
The feature (was experimental) is dropped in 1.11.
xref: kubernetes/kubernetes#58784
* Remove docs related to in-tree support to GPU (#8294)
* Remove docs related to in-tree support to GPU
The in-tree support to GPU is completely removed in release 1.11.
This PR removes the related docs in release-1.11 branch.
xref: kubernetes/kubernetes#61498
* Update content updated by PR to Hugo syntax
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Update the doc about extra volume in kubeadm config (#8453)
Signed-off-by: Xianglin Gao <xianglin.gxl@alibaba-inc.com>
* Update CRD Subresources for 1.11 (#8519)
* coredns: update notes in administer-cluster/coredns.md (#8697)
CoreDNS is installed by default in 1.11.
Add notes on how to install kube-dns instead.
Update notes about CoreDNS->CoreDNS upgrades as in 1.11
the Corefile is retained.
Add example on upgrading from kube-dns to CoreDNS.
* kubeadm-alpha: CoreDNS related changes (#8727)
Update note about CoreDNS feature gate.
This change also updates a tab as a kubeadm sub-command
will change.
It looks for a new generated file:
generated/kubeadm_alpha_phase_addon_coredns.md
instead of:
generated/kubeadm_alpha_phase_addon_kube-dns.md
* Update cloud controller manager docs to beta 1.11 (#8756)
* Update cloud controller manager docs to beta 1.11
* Use Hugo shortcode for feature state
* kubeadm-upgrade: include new command `kubeadm upgrade diff` (#8617)
Also:
- Include note that this was added in 1.11.
- Modify the note about upgrade guidance.
* independent: update CoreDNS mentions for kubeadm (#8753)
Give CoreDNS instead of kube-dns examples in:
- docs/setup/independent/create-cluster-kubeadm.md
- docs/setup/independent/troubleshooting-kubeadm.md
* update 1.11 --server-print info (#8870)
* update 1.11 --server-print info
* Copyedit
* Mark ExpandPersistentVolumes feature to beta (#8778)
* Update version selector for 1.11
* Mark ExpandPersistentVolumes Beta
xref: kubernetes/kubernetes#64288
* fix shortcode, add placeholder files to fix deploy failures (#8874)
* declare ipvs ga (#8850)
* kubeadm: update info about CoreDNS in kubeadm-init.md (#8728)
Add info to install kube-dns instead of CoreDNS, as CoreDNS
is the default DNS server in 1.11.
Add notes that kubeadm config images can be used to list and pull
the required images in 1.11.
* kubeadm: update implementation-details.md about CoreDNS (#8829)
- Replace examples from kube-dns to CoreDNS
- Add notes about the CoreDNS feature gate status in 1.11
- Add note that the service name for CoreDNS is also
called `kube-dns`
* Update block device support for 1.11 (#8895)
* Update block device support for 1.11
* Copyedits
* Fix typo 'fiber channel' (#8957)
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* kubeadm-upgrade: add the 'node [config]' sub-command (#8960)
- Add includes for the generated pages
- Include placeholder generated pages
* kubeadm-init: update the example for the MasterConfiguration (#8958)
- include godocs link for MasterConfiguration
- include example MasterConfiguration
- add note that `kubeadm config print-default` can be used
* kubeadm-config: include new commands (#8862)
Add notes and includes for these new commands in 1.11:
- kubeadm config print-default
- kubeadm config migrate
- kubeadm config images list
- kubeadm config images pull
Include placeholder generated files for the above.
* administer-cluster/coredns: include more changes (#8985)
It was requested that for this page a couple of methods
should be outlined:
- manual installation for CoreDNS explained at the Kubernetes
section of the GitHub project for CoreDNS
- installation and upgrade via kubeadm
Make the above changes and also add a section "About CoreDNS".
This commit also lowercases a section title.
* Update CRD subresources doc for 1.11 (#8918)
* Add docs for volume expansion and online resizing (#8896)
* Add docs for volume expansion going beta
* Copyedit
* Address feedback
* Update exec plugin docs with TLS credentials (#8826)
* Update exec plugin docs with TLS credentials
kubernetes/kubernetes#61803 implements TLS client credential support for
1.11.
* Copyedit
* More copyedits for clarification
* Additional copyedit
* Change token->credential
* NodeRestriction admission prevents kubelet taint removal (#8911)
* dns-custom-namerserver: break down the page into mutliple sections (#8900)
* dns-custom-namerserver: break down the page into mutliple sections
This page is currently about kube-dns and is a bit outdated.
Introduce the heading `# Customizing kube-dns`.
Introduce a separate section about CoreDNS.
* Copyedits, fix headings for customizing DNS
Hey Lubomir,
I coypedited pretty heavily because this workflow is so much easier for docs and because I'm trying to help improve everything touching kubeadm as much as possible.
But there's one outstanding issue wrt headings and intro content: you can't add a heading 1 to a topic to do what you wanted to do. The page title in the front matter is rendered as a heading 1 and everything else has to start at heading 2. (We still need to doc this better in the docs contributing content, I know.)
Instead, I think we need to rewrite the top-of-page intro content to explain better the relationship between kube-dns and CoreDNS. I'm happy to write something, but I thought I'd push this commit first so you can see what I'm doing.
Hope it's all clear -- ping here or on Slack with any questions ~ Jennifer
* Interim fix for talking about CoreDNS
* Fix CoreDNS details
* PSP readOnly hostPath (#8898)
* Add documentation for crictl (#8880)
* Add documentation for crictl
* Copyedit
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Final copyedit
* VolumeSubpathEnvExpansion alpha feature (#8835)
* Note that Heapster is deprecated (#8827)
* Note that Heapster is deprecated
This notes that Heapster is deprecated, and migrates the relevant
docs to talk about metrics-server or other solutions by default.
* Copyedits and improvements
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Address feedback
* fix shortcode to troubleshoot deploy (#9057)
* update dynamic kubelet config docs for v1.11 (#8766)
* update dynamic kubelet config docs for v1.11
* Substantial copyedit
* Address feedback
* Reference doc for kubeadm (release-1.11) (#9044)
* Reference doc for kubeadm (release-1.11)
* fix shortcode to troubleshoot deploy (#9057)
* Reference doc for kube-components (release-1.11) (#9045)
* Reference doc for kube-components (release-1.11)
* Update cloud-controller-manager.md
* fix shortcode to troubleshoot deploy (#9057)
* Documentation on lowercasing kubeadm init apiserver SANs (#9059)
* Documentation on lowercasing kubeadm init apiserver SANs
* fix shortcode to troubleshoot deploy (#9057)
* Clarification in dynamic Kubelet config doc (#9061)
* Promote sysctls to Beta (#8804)
* Promote sysctls to Beta
* Copyedits
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Review comments
* Address feedback
* More feedback
* kubectl reference docs for 1.11 (#9080)
* Update Kubernetes API 1.11 ref docs (#8977)
* Update v1alpha1 to v1beta1.
* Adjust left nav for 1.11 ref docs.
* Trim list of old ref docs.
* Update Federation API ref docs for 1.11. (#9064)
* Update Federation API ref docs for 1.11.
* Add titles.
* Update definitions.html
* CRD versioning Public Documentation (#8834)
* CRD versioning Public Documentation
* Copyedit
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Address feedback
* More rewrites
* Address feedback
* Update main CRD page in light of versioning
* Reorg CRD docs
* Further reorg
* Tweak title
* CSI documentation update for raw block volume support (#8927)
* CSI documetation update for raw block volume support
* minor edits for "CSI raw block volume support"
Some small grammar and style nits.
* minor CSIBlockVolume edits
* Update kubectl component ref page for 1.11. (#9094)
* Update kubectl component ref page for 1.11.
* Add title. Replace stevepe with username.
* crd versioning doc: fix nits (#9142)
* Update `DynamicKubeletConfig` feature to beta (#9110)
xref: kubernetes/kubernetes#64275
* Documentation for dynamic volume limits based on node type (#8871)
* add cos for storage limits
* Update docs specific for aws and gce
* fix some minor things
* Update storage-limits.md
* Add k8s version to feature-state shortcode
* The Doc update for ScheduleDaemonSetPods (#8842)
Signed-off-by: Da K. Ma <klaus1982.cn@gmail.com>
* Update docs related to PersistentVolumeLabel admission control (#9109)
The said admission controller is disabled by default in 1.11
(kubernetes/kubernetes#64326) and scheduled to be removed in future
release.
* client exec auth: updates for 1.11 (#9154)
* Updates HA kubeadm docs (#9066)
* Updates HA kubeadm docs
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* kubeadm HA - Add stacked control plane steps
* ssh instructions and some typos in the bash scripts
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* Fix typos and copypasta errors
* Fix rebase issues
* Integrate more changes
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* copyedits, layout and formatting fixes
* final copyedits
* Adds a sanity check for load balancer connection
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* formatting fixes, copyedits
* fix typos, formatting
* Document the Pod Ready++ feature (#9180)
Closes: #9107
Xref: kubernetes/kubernetes#64057
* Mention 'KubeletPluginsWatcher' feature (#9177)
* Mention 'KubeletPluginsWatcher' feature
This feature is more developers oriented than users oriented, so simply
mention it in the feature gate should be fine.
In future, when the design doc is migrated from Google doc to the
kubernetes/community repo, we can add links to it for users who want to
dig deeper.
Closes: #9108
Xref: kubernetes/kubernetes#63328, kubernetes/kubernetes#64605
* Copyedit
* Amend dynamic volume list docs (#9181)
The dynamic volume list feature has been documented but the feature gate
related was not there yet.
Closes: #9105
* Document for service account projection (#9182)
This adds docs for the service account projection feature.
Xref: kubernetes/kubernetes#63819, kubernetes/community#1973
Closes: #9102
* Update pod priority and preemption user docs (#9172)
* Update pod priority and preemption user docs
* Copyedit
* Documentation on setting node name with Kubeadm (#8925)
* Documentation on setting node name with Kubeadm
* copyedit
* Add kubeadm upgrade docs for 1.11 (#9089)
* Add kubeadm upgrade docs for 1.11
* Initial docs review feedback
* Add 1-11 to outline
* Fix formatting on tab blocks
* Move file to correct location
* Add `kubeadm upgrade node config` step
* Overzealous ediffing
* copyedit, fix lists and headings
* clarify --force flag for fixing bad state
* Get TOML ready for 1.11 release
* Blog post for 1.11 release (#9254)
* Blog post for 1.11 release
* Update 2018-06-26-kubernetes-1.11-release-announcement.md
* Update 2018-06-26-kubernetes-1.11-release-announcement.md
* Update 2018-06-26-kubernetes-1.11-release-announcement.md
2018-06-27 22:26:18 +00:00
- CRDs are simple and can be created without any programming.
2018-11-27 09:29:22 +00:00
- [API Aggregation ](/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/ ) requires programming, but allows more control over API behaviors like how data is stored and conversion between API versions.
2017-11-29 19:47:48 +00:00
2018-11-16 18:29:24 +00:00
Kubernetes provides these two options to meet the needs of different users, so that neither ease of use nor flexibility is compromised.
2017-11-29 19:47:48 +00:00
2021-02-04 21:41:29 +00:00
Aggregated APIs are subordinate API servers that sit behind the primary API server, which acts as a proxy. This arrangement is called [API Aggregation ](/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/ ) (AA). To users, the Kubernetes API appears extended.
2017-11-29 19:47:48 +00:00
2020-03-04 05:19:05 +00:00
CRDs allow users to create new types of resources without adding another API server. You do not need to understand API Aggregation to use CRDs.
2017-11-29 19:47:48 +00:00
Release docs for Kubernetes 1.11 (#9171)
* Seperate priority and preemption (#8144)
* Doc about PID pressure condition. (#8211)
* Doc about PID pressure condition.
Signed-off-by: Da K. Ma <klaus1982.cn@gmail.com>
* "so" -> "too"
* Update version selector for 1.11
* StorageObjectInUseProtection is GA (#8291)
* Feature gate: StorageObjectInUseProtection is GA
Update feature gate reference for 1.11
* Trivial commit to re-trigger Netlify
* CRIContainerLogRotation is Beta in 1.11 (#8665)
* Seperate priority and preemption (#8144)
* CRIContainerLogRotation is Beta in 1.11
xref: kubernetes/kubernetes#64046
* Bring StorageObjectInUseProtection feature to GA (#8159)
* StorageObjectInUseProtection is GA (#8291)
* Feature gate: StorageObjectInUseProtection is GA
Update feature gate reference for 1.11
* Trivial commit to re-trigger Netlify
* Bring StorageObjectInUseProtection feature to GA
StorageObjectInUseProtection is Beta in K8s 1.10.
It's brought to GA in K8s 1.11.
* Fixed typo and added feature state tags.
* Remove KUBE_API_VERSIONS doc (#8292)
The support to the KUBER_API_VERSIONS environment variable is completely
dropped (no deprecation). This PR removes the related doc in
release-1.11.
xref: kubernetes/kubernetes#63165
* Remove InitialResources from admission controllers (#8293)
The feature (was experimental) is dropped in 1.11.
xref: kubernetes/kubernetes#58784
* Remove docs related to in-tree support to GPU (#8294)
* Remove docs related to in-tree support to GPU
The in-tree support to GPU is completely removed in release 1.11.
This PR removes the related docs in release-1.11 branch.
xref: kubernetes/kubernetes#61498
* Update content updated by PR to Hugo syntax
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Update the doc about extra volume in kubeadm config (#8453)
Signed-off-by: Xianglin Gao <xianglin.gxl@alibaba-inc.com>
* Update CRD Subresources for 1.11 (#8519)
* coredns: update notes in administer-cluster/coredns.md (#8697)
CoreDNS is installed by default in 1.11.
Add notes on how to install kube-dns instead.
Update notes about CoreDNS->CoreDNS upgrades as in 1.11
the Corefile is retained.
Add example on upgrading from kube-dns to CoreDNS.
* kubeadm-alpha: CoreDNS related changes (#8727)
Update note about CoreDNS feature gate.
This change also updates a tab as a kubeadm sub-command
will change.
It looks for a new generated file:
generated/kubeadm_alpha_phase_addon_coredns.md
instead of:
generated/kubeadm_alpha_phase_addon_kube-dns.md
* Update cloud controller manager docs to beta 1.11 (#8756)
* Update cloud controller manager docs to beta 1.11
* Use Hugo shortcode for feature state
* kubeadm-upgrade: include new command `kubeadm upgrade diff` (#8617)
Also:
- Include note that this was added in 1.11.
- Modify the note about upgrade guidance.
* independent: update CoreDNS mentions for kubeadm (#8753)
Give CoreDNS instead of kube-dns examples in:
- docs/setup/independent/create-cluster-kubeadm.md
- docs/setup/independent/troubleshooting-kubeadm.md
* update 1.11 --server-print info (#8870)
* update 1.11 --server-print info
* Copyedit
* Mark ExpandPersistentVolumes feature to beta (#8778)
* Update version selector for 1.11
* Mark ExpandPersistentVolumes Beta
xref: kubernetes/kubernetes#64288
* fix shortcode, add placeholder files to fix deploy failures (#8874)
* declare ipvs ga (#8850)
* kubeadm: update info about CoreDNS in kubeadm-init.md (#8728)
Add info to install kube-dns instead of CoreDNS, as CoreDNS
is the default DNS server in 1.11.
Add notes that kubeadm config images can be used to list and pull
the required images in 1.11.
* kubeadm: update implementation-details.md about CoreDNS (#8829)
- Replace examples from kube-dns to CoreDNS
- Add notes about the CoreDNS feature gate status in 1.11
- Add note that the service name for CoreDNS is also
called `kube-dns`
* Update block device support for 1.11 (#8895)
* Update block device support for 1.11
* Copyedits
* Fix typo 'fiber channel' (#8957)
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* kubeadm-upgrade: add the 'node [config]' sub-command (#8960)
- Add includes for the generated pages
- Include placeholder generated pages
* kubeadm-init: update the example for the MasterConfiguration (#8958)
- include godocs link for MasterConfiguration
- include example MasterConfiguration
- add note that `kubeadm config print-default` can be used
* kubeadm-config: include new commands (#8862)
Add notes and includes for these new commands in 1.11:
- kubeadm config print-default
- kubeadm config migrate
- kubeadm config images list
- kubeadm config images pull
Include placeholder generated files for the above.
* administer-cluster/coredns: include more changes (#8985)
It was requested that for this page a couple of methods
should be outlined:
- manual installation for CoreDNS explained at the Kubernetes
section of the GitHub project for CoreDNS
- installation and upgrade via kubeadm
Make the above changes and also add a section "About CoreDNS".
This commit also lowercases a section title.
* Update CRD subresources doc for 1.11 (#8918)
* Add docs for volume expansion and online resizing (#8896)
* Add docs for volume expansion going beta
* Copyedit
* Address feedback
* Update exec plugin docs with TLS credentials (#8826)
* Update exec plugin docs with TLS credentials
kubernetes/kubernetes#61803 implements TLS client credential support for
1.11.
* Copyedit
* More copyedits for clarification
* Additional copyedit
* Change token->credential
* NodeRestriction admission prevents kubelet taint removal (#8911)
* dns-custom-namerserver: break down the page into mutliple sections (#8900)
* dns-custom-namerserver: break down the page into mutliple sections
This page is currently about kube-dns and is a bit outdated.
Introduce the heading `# Customizing kube-dns`.
Introduce a separate section about CoreDNS.
* Copyedits, fix headings for customizing DNS
Hey Lubomir,
I coypedited pretty heavily because this workflow is so much easier for docs and because I'm trying to help improve everything touching kubeadm as much as possible.
But there's one outstanding issue wrt headings and intro content: you can't add a heading 1 to a topic to do what you wanted to do. The page title in the front matter is rendered as a heading 1 and everything else has to start at heading 2. (We still need to doc this better in the docs contributing content, I know.)
Instead, I think we need to rewrite the top-of-page intro content to explain better the relationship between kube-dns and CoreDNS. I'm happy to write something, but I thought I'd push this commit first so you can see what I'm doing.
Hope it's all clear -- ping here or on Slack with any questions ~ Jennifer
* Interim fix for talking about CoreDNS
* Fix CoreDNS details
* PSP readOnly hostPath (#8898)
* Add documentation for crictl (#8880)
* Add documentation for crictl
* Copyedit
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Final copyedit
* VolumeSubpathEnvExpansion alpha feature (#8835)
* Note that Heapster is deprecated (#8827)
* Note that Heapster is deprecated
This notes that Heapster is deprecated, and migrates the relevant
docs to talk about metrics-server or other solutions by default.
* Copyedits and improvements
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Address feedback
* fix shortcode to troubleshoot deploy (#9057)
* update dynamic kubelet config docs for v1.11 (#8766)
* update dynamic kubelet config docs for v1.11
* Substantial copyedit
* Address feedback
* Reference doc for kubeadm (release-1.11) (#9044)
* Reference doc for kubeadm (release-1.11)
* fix shortcode to troubleshoot deploy (#9057)
* Reference doc for kube-components (release-1.11) (#9045)
* Reference doc for kube-components (release-1.11)
* Update cloud-controller-manager.md
* fix shortcode to troubleshoot deploy (#9057)
* Documentation on lowercasing kubeadm init apiserver SANs (#9059)
* Documentation on lowercasing kubeadm init apiserver SANs
* fix shortcode to troubleshoot deploy (#9057)
* Clarification in dynamic Kubelet config doc (#9061)
* Promote sysctls to Beta (#8804)
* Promote sysctls to Beta
* Copyedits
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Review comments
* Address feedback
* More feedback
* kubectl reference docs for 1.11 (#9080)
* Update Kubernetes API 1.11 ref docs (#8977)
* Update v1alpha1 to v1beta1.
* Adjust left nav for 1.11 ref docs.
* Trim list of old ref docs.
* Update Federation API ref docs for 1.11. (#9064)
* Update Federation API ref docs for 1.11.
* Add titles.
* Update definitions.html
* CRD versioning Public Documentation (#8834)
* CRD versioning Public Documentation
* Copyedit
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Address feedback
* More rewrites
* Address feedback
* Update main CRD page in light of versioning
* Reorg CRD docs
* Further reorg
* Tweak title
* CSI documentation update for raw block volume support (#8927)
* CSI documetation update for raw block volume support
* minor edits for "CSI raw block volume support"
Some small grammar and style nits.
* minor CSIBlockVolume edits
* Update kubectl component ref page for 1.11. (#9094)
* Update kubectl component ref page for 1.11.
* Add title. Replace stevepe with username.
* crd versioning doc: fix nits (#9142)
* Update `DynamicKubeletConfig` feature to beta (#9110)
xref: kubernetes/kubernetes#64275
* Documentation for dynamic volume limits based on node type (#8871)
* add cos for storage limits
* Update docs specific for aws and gce
* fix some minor things
* Update storage-limits.md
* Add k8s version to feature-state shortcode
* The Doc update for ScheduleDaemonSetPods (#8842)
Signed-off-by: Da K. Ma <klaus1982.cn@gmail.com>
* Update docs related to PersistentVolumeLabel admission control (#9109)
The said admission controller is disabled by default in 1.11
(kubernetes/kubernetes#64326) and scheduled to be removed in future
release.
* client exec auth: updates for 1.11 (#9154)
* Updates HA kubeadm docs (#9066)
* Updates HA kubeadm docs
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* kubeadm HA - Add stacked control plane steps
* ssh instructions and some typos in the bash scripts
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* Fix typos and copypasta errors
* Fix rebase issues
* Integrate more changes
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* copyedits, layout and formatting fixes
* final copyedits
* Adds a sanity check for load balancer connection
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* formatting fixes, copyedits
* fix typos, formatting
* Document the Pod Ready++ feature (#9180)
Closes: #9107
Xref: kubernetes/kubernetes#64057
* Mention 'KubeletPluginsWatcher' feature (#9177)
* Mention 'KubeletPluginsWatcher' feature
This feature is more developers oriented than users oriented, so simply
mention it in the feature gate should be fine.
In future, when the design doc is migrated from Google doc to the
kubernetes/community repo, we can add links to it for users who want to
dig deeper.
Closes: #9108
Xref: kubernetes/kubernetes#63328, kubernetes/kubernetes#64605
* Copyedit
* Amend dynamic volume list docs (#9181)
The dynamic volume list feature has been documented but the feature gate
related was not there yet.
Closes: #9105
* Document for service account projection (#9182)
This adds docs for the service account projection feature.
Xref: kubernetes/kubernetes#63819, kubernetes/community#1973
Closes: #9102
* Update pod priority and preemption user docs (#9172)
* Update pod priority and preemption user docs
* Copyedit
* Documentation on setting node name with Kubeadm (#8925)
* Documentation on setting node name with Kubeadm
* copyedit
* Add kubeadm upgrade docs for 1.11 (#9089)
* Add kubeadm upgrade docs for 1.11
* Initial docs review feedback
* Add 1-11 to outline
* Fix formatting on tab blocks
* Move file to correct location
* Add `kubeadm upgrade node config` step
* Overzealous ediffing
* copyedit, fix lists and headings
* clarify --force flag for fixing bad state
* Get TOML ready for 1.11 release
* Blog post for 1.11 release (#9254)
* Blog post for 1.11 release
* Update 2018-06-26-kubernetes-1.11-release-announcement.md
* Update 2018-06-26-kubernetes-1.11-release-announcement.md
* Update 2018-06-26-kubernetes-1.11-release-announcement.md
2018-06-27 22:26:18 +00:00
Regardless of how they are installed, the new resources are referred to as Custom Resources to distinguish them from built-in Kubernetes resources (like pods).
2017-06-22 23:48:48 +00:00
## CustomResourceDefinitions
2020-05-04 22:56:23 +00:00
The [CustomResourceDefinition ](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/ )
2020-02-28 20:10:38 +00:00
API resource allows you to define custom resources.
Defining a CRD object creates a new custom resource with a name and schema that you specify.
The Kubernetes API serves and handles the storage of your custom resource.
The name of a CRD object must be a valid
[DNS subdomain name ](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names ).
2017-06-22 23:48:48 +00:00
This frees you from writing your own API server to handle the custom resource,
but the generic nature of the implementation means you have less flexibility than with
[API server aggregation ](#api-server-aggregation ).
2019-02-28 04:53:31 +00:00
Refer to the [custom controller example ](https://github.com/kubernetes/sample-controller )
for an example of how to register a new custom resource, work with instances of your new resource type,
and use a controller to handle events.
2017-06-22 23:48:48 +00:00
## API server aggregation
2020-01-29 22:20:14 +00:00
Usually, each resource in the Kubernetes API requires code that handles REST requests and manages persistent storage of objects. The main Kubernetes API server handles built-in resources like *pods* and *services* , and can also generically handle custom resources through [CRDs ](#customresourcedefinitions ).
2017-06-22 23:48:48 +00:00
2018-11-27 09:29:22 +00:00
The [aggregation layer ](/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/ ) allows you to provide specialized
2017-06-22 23:48:48 +00:00
implementations for your custom resources by writing and deploying your own standalone API server.
The main API server delegates requests to you for the custom resources that you handle,
making them available to all of its clients.
2019-02-28 04:53:31 +00:00
## Choosing a method for adding custom resources
2017-11-29 19:47:48 +00:00
CRDs are easier to use. Aggregated APIs are more flexible. Choose the method that best meets your needs.
Typically, CRDs are a good fit if:
2018-02-24 17:31:48 +00:00
* You have a handful of fields
2017-11-29 19:47:48 +00:00
* You are using the resource within your company, or as part of a small open-source project (as opposed to a commercial product)
2019-02-28 04:53:31 +00:00
### Comparing ease of use
2017-11-29 19:47:48 +00:00
CRDs are easier to create than Aggregated APIs.
Release docs for Kubernetes 1.11 (#9171)
* Seperate priority and preemption (#8144)
* Doc about PID pressure condition. (#8211)
* Doc about PID pressure condition.
Signed-off-by: Da K. Ma <klaus1982.cn@gmail.com>
* "so" -> "too"
* Update version selector for 1.11
* StorageObjectInUseProtection is GA (#8291)
* Feature gate: StorageObjectInUseProtection is GA
Update feature gate reference for 1.11
* Trivial commit to re-trigger Netlify
* CRIContainerLogRotation is Beta in 1.11 (#8665)
* Seperate priority and preemption (#8144)
* CRIContainerLogRotation is Beta in 1.11
xref: kubernetes/kubernetes#64046
* Bring StorageObjectInUseProtection feature to GA (#8159)
* StorageObjectInUseProtection is GA (#8291)
* Feature gate: StorageObjectInUseProtection is GA
Update feature gate reference for 1.11
* Trivial commit to re-trigger Netlify
* Bring StorageObjectInUseProtection feature to GA
StorageObjectInUseProtection is Beta in K8s 1.10.
It's brought to GA in K8s 1.11.
* Fixed typo and added feature state tags.
* Remove KUBE_API_VERSIONS doc (#8292)
The support to the KUBER_API_VERSIONS environment variable is completely
dropped (no deprecation). This PR removes the related doc in
release-1.11.
xref: kubernetes/kubernetes#63165
* Remove InitialResources from admission controllers (#8293)
The feature (was experimental) is dropped in 1.11.
xref: kubernetes/kubernetes#58784
* Remove docs related to in-tree support to GPU (#8294)
* Remove docs related to in-tree support to GPU
The in-tree support to GPU is completely removed in release 1.11.
This PR removes the related docs in release-1.11 branch.
xref: kubernetes/kubernetes#61498
* Update content updated by PR to Hugo syntax
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Update the doc about extra volume in kubeadm config (#8453)
Signed-off-by: Xianglin Gao <xianglin.gxl@alibaba-inc.com>
* Update CRD Subresources for 1.11 (#8519)
* coredns: update notes in administer-cluster/coredns.md (#8697)
CoreDNS is installed by default in 1.11.
Add notes on how to install kube-dns instead.
Update notes about CoreDNS->CoreDNS upgrades as in 1.11
the Corefile is retained.
Add example on upgrading from kube-dns to CoreDNS.
* kubeadm-alpha: CoreDNS related changes (#8727)
Update note about CoreDNS feature gate.
This change also updates a tab as a kubeadm sub-command
will change.
It looks for a new generated file:
generated/kubeadm_alpha_phase_addon_coredns.md
instead of:
generated/kubeadm_alpha_phase_addon_kube-dns.md
* Update cloud controller manager docs to beta 1.11 (#8756)
* Update cloud controller manager docs to beta 1.11
* Use Hugo shortcode for feature state
* kubeadm-upgrade: include new command `kubeadm upgrade diff` (#8617)
Also:
- Include note that this was added in 1.11.
- Modify the note about upgrade guidance.
* independent: update CoreDNS mentions for kubeadm (#8753)
Give CoreDNS instead of kube-dns examples in:
- docs/setup/independent/create-cluster-kubeadm.md
- docs/setup/independent/troubleshooting-kubeadm.md
* update 1.11 --server-print info (#8870)
* update 1.11 --server-print info
* Copyedit
* Mark ExpandPersistentVolumes feature to beta (#8778)
* Update version selector for 1.11
* Mark ExpandPersistentVolumes Beta
xref: kubernetes/kubernetes#64288
* fix shortcode, add placeholder files to fix deploy failures (#8874)
* declare ipvs ga (#8850)
* kubeadm: update info about CoreDNS in kubeadm-init.md (#8728)
Add info to install kube-dns instead of CoreDNS, as CoreDNS
is the default DNS server in 1.11.
Add notes that kubeadm config images can be used to list and pull
the required images in 1.11.
* kubeadm: update implementation-details.md about CoreDNS (#8829)
- Replace examples from kube-dns to CoreDNS
- Add notes about the CoreDNS feature gate status in 1.11
- Add note that the service name for CoreDNS is also
called `kube-dns`
* Update block device support for 1.11 (#8895)
* Update block device support for 1.11
* Copyedits
* Fix typo 'fiber channel' (#8957)
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* kubeadm-upgrade: add the 'node [config]' sub-command (#8960)
- Add includes for the generated pages
- Include placeholder generated pages
* kubeadm-init: update the example for the MasterConfiguration (#8958)
- include godocs link for MasterConfiguration
- include example MasterConfiguration
- add note that `kubeadm config print-default` can be used
* kubeadm-config: include new commands (#8862)
Add notes and includes for these new commands in 1.11:
- kubeadm config print-default
- kubeadm config migrate
- kubeadm config images list
- kubeadm config images pull
Include placeholder generated files for the above.
* administer-cluster/coredns: include more changes (#8985)
It was requested that for this page a couple of methods
should be outlined:
- manual installation for CoreDNS explained at the Kubernetes
section of the GitHub project for CoreDNS
- installation and upgrade via kubeadm
Make the above changes and also add a section "About CoreDNS".
This commit also lowercases a section title.
* Update CRD subresources doc for 1.11 (#8918)
* Add docs for volume expansion and online resizing (#8896)
* Add docs for volume expansion going beta
* Copyedit
* Address feedback
* Update exec plugin docs with TLS credentials (#8826)
* Update exec plugin docs with TLS credentials
kubernetes/kubernetes#61803 implements TLS client credential support for
1.11.
* Copyedit
* More copyedits for clarification
* Additional copyedit
* Change token->credential
* NodeRestriction admission prevents kubelet taint removal (#8911)
* dns-custom-namerserver: break down the page into mutliple sections (#8900)
* dns-custom-namerserver: break down the page into mutliple sections
This page is currently about kube-dns and is a bit outdated.
Introduce the heading `# Customizing kube-dns`.
Introduce a separate section about CoreDNS.
* Copyedits, fix headings for customizing DNS
Hey Lubomir,
I coypedited pretty heavily because this workflow is so much easier for docs and because I'm trying to help improve everything touching kubeadm as much as possible.
But there's one outstanding issue wrt headings and intro content: you can't add a heading 1 to a topic to do what you wanted to do. The page title in the front matter is rendered as a heading 1 and everything else has to start at heading 2. (We still need to doc this better in the docs contributing content, I know.)
Instead, I think we need to rewrite the top-of-page intro content to explain better the relationship between kube-dns and CoreDNS. I'm happy to write something, but I thought I'd push this commit first so you can see what I'm doing.
Hope it's all clear -- ping here or on Slack with any questions ~ Jennifer
* Interim fix for talking about CoreDNS
* Fix CoreDNS details
* PSP readOnly hostPath (#8898)
* Add documentation for crictl (#8880)
* Add documentation for crictl
* Copyedit
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Final copyedit
* VolumeSubpathEnvExpansion alpha feature (#8835)
* Note that Heapster is deprecated (#8827)
* Note that Heapster is deprecated
This notes that Heapster is deprecated, and migrates the relevant
docs to talk about metrics-server or other solutions by default.
* Copyedits and improvements
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Address feedback
* fix shortcode to troubleshoot deploy (#9057)
* update dynamic kubelet config docs for v1.11 (#8766)
* update dynamic kubelet config docs for v1.11
* Substantial copyedit
* Address feedback
* Reference doc for kubeadm (release-1.11) (#9044)
* Reference doc for kubeadm (release-1.11)
* fix shortcode to troubleshoot deploy (#9057)
* Reference doc for kube-components (release-1.11) (#9045)
* Reference doc for kube-components (release-1.11)
* Update cloud-controller-manager.md
* fix shortcode to troubleshoot deploy (#9057)
* Documentation on lowercasing kubeadm init apiserver SANs (#9059)
* Documentation on lowercasing kubeadm init apiserver SANs
* fix shortcode to troubleshoot deploy (#9057)
* Clarification in dynamic Kubelet config doc (#9061)
* Promote sysctls to Beta (#8804)
* Promote sysctls to Beta
* Copyedits
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Review comments
* Address feedback
* More feedback
* kubectl reference docs for 1.11 (#9080)
* Update Kubernetes API 1.11 ref docs (#8977)
* Update v1alpha1 to v1beta1.
* Adjust left nav for 1.11 ref docs.
* Trim list of old ref docs.
* Update Federation API ref docs for 1.11. (#9064)
* Update Federation API ref docs for 1.11.
* Add titles.
* Update definitions.html
* CRD versioning Public Documentation (#8834)
* CRD versioning Public Documentation
* Copyedit
Signed-off-by: Misty Stanley-Jones <mistyhacks@google.com>
* Address feedback
* More rewrites
* Address feedback
* Update main CRD page in light of versioning
* Reorg CRD docs
* Further reorg
* Tweak title
* CSI documentation update for raw block volume support (#8927)
* CSI documetation update for raw block volume support
* minor edits for "CSI raw block volume support"
Some small grammar and style nits.
* minor CSIBlockVolume edits
* Update kubectl component ref page for 1.11. (#9094)
* Update kubectl component ref page for 1.11.
* Add title. Replace stevepe with username.
* crd versioning doc: fix nits (#9142)
* Update `DynamicKubeletConfig` feature to beta (#9110)
xref: kubernetes/kubernetes#64275
* Documentation for dynamic volume limits based on node type (#8871)
* add cos for storage limits
* Update docs specific for aws and gce
* fix some minor things
* Update storage-limits.md
* Add k8s version to feature-state shortcode
* The Doc update for ScheduleDaemonSetPods (#8842)
Signed-off-by: Da K. Ma <klaus1982.cn@gmail.com>
* Update docs related to PersistentVolumeLabel admission control (#9109)
The said admission controller is disabled by default in 1.11
(kubernetes/kubernetes#64326) and scheduled to be removed in future
release.
* client exec auth: updates for 1.11 (#9154)
* Updates HA kubeadm docs (#9066)
* Updates HA kubeadm docs
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* kubeadm HA - Add stacked control plane steps
* ssh instructions and some typos in the bash scripts
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* Fix typos and copypasta errors
* Fix rebase issues
* Integrate more changes
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* copyedits, layout and formatting fixes
* final copyedits
* Adds a sanity check for load balancer connection
Signed-off-by: Chuck Ha <ha.chuck@gmail.com>
* formatting fixes, copyedits
* fix typos, formatting
* Document the Pod Ready++ feature (#9180)
Closes: #9107
Xref: kubernetes/kubernetes#64057
* Mention 'KubeletPluginsWatcher' feature (#9177)
* Mention 'KubeletPluginsWatcher' feature
This feature is more developers oriented than users oriented, so simply
mention it in the feature gate should be fine.
In future, when the design doc is migrated from Google doc to the
kubernetes/community repo, we can add links to it for users who want to
dig deeper.
Closes: #9108
Xref: kubernetes/kubernetes#63328, kubernetes/kubernetes#64605
* Copyedit
* Amend dynamic volume list docs (#9181)
The dynamic volume list feature has been documented but the feature gate
related was not there yet.
Closes: #9105
* Document for service account projection (#9182)
This adds docs for the service account projection feature.
Xref: kubernetes/kubernetes#63819, kubernetes/community#1973
Closes: #9102
* Update pod priority and preemption user docs (#9172)
* Update pod priority and preemption user docs
* Copyedit
* Documentation on setting node name with Kubeadm (#8925)
* Documentation on setting node name with Kubeadm
* copyedit
* Add kubeadm upgrade docs for 1.11 (#9089)
* Add kubeadm upgrade docs for 1.11
* Initial docs review feedback
* Add 1-11 to outline
* Fix formatting on tab blocks
* Move file to correct location
* Add `kubeadm upgrade node config` step
* Overzealous ediffing
* copyedit, fix lists and headings
* clarify --force flag for fixing bad state
* Get TOML ready for 1.11 release
* Blog post for 1.11 release (#9254)
* Blog post for 1.11 release
* Update 2018-06-26-kubernetes-1.11-release-announcement.md
* Update 2018-06-26-kubernetes-1.11-release-announcement.md
* Update 2018-06-26-kubernetes-1.11-release-announcement.md
2018-06-27 22:26:18 +00:00
| CRDs | Aggregated API |
2018-05-10 17:31:54 +00:00
| --------------------------- | -------------- |
2021-08-03 18:34:24 +00:00
| Do not require programming. Users can choose any language for a CRD controller. | Requires programming and building binary and image. |
2020-03-04 05:19:05 +00:00
| No additional service to run; CRDs are handled by API server. | An additional service to create and that could fail. |
| No ongoing support once the CRD is created. Any bug fixes are picked up as part of normal Kubernetes Master upgrades. | May need to periodically pickup bug fixes from upstream and rebuild and update the Aggregated API server. |
| No need to handle multiple versions of your API; for example, when you control the client for this resource, you can upgrade it in sync with the API. | You need to handle multiple versions of your API; for example, when developing an extension to share with the world. |
2017-11-29 19:47:48 +00:00
### Advanced features and flexibility
2020-03-04 05:19:05 +00:00
Aggregated APIs offer more advanced API features and customization of other features; for example, the storage layer.
2017-11-29 19:47:48 +00:00
| Feature | Description | CRDs | Aggregated API |
2018-05-10 17:31:54 +00:00
| ------- | ----------- | ---- | -------------- |
2020-06-22 09:32:29 +00:00
| Validation | Help users prevent errors and allow you to evolve your API independently of your clients. These features are most useful when there are many clients who can't all update at the same time. | Yes. Most validation can be specified in the CRD using [OpenAPI v3.0 validation ](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#validation ). Any other validations supported by addition of a [Validating Webhook ](/docs/reference/access-authn-authz/admission-controllers/#validatingadmissionwebhook-alpha-in-1-8-beta-in-1-9 ). | Yes, arbitrary validation checks |
2020-05-04 22:56:23 +00:00
| Defaulting | See above | Yes, either via [OpenAPI v3.0 validation ](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#defaulting ) `default` keyword (GA in 1.17), or via a [Mutating Webhook ](/docs/reference/access-authn-authz/admission-controllers/#mutatingadmissionwebhook ) (though this will not be run when reading from etcd for old objects). | Yes |
| Multi-versioning | Allows serving the same object through two API versions. Can help ease API changes like renaming fields. Less important if you control your client versions. | [Yes ](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning ) | Yes |
2020-04-21 10:32:37 +00:00
| Custom Storage | If you need storage with a different performance mode (for example, a time-series database instead of key-value store) or isolation for security (for example, encryption of sensitive information, etc.) | No | Yes |
2018-07-31 22:10:38 +00:00
| Custom Business Logic | Perform arbitrary checks or actions when creating, reading, updating or deleting an object | Yes, using [Webhooks ](/docs/reference/access-authn-authz/extensible-admission-controllers/#admission-webhooks ). | Yes |
2020-05-04 22:56:23 +00:00
| Scale Subresource | Allows systems like HorizontalPodAutoscaler and PodDisruptionBudget interact with your new resource | [Yes ](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#scale-subresource ) | Yes |
| Status Subresource | Allows fine-grained access control where user writes the spec section and the controller writes the status section. Allows incrementing object Generation on custom resource data mutation (requires separate spec and status sections in the resource) | [Yes ](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#status-subresource ) | Yes |
2018-05-31 20:29:55 +00:00
| Other Subresources | Add operations other than CRUD, such as "logs" or "exec". | No | Yes |
2020-05-18 07:17:44 +00:00
| strategic-merge-patch | The new endpoints support PATCH with `Content-Type: application/strategic-merge-patch+json` . Useful for updating objects that may be modified both locally, and by the server. For more information, see ["Update API Objects in Place Using kubectl patch" ](/docs/tasks/manage-kubernetes-objects/update-api-object-kubectl-patch/ ) | No | Yes |
2017-11-29 19:47:48 +00:00
| Protocol Buffers | The new resource supports clients that want to use Protocol Buffers | No | Yes |
2020-05-04 22:56:23 +00:00
| OpenAPI Schema | Is there an OpenAPI (swagger) schema for the types that can be dynamically fetched from the server? Is the user protected from misspelling field names by ensuring only allowed fields are set? Are types enforced (in other words, don't put an `int` in a `string` field?) | Yes, based on the [OpenAPI v3.0 validation ](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#validation ) schema (GA in 1.16). | Yes |
2017-11-29 19:47:48 +00:00
2019-02-28 04:53:31 +00:00
### Common Features
2017-11-29 19:47:48 +00:00
2020-03-04 05:19:05 +00:00
When you create a custom resource, either via a CRD or an AA, you get many features for your API, compared to implementing it outside the Kubernetes platform:
2017-11-29 19:47:48 +00:00
| Feature | What it does |
2018-05-10 17:31:54 +00:00
| ------- | ------------ |
2017-11-29 19:47:48 +00:00
| CRUD | The new endpoints support CRUD basic operations via HTTP and `kubectl` |
| Watch | The new endpoints support Kubernetes Watch operations via HTTP |
2020-03-04 05:19:05 +00:00
| Discovery | Clients like `kubectl` and dashboard automatically offer list, display, and field edit operations on your resources |
2017-11-29 19:47:48 +00:00
| json-patch | The new endpoints support PATCH with `Content-Type: application/json-patch+json` |
| merge-patch | The new endpoints support PATCH with `Content-Type: application/merge-patch+json` |
| HTTPS | The new endpoints uses HTTPS |
2020-03-04 05:19:05 +00:00
| Built-in Authentication | Access to the extension uses the core API server (aggregation layer) for authentication |
| Built-in Authorization | Access to the extension can reuse the authorization used by the core API server; for example, RBAC. |
2017-11-29 19:47:48 +00:00
| Finalizers | Block deletion of extension resources until external cleanup happens. |
| Admission Webhooks | Set default values and validate extension resources during any create/update/delete operation. |
| UI/CLI Display | Kubectl, dashboard can display extension resources. |
2020-02-19 08:14:25 +00:00
| Unset versus Empty | Clients can distinguish unset fields from zero-valued fields. |
2018-02-01 12:24:09 +00:00
| Client Libraries Generation | Kubernetes provides generic client libraries, as well as tools to generate type-specific client libraries. |
2017-11-29 19:47:48 +00:00
| Labels and annotations | Common metadata across objects that tools know how to edit for core and custom resources. |
## Preparing to install a custom resource
There are several points to be aware of before adding a custom resource to your cluster.
### Third party code and new points of failure
While creating a CRD does not automatically add any new points of failure (for example, by causing third party code to run on your API server), packages (for example, Charts) or other installation bundles often include CRDs as well as a Deployment of third-party code that implements the business logic for a new custom resource.
2020-03-04 05:19:05 +00:00
Installing an Aggregated API server always involves running a new Deployment.
2017-11-29 19:47:48 +00:00
### Storage
Custom resources consume storage space in the same way that ConfigMaps do. Creating too many custom resources may overload your API server's storage space.
Aggregated API servers may use the same storage as the main API server, in which case the same warning applies.
### Authentication, authorization, and auditing
2020-03-04 05:19:05 +00:00
CRDs always use the same authentication, authorization, and audit logging as the built-in resources of your API server.
2017-11-29 19:47:48 +00:00
If you use RBAC for authorization, most RBAC roles will not grant access to the new resources (except the cluster-admin role or any role created with wildcard rules). You'll need to explicitly grant access to the new resources. CRDs and Aggregated APIs often come bundled with new role definitions for the types they add.
Aggregated API servers may or may not use the same authentication, authorization, and auditing as the primary API server.
## Accessing a custom resource
2020-03-04 05:19:05 +00:00
Kubernetes [client libraries ](/docs/reference/using-api/client-libraries/ ) can be used to access custom resources. Not all client libraries support custom resources. The _Go_ and _Python_ client libraries do.
2017-11-29 19:47:48 +00:00
When you add a custom resource, you can access it using:
2018-05-10 17:31:54 +00:00
2020-03-04 05:19:05 +00:00
- `kubectl`
2018-05-10 17:31:54 +00:00
- The kubernetes dynamic client.
- A REST client that you write.
- A client generated using [Kubernetes client generation tools ](https://github.com/kubernetes/code-generator ) (generating one is an advanced undertaking, but some projects may provide a client along with the CRD or AA).
2017-11-29 19:47:48 +00:00
2017-06-22 23:48:48 +00:00
2020-05-30 19:10:23 +00:00
## {{% heading "whatsnext" %}}
2018-05-05 16:00:51 +00:00
2018-11-14 22:25:39 +00:00
* Learn how to [Extend the Kubernetes API with the aggregation layer ](/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/ ).
2020-05-04 22:56:23 +00:00
* Learn how to [Extend the Kubernetes API with CustomResourceDefinition ](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/ ).
2017-06-22 23:48:48 +00:00
2020-05-30 19:10:23 +00:00