-
Notifications
You must be signed in to change notification settings - Fork 14.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Blog post, outlines KubeVirt's usage k8s extension features #9324
Blog post, outlines KubeVirt's usage k8s extension features #9324
Conversation
…k8s extension features
Deploy preview for kubernetes-io-master-staging ready! Built with commit 11c6a1d https://deploy-preview-9324--kubernetes-io-master-staging.netlify.com |
|
||
That strategy is not a viable option for us. | ||
|
||
Luckily, while we don’t currently have a complete solution in place to handle CRDs with multiple versions, there is [work underway to rectify this issue in Kubernetes](https://github.com/kubernetes/features/issues/544). Looking at the Kubernetes 1.11 release notes, the [initial steps](https://github.com/kubernetes/kubernetes/pull/63830) have already been taken to kick off this feature. CRDs with multiple versions will be supported soon and we look forward to taking advantage of that feature as soon as it lands. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This pretty much says that the CRD versioning in 1.11 isn't complete for Kubevirt's use case. Can you expand on that? What work remains to be done? The feature in 1.11 is marked as a complete implementation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This pretty much says that the CRD versioning in 1.11 isn't complete for Kubevirt's use case. Can you expand on that? What work remains to be done? The feature in 1.11 is marked as a complete implementation.
There's no conversion between CRD versions. It's also strange that all the versions share the same OpenAPIv3 validation. It's like we've created a way to progress an api from alpha->beta->release only if that api contains no changes.
The value of the current implementation seems limited, but it's definitely a first step in the right direction.
I'll update the doc to reflect my thoughts here.
/assign @kbarnard10 |
Hmmm. I thought there was more 1.11 stuff in this blog post than there actually is. So it's not going to help us with 1.11; we should hold this post until after we're done with the 1.11 series. |
@davidvossel Is this post ready to go? |
@kbarnard10 very close. I need to make a few adjustments and it should be good to go. I should be able to finish that last bit up this afternoon. |
@kbarnard10 @jberkus I updated the blog post. From my perspective it is ready to go. Let me know if there's anything else I need to address. Thanks! |
…018-07-27-kubevirt-crds-for-virtualization.md
i will do a quick review. saw a couple of nits. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@davidvossel thanks for the write up and the work on this feature. 👍
i've added some edits here and there mostly things like code quotes and api
->API
.
you can possibly solve some of these with a case sensitive S&R.
|
||
## What is KubeVirt? | ||
|
||
[KubeVirt](https://github.com/kubevirt/kubevirt) is a Kubernetes addon that provides users the ability to schedule traditional virtual machine workloads side by side with container workloads. Through the use of [Custom Resource Definitions](https://Kubernetes.io/docs/concepts/extend-Kubernetes/api-extension/custom-resources/) (CRDs) and other Kubernetes features, KubeVirt seamlessly extends existing Kubernetes clusters to provide a set of virtualization apis that can be used to manage virtual machines. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
apis
-> APIs
|
||
## Why Use CRDs Over an Aggregated API Server? | ||
|
||
Back in the middle of 2017, those of us working on KubeVirt were at a crossroads. We had to make a decision whether or not to extend Kubernetes using an aggregated API server or to make use of the new Custom Resource Definitions (CRDs) feature. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
extra space before We
|
||
## Building Layered “Kubernetes like” APIs with CRDs | ||
|
||
We designed KubeVirt’s api to follow the same patterns users are already familiar with in the Kubernetes core api. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
api
-> API
.
in a couple of places in this sentence.
|
||
In KubeVirt, this concept of layering controllers is at the very center of our design. The KubeVirt VirtualMachineInstance (VMI) object is the lowest level unit at the very bottom of the KubeVirt stack. Similar in concept to a Pod, a VMI represents a single mortal virtualized workload that executes once until completion (powered off). | ||
|
||
Layered on top of VMIs we have a workload controller called a VirtualMachine (VM). The VM controller is where we really begin to see the differences between how users manage virtualized workloads vs containerized workloads. Within the context of existing Kubernetes functionality, the best way to describe the VM controller’s behavior is to compare it to a StatefulSet of size one. This is because the VM controller represents a single stateful (immortal) virtual machine capable of persisting state across both node failures and multiple restarts of its underlying VMI. This object behaves in the way that is familiar to users who have managed virtual machines in AWS, GCE, OpenStack or any other similar IaaS cloud platform. The user can shutdown a VM, then choose to start that exact same VM up again at a later time. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SIG Docs have some feelings against Latin in tech docs. :)
vs
can be replaced with , compared to
.
feel free to leave as is.
|
||
In addition to VMs, we also have a VirtualMachineInstanceReplicaSet (VMIRS) workload controller which manages scale out of identical VMI objects. This controller behaves nearly identically to the Kubernetes ReplicSet controller. The primary difference being that the VMIRS manages VMI objects and the ReplicaSet manages Pods. Wouldn’t it be nice if we could come up with a way to [use the Kubernetes ReplicaSet controller to scale out CRDs?](https://github.com/kubernetes/kubernetes/issues/65622) | ||
|
||
Each one of these KubeVirt objects (VMI, VM, VMIRS) are registered with Kubernetes as a CRD when the KubeVirt install manifest is posted to the cluster. By registering our apis as CRDs with Kubernetes, all the tooling involved with managing Kubernetes clusters (like kubectl) have access to the KubeVirt apis just as if they are native Kubernetes objects. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
apis
-> APIs
.
in a couple of places in this paragraph.
|
||
This isn’t a perfect solution for us. Both aggregated API servers and CRDs require us to register an api GroupName with Kubernetes. This api GroupName field essentially namespaces the api’s REST path in a way that prevents api naming conflicts between other third party applications. Because CRDs and aggregated API servers can’t share the same GroupName, we have to register two separate GroupNames. One is used by our CRDs and the other is used by the aggregated API server for subresource requests. | ||
|
||
Having two GroupNames in our api is slightly inconvenient because it means the REST path for the endpoints that serve the KubeVirt subresource requests have a slightly different base path than the resources. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
api
-> API
|
||
Notice that the first request uses **kubevirt.io** and the second request uses **subresource.kubevirt.io**. We don’t like that, but that’s how we’ve managed to combine CRDs with a stateless aggregated API server for subresources. | ||
|
||
One thing worth noting is that in Kubernetes 1.10 a very basic form of CRD subresource support was added in the form of the /status and /scale subresources. This support does not help us deliver the virtualization features we want subresources for. There have however been discussions about exposing custom CRD subresources as webhooks in a future Kubernetes version. If this functionality lands, we will gladly transition away from our stateless aggregated API server workaround to use a subresource webhook feature. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/status and /scale -> /status
and /scale
There have however
-> However, there have
|
||
## API Versioning for CRDs | ||
|
||
The Kubernetes core apis have the ability to support multiple versions for a single object type and perform conversions between those versions. This gives the Kubernetes core apis a path for advancing the v1alpha1 version of an object to a v1beta1 version and so forth. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
core apis
-> core APIs
.
v1alpha1 -> v1alpha1
v1beta1 -> v1beta1
|
||
The Kubernetes core apis have the ability to support multiple versions for a single object type and perform conversions between those versions. This gives the Kubernetes core apis a path for advancing the v1alpha1 version of an object to a v1beta1 version and so forth. | ||
|
||
Prior to Kubernetes 1.11, CRDs did not not have support for multiple versions. This meant when we wanted to progress a CRD from kubevirt.io/v1alpha1 to kubevirt.io/v1beta1, the only path available to was to backup our CRD objects, delete the registered CRD from Kubernetes, register a new CRD with the updated version, convert the backed up CRD objects to the new version, and finally post the migrated CRD objects back to the cluster. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
kubevirt.io/v1alpha1 to kubevirt.io/v1beta1 -> kubevirt.io/v1alpha1
to kubevirt.io/v1beta1
|
||
That strategy was not exactly a viable option for us. | ||
|
||
Fortunately thanks to some recent [work to rectify this issue in Kubernetes](https://github.com/kubernetes/features/issues/544), the latest Kubernetes v1.11 now supports [CRDs with multiple versions](https://github.com/kubernetes/kubernetes/pull/63830). Note however that this initial multi version support is limited. While a CRD can now have multiple versions, the feature does not currently contain a path for performing conversions between versions. In KubeVirt, the lack of conversion makes it difficult us to evolve our api as we progress versions. Luckily, support for conversions between versions is underway and we look forward to taking advantage of that feature once it lands in a future Kubernetes release. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
our api
-> API
.
d6b9154
to
3e138c6
Compare
3e138c6
to
11c6a1d
Compare
@neolit123 Thanks for the feedback. I believe I've addressed everything now. |
/hold cancel |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: kbarnard10 The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
* Syntax fixes for Cassandra doc * Fix indentation issues * convert unnecessary note admonition to normal text * Modify Resource Types section in kubectl cheat sheet * Fix error in command syntax * Change header level * Change code block type to bash from console * Add me to the OWNERS file (#9511) * Revert "Add me to the OWNERS file (#9511)" (#9512) This reverts commit fe9d5b6. * Adds ryanmcginnis to OWNERS (#9513) * Fix NetworkPolicy api link (#9427) * Document CustomResourceDefinition additionalPrinterColumns (#9143) * Add Kubernetes 1.11 release manager interview (#9496) * Add Kubernetes 1.11 release manager interview * fix typo * add Adam's surname * apply suggested fixes * apply suggested fixes * apply suggested fixes * apply suggested fixes * Fix broken link in note (#9535) * Add descripitons of --service-account-max-token-expiration option (#9500) * fix relative link and remove redirect link (#9468) * Update device-plugins.md to add Example link (#9531) Added link to Intel device plugins repo. Minor grammar/punctuation edits to make Example bullets parallel. * removed backtick that was breaking the format (#9530) * Fix `--allow-privileged` and `--alsologtostderr` descriptions (#9507) * Update pull-image-private-registry.md (#9153) `-d` does not work on mac, `--decode` should work cross platform * Remove download steps (#9494) * Fix:direct link in tasks/configure-pod-container/translate-compose-kubernetes (#9369) * change direct link to relative link * Update translate-compose-kubernetes.md * Add another Lisp client library (#8994) * Update extensible-admission-controllers.md (#8975) * Update extensible-admission-controllers.md * update per review comments update the url to the final redirect to url. * Update k8s101.md (#9043) * Fix some notes for Azure users (#9159) * Fix some notes for Azure users As is said in the docs (https://docs.microsoft.com/en-us/azure/aks/static-ip#create-static-ip-address), it must be the cluster node's resource group, not the cluster's resource group. * A few minor changes to adhere to the style guide * Format the auto-generate list(catalog) and update the render style (#9069) * fix some broken link in /docs/setup (#9256) * Fixed broken Link to Salt setup documentation (#9264) * set anchor links in "Types of Volumes" section (#9294) * Fix a typo in running cloud controller doc (#9325) * Update manage-compute-resources-container.md (#9326) Fix formatting that is thrown off by starting at "```shell{% raw %}" * Update training overview (#9378) Added Pluralsight getting started course * update homepage banner so it's less cropped (#9391) * Format code style (#9055) * Add code format * Format code display * Render style error * apply content_template (#9136) * apply task template * change content_template to task from concept * very minor change to url syntax (#9543) The URL for k/k included the text after ("repo"). This PR formats it to not include the text after. * Reworked API reference doc (#9536) This PR contains API reference docs generated from the reworked generator (see: kubernetes-sigs/reference-docs#53). The main purpose is to rework the way how examples are shown. When we are happy with the revised version, we can move the CSS and fonts file to the static directory. We only need to change the HTML and the `navData.js` file in the future. Related Issues: #9271, #4015 * Fix typo in persistent-volumes.md (#9550) * Fix id string for kube-proxy glossary term (#9551) -Added hyphen to id string so that glossary term displays extension text. * Update horizontal-pod-autoscale.md (#9546) Small typo. Missing "from" for sentence to make sense. * Update feature-gates.md (#9320) * Replacing the example IP address by something that could exists. (#9120) The example `123.45.678.9` was an invalid IP address. * Fix doc (#9564) Added line break to: "KUBECONFIG=/etc/kubernetes/admin.conf [NEWLINE HERE] kubectl ..."; Also added export to variables declaration. * Update service.md (#9562) I think the writer means "reuse" here instead of "replace". Since the idea behind choosing your own IP is to avoid having to make any changes to the DNS. * Add when storage key name changed (#9532) It seems the name changed in k8s 1.8 which was reflected in #5490 but the last section still mentions the old name without saying it has changed. * Fix issues in configure-volume-storage (#9521) * ps command not found Signed-off-by: Jamie Zhuang <lanchongyizu@gmail.com> * change to "host namespaces" and remove command prompts (#9553) * changing button spacing (#8963) * Fix link to website in Airflow Blogpost (#9338) * Blog: 11 Ways (Not) to Get Hacked (#8914) * feat: add 11 Ways (Not) to Get Hacked * Update and rename 2018-06-05-11-ways-not-to-get-hacked.md to 2018-07-18-11-ways-not-to-get-hacked.md * updates to Pearson case study content (#9483) * updates to Pearson case study content * updates to Pearson * apply templates/concept and fix code snippets (#9540) * updates to order of case studies (#9545) * updates to order of case studies * update * fix some dumplication_problem (#9235) * Update extensible admission controller links (#9459) * update extensible-admission-controller links * correct what-are-initializers link * Add kublr to list of solutions (#9544) * statefulset.md - Beta remnants removed (#9522) * Fix some error about fluentd config file (#9528) 1.Fix error about source path is not equal to autdit-log-path 2.Fix error about filter type set Signed-off-by: pengdake <19921207pq@gmail.com> * Fix type in docs (#8939) * Fix type in docs * Address code review comments. * Update authentication.md (#9565) minor grammar correction * Fix doc references to Kubernetes services provided by AWS, Azure and GCE (#9508) * update authorization-node links (#9462) * include supported version skew (#9501) * Update create-pull-request.md (#9488) Remove link to stage-documentation-change. (@misty says: The old page doesn't exist anymore and is now redirected to the current page.) * Update authorization links (#9465) * update authorization links * remove cn content and fix link targets * update bootstrap-token links (#9456) * Make macOS standard usage (#9422) * Add note for fluentd plugin installation (#9451) * Add note for fluentd plugin installation Fluentd plugin installation is different from fluentd installation, so we need to tell user how to solve it. Signed-off-by: pengdake <19921207pq@gmail.com> * add space in note * add period * Add guide for getting token and discovery-token-ca-cert-hash (#9017) * Add guide for getting token and discovery-token-ca-cert-hash * Fix code snippet style * apply content template (#9232) * Environment variable for etcd quorum is singular (#9302) See https://github.com/kubernetes/kubernetes/blob/f8c4907bec4fcb7d86d955c06b9c362b61e58933/cluster/gce/config-default.sh#L109 * Drop {% raw %} block in manage-compute-resources-container (#9428) This was breaking rendering the end of the page. * Fixes to example for connecting with curl (#9337) * Fixes to example for connecting with curl Example for getting cluster token - does not work with multiple entries in kubeconfig - does not work with Istio installed Fix both * also need to change the tr from tabs to spaces * Fix the semantically very broken search box (#9408) This was very annoyingly very broken. *Very* broken. Two primary issues: 1. Autofocus. Autofocus should only be used on a field when it is the expected action on the page, because it steals keyboard events such as the arrow keys and Space for navigation, and causes users of screen readers confusion as they’re thrown into a strange place. It’d be just barely OK to use it on search pages, but used on *every* page in the documentation, it’s just *super* annoying. 2. Not being a form. I have *no* idea why anyone would ever have written it the way it was—it’s just awful from end to end, a bad reimplementation of a subset of native browser functionality. It’s a form, let it *be* a form. Possibly the most baffling part of it was the use of location.replace which breaks the back button. I just… why!? While I was at it, I gave the search box an aria-label for good measure, but I didn’t change its type to "search" because that has UI implications on some platforms that I’m too lazy to deal with. This is still pretty bad, because that magnifying glass is done in CSS rather than being a fair dinkum submit button, but I just wanted a quick fix because the autofocus issue is annoying me *so much*. * apply templates/concept (#9539) * update service-accounts-admin links (#9461) * Trivial: Make the authentication doc consistent (#9472) On the content, user categories are defined as service account and normal user. However regular user is written at one place instead of normal user. This replaces the regular user with normal user for the consistency. The option --authentication-token-webhook-config-file is for specifying the configuration file which uses the kubeconfig file format, so this replaces kubeconfig with configuration for avoiding confusions. The last change is updating the order of 'clusters' and 'users' for fitting the following example to read easily. * Update authorization-rbac links (#9463) * update authorization-rbac links * fix broken links * undo modification of cn content * reorganize kubeadm files, part 1 (#9439) * reorganize kubeadm files, part 1 * edit troubleshooting kubeadm for layout and content * Update admission controller links (#9386) * update admission-controller links (cherry picked from commit 3704399) * updated links found using greedier regex (cherry picked from commit 45c6d4c) * correct link in cn/docs/admin/authorization/_index.md * fix incorrect changes introduced in eac3619 * undo update of cn content * fix link * fix admission webhook link * The command to copy the decoded certificate to the server.crt (#9448) * The command to copy the decoded certificate to the server.crt * -D to --decode * apply templates/concept and fix code snippets (#9542) * Change formatting of Stackpoint turnkey doc (#9493) * Change formatting of Stackpoint turnkey doc * s/Running/Run * fix formatting glitch * use template * Add env var example (#9486) * Adding anchor links to partner page (#9411) * adding anchor links * updating link names * Add CNCF logo to homepage (#9375) * add CNCF logo on homepage * edits * Fix dead links and apply template (#9476) * fix dead links and apply template * fix conflicts * re-fix dead links * Revert "re-fix dead links" This reverts commit 3eb8292. * Adding redirects for turnkey docs. (#9426) These documents were moved in #8937. * Update fedora_manual_config.md (#9416) removal of # Add your own! KUBELET_ARGS="" this line causes line with args in it to be over writen removal of flag "--require-kubeconfig" as it prevents the service from starting with error "F0708 18:41:17.411350 11725 server.go:145] unknown flag: --require-kubeconfig" this is with v1.10.1 * update the go client usage to prevent common error. (#9414) * fix-manage-compute-resources-container-view (#9402) * Fix typo in example script (#9381) Variable reference should be $ETCDHOSTS, not $ETCDHOST * fix html * add a space * tweak crictl.md (#9349) * Enhance documentation of .spec.startingDeadlineSeconds (#9296) * Update cron-jobs.md * Update automated-tasks-with-cron-jobs.md * Update cron-jobs.md * Reword added documentation and add info about error message. * Fix grammatical typo. * adjust grammar and punctuation * adjust grammar and punctuation * adjust tense * Supplement documentation of ExternalName service types (#9435) * Re-organize doc * Remove section on multiple namespaces * add NOTE to callout * inline code block is not displayed (#8940) * inline code block is not displayed Using `kubectl get storageclass` instead of ``` kubectl get storageclass ``` correctly shows the code markup. * Update change-default-storage-class.md * reformat markdown for nested list * Recommend --watch flag for obtaining external IP information (issue 8483) (#9129) * Use --watch flag instead of checking multiple times * Wording changes * Update references to Federation-v2 progress (#9116) * Update references to Federation-v2 progress Added resources to the whats next section as there has been significant progress over the past few months with the alpha release of Federation-v2 expected in the next few weeks. * remove <federation> in link * Add new field selectors doc (#9174) * Add new field selectors doc * Address wording issues and remove warning * add note on = and == Signed-off-by: lucperkins <lucperkins@gmail.com> * fix double bullets in TOC (#9175) * docs/concepts: add search paths for docker config (#9085) previous document suggests to put config to /root/.docker/config.json which is not always the case, and only works when the HOME=/root is set for kubelet. Besides, that's not always the most recommended way considering the potential risk when someone overrides this config with another `docker login` on the same node. this change explicitly lists all the possible locations where the configuration can be put. * Add L10n repo branch structure info (#9206) * Trivial Doc Fix (#9580) This fixes the spelling of "default". * fix: blog post clarity (#9578) - rephrase Istio release info - update RBAC for GKE vs hosted * Trivial typo fix (#9575) This PR takes over changes in #8980. * Remove rkt-api-endpoint and rkt-path arguments in the doc (#9538) (#9576) Kubelet help return not exist rkt-api-endpoint and rkt-path arguments, So delete not exist arguments. Signed-off-by: Yuanbin.Chen <cybing4@gmail.com> * Fix reference to install-kubeadm docs (#9573) The install-kubeadm doc has recently been moved from tasks to setup. Fix the references and remove an incorrect redict. * updates to ING quotes (#9582) * updates to ING quotes * update * Fix deployment.md with wrong READY numbers (#9584) The status of READY number should be 2 instead of 0, described in the first line of table * oscon post (#9586) * Add mention of NGINX Ingress Controller for Kubernetes (#9228) * Update cron-jobs.md (#9234) * Update cron-jobs.md Removed bullet point indicating that a `CronJob` can run "Once at a specified point in time", since this use case is either not possible, or not documented at all. * change wording * Add Kontena Pharos as K8s solutions (#9166) * adding cni.md (#8760) * adding cni.md * apply Zach's feedback * update from GCE to GKE (#8881) * Fix pipe to base64 -d to -D (#8943) * Fix pipe to base64 -d to -D Mac: `-d` does not work -D does Eg. echo "c3R...zE2" | base64 -D * use --decode instead of -D or -d * Fix command highlight in port-forward-access-application-cluster (#8705) * fix command highlight in port-forward-access-application-cluster * Fix structure and add some sentences * modify the wording * update wording * fix: typo, reword (#9587) Apologies @kbarnard10, made this morning's correction with a typo >.< * Add ICP license to the site footer (#9589) * adding oscon post (#9595) * Update pod-lifecycle.md (#9593) Merging these two paragraphs, which both describe the fields included in the PodConditions. The first one mentions 6 fields, but only defines 3 of them. The second one defines two of the remaining three. The missing 6th element ("reason") has been added. Now we have the full list in one single section. Easier to understand. * Update /docs/concepts/containers/images/ (#9596) * wrap notes by shortcodes and remove command prompts * tweak shell command * remove command prompts and tweak shell commands (#9597) * apply content_template (#9598) * apply content_template (#9599) * Updated dns-pod-service.md (#9552) * Updated dns-pod-service.md Added a note on A records creation * Updated dns-pod-service.md Added Hugo {{ note }} shortcode * Update dns-pod-service.md Changed wording * tighten up the wording * kubeadm-install: modify the note about kubelet cgroup drivers (#9541) * Make the command work with multiple pods too (#9454) * Make the command work with multiple pods too if the user has 2 or more pods the original command line give the following error: ```error: only one of -c or an inline [CONTAINER] arg is allowed See 'kubectl logs -h' for help and examples.``` * Remove dollar sign to respect style guidelines * Note on missing/incorrect labels and scheduler behaviour with pod anti-affinity (#8973) * fix replicaset example (#9603) * Fix display of lists in scheduling-gpus.md (#9609) The lists are misparsed and displayed as normal paragraphs, add empty lines so that they are parsed as proper lists. * Fix contribution guide about adding code samples (#9574) We have consolidated all YAML examples into `content/en/examples` directory. This PR updates the contribution guide so that people know where to put their sample YAML files when adding/changing topics. * Blog Post: CPU Manager (#9632) * adding oscon post * CPU Manager Blog Post * s/bash/shell (revert to previous) * More language fixes * Update information on master node size on GKE/AWS (#9226) * Update information on master node size on GKE/AWS * clean up passive language * `this` instead of `the` to make it sound better. (#9629) * Use Hugo for Sass processing (#9404) * Move all Sass into a common /assets directory * Remove node-sass make command * Change head partial to accommodate full Sass rules * Bump Hugo version in Netlify config * Use separate partial for CSS imports * Bump Hugo version * Remove PostCSS from the pipeline * Un-bump version * Update Hugo version to 0.44 * Update Hugo version in Makefile * Update production Hugo version * Fix misspelled variable name * Add ./resources folder to Git * Update Hugo version in Netlify config to 0.45.1 * Use un-cached css.html partial * Re-work extra CSS logic for .Params.css * Update CSS generation logic in css.html partial * Fix homepage image loading issue * Fix quota documentation (#9648) * Fix configure-service-account doc set permissions link error (#9653) Issuse record: #9650 Signed-off-by: Yuanbin.Chen <cybing4@gmail.com> * Change stage target to docker-serve in Makefile (#9216) * Change stage target to docker-serve in Makefile docker-serve is documented in the readme (from #9128). * Update underlying command for make docker-serve The underlying command listed in the README wasn't exactly the same as the command in the Makefile. * Remove old Dockerfile for Jekyll site PR #9128 added a new Dockerfile for the Hugo site. The old staging container is no longer needed. * Add debugging information to pod priority and preemption (#9568) * Add debugging information to Pod priority and preemption * mdformat the page * keep feature-state shortcodes together * Add one more potential bug in preemption * Addressed reviewer comments * Keep packages back from package manager upgrades (#9509) * Keep packages back from package manager upgrades closes kubernetes/kubeadm#954 * copy edit revision * Blog post, outlines KubeVirt's usage k8s extension features (#9324) * Blog post about how KubeVirt extends Kubernetes using CRDs and other k8s extension features * Update blog post to reflect k8s v1.11 crd versioning support * Update and rename 2018-07-24-kubevirt-crds-for-virtualization.md to 2018-07-27-kubevirt-crds-for-virtualization.md * Tidy up blog post to reflect reviewer feedback * add pinterest case study (#9633) * add pinterest case study * fix * fixes * Update configure-service-account.md (#9657) Fixed the broken link listed in : #9650 * Update scale-intro.html (#9659) reduce --> increase * Auto _headers file generation logic (#9225) * Standardize code formatting * change image assets to https (#9660) * change image assets to https * fix in docs * fix remaining image links * Localization instructions (#9192) * Begin re-working localization instructions * Fix dangling sentence * Re-arrange sections plus new content * Fix TOC issue with misplaced capture directive * Create new shortcodes for versions and language repos * Add more translation instructions * Remove translation docs added as an example * Finish draft of localization doc * Remove extraneous note * fix description about kubeadm (#9646) * add note shortcodes (#9673) * Change "dotation" to "dot notation" in two places (#9678) * Document update (#9675) Adding a link to redis replicated so users of this example have a better understanding of what redis replicated is * Update downward-api-volume-expose-pod-information.md (#9567) dapi-volume-resources.yaml Added divisor field in resourceFieldRef for DownwardAPIVolumeFiles to clarify the format in which values are returned. Issue: kubernetes/kubernetes#64579 * update default value of kubelet flag pod-infra-container-image (#9611) * kubeadm-upgrade-1.11: fix wrong flag for feature gates (#9619) * kubeadm: fix broken link for ha-etcd doc (#9624) * fix the command output (#9636) I have verified on version v1.10.0 [root@huan30:~]$ kubectl version Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0-1", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"archive", BuildDate:"2018-06-13T04:29:49Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0-1", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"archive", BuildDate:"2018-06-13T04:22:05Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"} * Add Alibaba Cloud in pick-right-solution.md (#9644) Add Alibaba Cloud in pick-right-solution.md to give users more options. * Add a note CPU change handling in CPU manager. (#9671) This relates to PR kubernetes/kubernetes#66718 which validates that CPU manager state and current set CPUs are in sync. * fix description about custom resource (#9676) * JSONPaths with spaces must be double-quoted on Windows (#9679) * Fix links to example YAMLs (#9680) There are a few cases which were missed during previous effort on consolidating all example YAML files. This PR fixes them all in the English version. Closes: #9674 * Remove redundant parenthesis (#9681) Closes: #9665 * Correct minor error (#9690) Technically speaking SRV targets are address record names, not CNAMEs. In fact, the SRV RFC states that SRV targets must point to an address record name, and cannot be an alias (e.g. CNAME). * fix the command output (#9695) I have verified on version v1.11 [root@huan40:~]$ kubectl version Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.1", GitCommit:"b1b29978270dc22fecc592ac55d903350454310a", GitTreeState:"clean", BuildDate:"2018-07-17T18:53:20Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.1", GitCommit:"b1b29978270dc22fecc592ac55d903350454310a", GitTreeState:"clean", BuildDate:"2018-07-17T18:43:26Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"} * fix the command output (#9697) fix the command output * Disable excludes when installing kube packages (#9670) We should not exclude kubernetes packages when installing them. * add link to nvidia gpu scheduling guide at end of device plugin document (#9685) * Fix persistentVolumeClaim link (#9700) * DamonSet typo (#9705) * config: Get mediaTypes config in line with the Hugo version (#9704) This gets rid of the big WARNING when building. Note that this is only Netlify related, so it is backwards compatible. * fix the command output (#9668) I have verified on version v1.11.
This blog post outlines how KubeVirt uses CRDs and other k8 extension mechanisms to provide our feature set.
While I do briefly explain KubeVirt for context, the goal here is to provide a real world example of the decision making process projects like ours go through when looking at the k8s tool set. We're doing our best to extend k8s for virtualized workloads in a way that integrates seamlessly with existing k8s clusters. This post provides insight into what k8s features we're using to do this and the thought process that went into our decision making.