diff --git a/Makefile b/Makefile
index c6a411ddd2..56ec8410f4 100644
--- a/Makefile
+++ b/Makefile
@@ -6,7 +6,8 @@ NETLIFY_FUNC = $(NODE_BIN)/netlify-lambda
# but this can be overridden when calling make, e.g.
# CONTAINER_ENGINE=podman make container-image
CONTAINER_ENGINE ?= docker
-CONTAINER_IMAGE = kubernetes-hugo
+IMAGE_VERSION=$(shell scripts/hash-files.sh Dockerfile Makefile | cut -c 1-12)
+CONTAINER_IMAGE = kubernetes-hugo:v$(HUGO_VERSION)-$(IMAGE_VERSION)
CONTAINER_RUN = $(CONTAINER_ENGINE) run --rm --interactive --tty --volume $(CURDIR):/src
CCRED=\033[0;31m
diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES
index 0d5f4975fb..9498e2c228 100644
--- a/OWNERS_ALIASES
+++ b/OWNERS_ALIASES
@@ -192,6 +192,7 @@ aliases:
- potapy4
- dianaabv
sig-docs-ru-reviews: # PR reviews for Russian content
+ - Arhell
- msheldyakov
- aisonaku
- potapy4
diff --git a/assets/scss/_base.scss b/assets/scss/_base.scss
index fab7dd4e7e..ad462067c6 100644
--- a/assets/scss/_base.scss
+++ b/assets/scss/_base.scss
@@ -511,7 +511,7 @@ section#cncf {
}
#desktopKCButton {
- position: relative;
+ position: absolute;
font-size: 18px;
background-color: $dark-grey;
border-radius: 8px;
diff --git a/config.toml b/config.toml
index 1ea6b9a537..00427abcf3 100644
--- a/config.toml
+++ b/config.toml
@@ -275,6 +275,7 @@ description = "Production-Grade Container Orchestration"
languageName ="English"
# Weight used for sorting.
weight = 1
+languagedirection = "ltr"
[languages.zh]
title = "Kubernetes"
@@ -282,6 +283,7 @@ description = "生产级别的容器编排系统"
languageName = "中文 Chinese"
weight = 2
contentDir = "content/zh"
+languagedirection = "ltr"
[languages.zh.params]
time_format_blog = "2006.01.02"
@@ -293,6 +295,7 @@ description = "운영 수준의 컨테이너 오케스트레이션"
languageName = "한국어 Korean"
weight = 3
contentDir = "content/ko"
+languagedirection = "ltr"
[languages.ko.params]
time_format_blog = "2006.01.02"
@@ -304,6 +307,7 @@ description = "プロダクショングレードのコンテナ管理基盤"
languageName = "日本語 Japanese"
weight = 4
contentDir = "content/ja"
+languagedirection = "ltr"
[languages.ja.params]
time_format_blog = "2006.01.02"
@@ -315,6 +319,7 @@ description = "Solution professionnelle d’orchestration de conteneurs"
languageName ="Français"
weight = 5
contentDir = "content/fr"
+languagedirection = "ltr"
[languages.fr.params]
time_format_blog = "02.01.2006"
@@ -327,6 +332,7 @@ description = "Orchestrazione di Container in produzione"
languageName = "Italiano"
weight = 6
contentDir = "content/it"
+languagedirection = "ltr"
[languages.it.params]
time_format_blog = "02.01.2006"
@@ -339,6 +345,7 @@ description = "Production-Grade Container Orchestration"
languageName ="Norsk"
weight = 7
contentDir = "content/no"
+languagedirection = "ltr"
[languages.no.params]
time_format_blog = "02.01.2006"
@@ -351,6 +358,7 @@ description = "Produktionsreife Container-Orchestrierung"
languageName ="Deutsch"
weight = 8
contentDir = "content/de"
+languagedirection = "ltr"
[languages.de.params]
time_format_blog = "02.01.2006"
@@ -363,6 +371,7 @@ description = "Orquestación de contenedores para producción"
languageName ="Español"
weight = 9
contentDir = "content/es"
+languagedirection = "ltr"
[languages.es.params]
time_format_blog = "02.01.2006"
@@ -375,6 +384,7 @@ description = "Orquestração de contêineres em nível de produção"
languageName ="Português"
weight = 9
contentDir = "content/pt"
+languagedirection = "ltr"
[languages.pt.params]
time_format_blog = "02.01.2006"
@@ -387,6 +397,7 @@ description = "Orkestrasi Kontainer dengan Skala Produksi"
languageName ="Bahasa Indonesia"
weight = 10
contentDir = "content/id"
+languagedirection = "ltr"
[languages.id.params]
time_format_blog = "02.01.2006"
@@ -399,6 +410,7 @@ description = "Production-Grade Container Orchestration"
languageName = "Hindi"
weight = 11
contentDir = "content/hi"
+languagedirection = "ltr"
[languages.hi.params]
time_format_blog = "01.02.2006"
@@ -410,6 +422,7 @@ description = "Giải pháp điều phối container trong môi trường produc
languageName = "Tiếng Việt"
contentDir = "content/vi"
weight = 12
+languagedirection = "ltr"
[languages.ru]
title = "Kubernetes"
@@ -417,6 +430,7 @@ description = "Первоклассная оркестрация контейн
languageName = "Русский"
weight = 12
contentDir = "content/ru"
+languagedirection = "ltr"
[languages.ru.params]
time_format_blog = "02.01.2006"
@@ -429,6 +443,7 @@ description = "Produkcyjny system zarządzania kontenerami"
languageName = "Polski"
weight = 13
contentDir = "content/pl"
+languagedirection = "ltr"
[languages.pl.params]
time_format_blog = "01.02.2006"
@@ -441,6 +456,7 @@ description = "Довершена система оркестрації конт
languageName = "Українська"
weight = 14
contentDir = "content/uk"
+languagedirection = "ltr"
[languages.uk.params]
time_format_blog = "02.01.2006"
diff --git a/content/de/_index.html b/content/de/_index.html
index 48df4cfd1f..82f4a75d7f 100644
--- a/content/de/_index.html
+++ b/content/de/_index.html
@@ -4,7 +4,6 @@ abstract: "Automatisierte Bereitstellung, Skalierung und Verwaltung von Containe
cid: home
---
-{{< deprecationwarning >}}
{{< blocks/section id="oceanNodes" >}}
{{% blocks/feature image="flower" %}}
@@ -59,4 +58,4 @@ Kubernetes ist Open Source und bietet Dir die Freiheit, die Infrastruktur vor Or
{{< blocks/kubernetes-features >}}
-{{< blocks/case-studies >}}
+{{< blocks/case-studies >}}
\ No newline at end of file
diff --git a/content/en/_index.html b/content/en/_index.html
index 97e02aa259..08ff1658d4 100644
--- a/content/en/_index.html
+++ b/content/en/_index.html
@@ -41,7 +41,6 @@ Kubernetes is open source giving you the freedom to take advantage of on-premise
-
Attend KubeCon EU virtually on August 17-20, 2020
diff --git a/content/en/blog/_posts/2015-05-00-Kubernetes-On-Openstack.md b/content/en/blog/_posts/2015-05-00-Kubernetes-On-Openstack.md
index 35918b5dbe..1e2b4ce3a5 100644
--- a/content/en/blog/_posts/2015-05-00-Kubernetes-On-Openstack.md
+++ b/content/en/blog/_posts/2015-05-00-Kubernetes-On-Openstack.md
@@ -19,34 +19,20 @@ The entries in the catalog include not just the ability to [start a Kubernetes c
--
-Apache web server
--
-Nginx web server
--
-Crate - The Distributed Database for Docker
--
-GlassFish - Java EE 7 Application Server
--
-Tomcat - An open-source web server and servlet container
--
-InfluxDB - An open-source, distributed, time series database
--
-Grafana - Metrics dashboard for InfluxDB
--
-Jenkins - An extensible open source continuous integration server
--
-MariaDB database
--
-MySql database
--
-Redis - Key-value cache and store
--
-PostgreSQL database
--
-MongoDB NoSQL database
--
-Zend Server - The Complete PHP Application Platform
+- Apache web server
+- Nginx web server
+- Crate - The Distributed Database for Docker
+- GlassFish - Java EE 7 Application Server
+- Tomcat - An open-source web server and servlet container
+- InfluxDB - An open-source, distributed, time series database
+- Grafana - Metrics dashboard for InfluxDB
+- Jenkins - An extensible open source continuous integration server
+- MariaDB database
+- MySql database
+- Redis - Key-value cache and store
+- PostgreSQL database
+- MongoDB NoSQL database
+- Zend Server - The Complete PHP Application Platform
diff --git a/content/en/blog/_posts/2015-06-00-The-Distributed-System-Toolkit-Patterns.md b/content/en/blog/_posts/2015-06-00-The-Distributed-System-Toolkit-Patterns.md
index d8c3c59a08..f5a050bd19 100644
--- a/content/en/blog/_posts/2015-06-00-The-Distributed-System-Toolkit-Patterns.md
+++ b/content/en/blog/_posts/2015-06-00-The-Distributed-System-Toolkit-Patterns.md
@@ -12,14 +12,10 @@ In many ways the switch from VMs to containers is like the switch from monolithi
The benefits of thinking in terms of modular containers are enormous, in particular, modular containers provide the following:
--
-Speed application development, since containers can be re-used between teams and even larger communities
--
-Codify expert knowledge, since everyone collaborates on a single containerized implementation that reflects best-practices rather than a myriad of different home-grown containers with roughly the same functionality
--
-Enable agile teams, since the container boundary is a natural boundary and contract for team responsibilities
--
-Provide separation of concerns and focus on specific functionality that reduces spaghetti dependencies and un-testable components
+- Speed application development, since containers can be re-used between teams and even larger communities
+- Codify expert knowledge, since everyone collaborates on a single containerized implementation that reflects best-practices rather than a myriad of different home-grown containers with roughly the same functionality
+- Enable agile teams, since the container boundary is a natural boundary and contract for team responsibilities
+- Provide separation of concerns and focus on specific functionality that reduces spaghetti dependencies and un-testable components
Building an application from modular containers means thinking about symbiotic groups of containers that cooperate to provide a service, not one container per service. In Kubernetes, the embodiment of this modular container service is a Pod. A Pod is a group of containers that share resources like file systems, kernel namespaces and an IP address. The Pod is the atomic unit of scheduling in a Kubernetes cluster, precisely because the symbiotic nature of the containers in the Pod require that they be co-scheduled onto the same machine, and the only way to reliably achieve this is by making container groups atomic scheduling units.
diff --git a/content/en/blog/_posts/2015-07-00-Weekly-Kubernetes-Community-Hangout_23.md b/content/en/blog/_posts/2015-07-00-Weekly-Kubernetes-Community-Hangout_23.md
index 753e2250be..9703dd6141 100644
--- a/content/en/blog/_posts/2015-07-00-Weekly-Kubernetes-Community-Hangout_23.md
+++ b/content/en/blog/_posts/2015-07-00-Weekly-Kubernetes-Community-Hangout_23.md
@@ -14,121 +14,71 @@ Here are the notes from today's meeting:
--
-Eric Paris: replacing salt with ansible (if we want)
+- Eric Paris: replacing salt with ansible (if we want)
- -
-In contrib, there is a provisioning tool written in ansible
- -
-The goal in the rewrite was to eliminate as much of the cloud provider stuff as possible
- -
-The salt setup does a bunch of setup in scripts and then the environment is setup with salt
+ - In contrib, there is a provisioning tool written in ansible
+ - The goal in the rewrite was to eliminate as much of the cloud provider stuff as possible
+ - The salt setup does a bunch of setup in scripts and then the environment is setup with salt
- -
-This means that things like generating certs is done differently on GCE/AWS/Vagrant
- -
-For ansible, everything must be done within ansible
- -
-Background on ansible
+ - This means that things like generating certs is done differently on GCE/AWS/Vagrant
+ - For ansible, everything must be done within ansible
+ - Background on ansible
- -
-Does not have clients
- -
-Provisioner ssh into the machine and runs scripts on the machine
- -
-You define what you want your cluster to look like, run the script, and it sets up everything at once
- -
-If you make one change in a config file, ansible re-runs everything (which isn’t always desirable)
- -
-Uses a jinja2 template
- -
-Create machines with minimal software, then use ansible to get that machine into a runnable state
+ - Does not have clients
+ - Provisioner ssh into the machine and runs scripts on the machine
+ - You define what you want your cluster to look like, run the script, and it sets up everything at once
+ - If you make one change in a config file, ansible re-runs everything (which isn’t always desirable)
+ - Uses a jinja2 template
+ - Create machines with minimal software, then use ansible to get that machine into a runnable state
- -
-Sets up all of the add-ons
- -
-Eliminates the provisioner shell scripts
- -
-Full cluster setup currently takes about 6 minutes
+ - Sets up all of the add-ons
+ - Eliminates the provisioner shell scripts
+ - Full cluster setup currently takes about 6 minutes
- -
-CentOS with some packages
- -
-Redeploy to the cluster takes 25 seconds
- -
-Questions for Eric
+ - CentOS with some packages
+ - Redeploy to the cluster takes 25 seconds
+ - Questions for Eric
- -
-Where does the provider-specific configuration go?
+ - Where does the provider-specific configuration go?
- -
-The only network setup that the ansible config does is flannel; you can turn it off
- -
-What about init vs. systemd?
+ - The only network setup that the ansible config does is flannel; you can turn it off
+ - What about init vs. systemd?
- -
-Should be able to support in the code w/o any trouble (not yet implemented)
- -
-Discussion
+ - Should be able to support in the code w/o any trouble (not yet implemented)
+ - Discussion
- -
-Why not push the setup work into containers or kubernetes config?
+ - Why not push the setup work into containers or kubernetes config?
- -
-To bootstrap a cluster drop a kubelet and a manifest
- -
-Running a kubelet and configuring the network should be the only things required. We can cut a machine image that is preconfigured minus the data package (certs, etc)
+ - To bootstrap a cluster drop a kubelet and a manifest
+ - Running a kubelet and configuring the network should be the only things required. We can cut a machine image that is preconfigured minus the data package (certs, etc)
- -
-The ansible scripts install kubelet & docker if they aren’t already installed
- -
-Each OS (RedHat, Debian, Ubuntu) could have a different image. We could view this as part of the build process instead of the install process.
- -
-There needs to be solution for bare metal as well.
- -
-In favor of the overall goal -- reducing the special configuration in the salt configuration
- -
-Everything except the kubelet should run inside a container (eventually the kubelet should as well)
+ - The ansible scripts install kubelet & docker if they aren’t already installed
+ - Each OS (RedHat, Debian, Ubuntu) could have a different image. We could view this as part of the build process instead of the install process.
+ - There needs to be solution for bare metal as well.
+ - In favor of the overall goal -- reducing the special configuration in the salt configuration
+ - Everything except the kubelet should run inside a container (eventually the kubelet should as well)
- -
-Running in a container doesn’t cut down on the complexity that we currently have
- -
-But it does more clearly define the interface about what the code expects
- -
-These tools (Chef, Puppet, Ansible) conflate binary distribution with configuration
+ - Running in a container doesn’t cut down on the complexity that we currently have
+ - But it does more clearly define the interface about what the code expects
+ - These tools (Chef, Puppet, Ansible) conflate binary distribution with configuration
- -
-Containers more clearly separate these problems
- -
-The mesos deployment is not completely automated yet, but the mesos deployment is completely different: kubelets get put on top on an existing mesos cluster
+ - Containers more clearly separate these problems
+ - The mesos deployment is not completely automated yet, but the mesos deployment is completely different: kubelets get put on top on an existing mesos cluster
- -
-The bash scripts allow the mesos devs to see what each cloud provider is doing and re-use the relevant bits
- -
-There was a large reverse engineering curve, but the bash is at least readable as opposed to the salt
- -
-Openstack uses a different deployment as well
- -
-We need a well documented list of steps (e.g. create certs) that are necessary to stand up a cluster
+ - The bash scripts allow the mesos devs to see what each cloud provider is doing and re-use the relevant bits
+ - There was a large reverse engineering curve, but the bash is at least readable as opposed to the salt
+ - Openstack uses a different deployment as well
+ - We need a well documented list of steps (e.g. create certs) that are necessary to stand up a cluster
- -
-This would allow us to compare across cloud providers
- -
-We should reduce the number of steps as much as possible
- -
-Ansible has 241 steps to launch a cluster
--
-1.0 Code freeze
+ - This would allow us to compare across cloud providers
+ - We should reduce the number of steps as much as possible
+ - Ansible has 241 steps to launch a cluster
+- 1.0 Code freeze
- -
-How are we getting out of code freeze?
- -
-This is a topic for next week, but the preview is that we will move slowly rather than totally opening the firehose
+ - How are we getting out of code freeze?
+ - This is a topic for next week, but the preview is that we will move slowly rather than totally opening the firehose
- -
-We want to clear the backlog as fast as possible while maintaining stability both on HEAD and on the 1.0 branch
- -
-The backlog of almost 300 PRs but there are also various parallel feature branches that have been developed during the freeze
- -
-Cutting a cherry pick release today (1.0.1) that fixes a few issues
+ - We want to clear the backlog as fast as possible while maintaining stability both on HEAD and on the 1.0 branch
+ - The backlog of almost 300 PRs but there are also various parallel feature branches that have been developed during the freeze
+ - Cutting a cherry pick release today (1.0.1) that fixes a few issues
- Next week we will discuss the cadence for patch releases
diff --git a/content/en/blog/_posts/2016-03-00-Elasticbox-Introduces-Elastickube-To.md b/content/en/blog/_posts/2016-03-00-Elasticbox-Introduces-Elastickube-To.md
index 1a67c9334e..e1df83d3e2 100644
--- a/content/en/blog/_posts/2016-03-00-Elasticbox-Introduces-Elastickube-To.md
+++ b/content/en/blog/_posts/2016-03-00-Elasticbox-Introduces-Elastickube-To.md
@@ -16,17 +16,10 @@ Fundamentally, ElasticKube delivers a web console for which compliments Kubernet
ElasticKube enables organizations to accelerate adoption by developers, application operations and traditional IT operations teams and shares a mutual goal of increasing developer productivity, driving efficiency in container management and promoting the use of microservices as a modern application delivery methodology. When leveraging ElasticKube in your environment, users need to ensure the following technologies are configured appropriately to guarantee everything runs correctly:
--
-Configure Google Container Engine (GKE) for cluster installation and management
-
--
-Use Kubernetes to provision the infrastructure and clusters for containers
-
--
-Use your existing tools of choice to actually build your containers
--
-
-Use ElasticKube to run, deploy and manage your containers and services
+- Configure Google Container Engine (GKE) for cluster installation and management
+- Use Kubernetes to provision the infrastructure and clusters for containers
+- Use your existing tools of choice to actually build your containers
+- Use ElasticKube to run, deploy and manage your containers and services
[](http://cl.ly/0i3M2L3Q030z/Image%202016-03-11%20at%209.49.12%20AM.png)
@@ -39,14 +32,10 @@ Getting Started with Kubernetes and ElasticKube
(this is a 3min walk through video with the following topics)
-1.
-Deploy ElasticKube to a Kubernetes cluster
-2.
-Configuration
-3.
-Admin: Setup and invite a user
-4.
-Deploy an instance
+1. Deploy ElasticKube to a Kubernetes cluster
+2. Configuration
+3. Admin: Setup and invite a user
+4. Deploy an instance
diff --git a/content/en/blog/_posts/2016-03-00-Kubernetes-In-Enterprise-With-Fujitsus.md b/content/en/blog/_posts/2016-03-00-Kubernetes-In-Enterprise-With-Fujitsus.md
index 3bfa309fd1..b02f089cac 100644
--- a/content/en/blog/_posts/2016-03-00-Kubernetes-In-Enterprise-With-Fujitsus.md
+++ b/content/en/blog/_posts/2016-03-00-Kubernetes-In-Enterprise-With-Fujitsus.md
@@ -13,24 +13,18 @@ Today, we want to take you on a short tour explaining the background of our offe
In mid 2014 we looked at the challenges enterprises are facing in the context of digitization, where traditional enterprises experience that more and more competitors from the IT sector are pushing into the core of their markets. A big part of Fujitsu’s customers are such traditional businesses, so we considered how we could help them and came up with three basic principles:
--
-Decouple applications from infrastructure - Focus on where the value for the customer is: the application.
--
-Decompose applications - Build applications from smaller, loosely coupled parts. Enable reconfiguration of those parts depending on the needs of the business. Also encourage innovation by low-cost experiments.
--
-Automate everything - Fight the increasing complexity of the first two points by introducing a high degree of automation.
+- Decouple applications from infrastructure - Focus on where the value for the customer is: the application.
+- Decompose applications - Build applications from smaller, loosely coupled parts. Enable reconfiguration of those parts depending on the needs of the business. Also encourage innovation by low-cost experiments.
+- Automate everything - Fight the increasing complexity of the first two points by introducing a high degree of automation.
We found that Linux containers themselves cover the first point and touch the second. But at this time there was little support for creating distributed applications and running them managed automatically. We found Kubernetes as the missing piece.
**Not a free lunch**
The general approach of Kubernetes in managing containerized workload is convincing, but as we looked at it with the eyes of customers, we realized that it’s not a free lunch. Many customers are medium-sized companies whose core business is often bound to strict data protection regulations. The top three requirements we identified are:
--
-On-premise deployments (with the option for hybrid scenarios)
--
-Efficient operations as part of a (much) bigger IT infrastructure
--
-Enterprise-grade support, potentially on global scale
+- On-premise deployments (with the option for hybrid scenarios)
+- Efficient operations as part of a (much) bigger IT infrastructure
+- Enterprise-grade support, potentially on global scale
We created Cloud Load Control with these requirements in mind. It is basically a distribution of Kubernetes targeted for on-premise use, primarily focusing on operational aspects of container infrastructure. We are committed to work with the community, and contribute all relevant changes and extensions upstream to the Kubernetes project.
**On-premise deployments**
@@ -39,12 +33,9 @@ As Kubernetes core developer Tim Hockin often puts it in his[talks](https://spea
Cloud Load Control addresses these issues. It enables customers to reliably and readily provision a production grade Kubernetes clusters on their own infrastructure, with the following benefits:
--
-Proven setup process, lowers risk of problems while setting up the cluster
--
-Reduction of provisioning time to minutes
--
-Repeatable process, relevant especially for large, multi-tenant environments
+- Proven setup process, lowers risk of problems while setting up the cluster
+- Reduction of provisioning time to minutes
+- Repeatable process, relevant especially for large, multi-tenant environments
Cloud Load Control delivers these benefits for a range of platforms, starting from selected OpenStack distributions in the first versions of Cloud Load Control, and successively adding more platforms depending on customer demand. We are especially excited about the option to remove the virtualization layer and support Kubernetes bare-metal on Fujitsu servers in the long run. By removing a layer of complexity, the total cost to run the system would be decreased and the missing hypervisor would increase performance.
@@ -53,10 +44,8 @@ Right now we are in the process of contributing a generic provider to set up Kub
Reducing operation costs is the target of any organization providing IT infrastructure. This can be achieved by increasing the efficiency of operations and helping operators to get their job done. Considering large-scale container infrastructures, we found it is important to differentiate between two types of operations:
--
-Platform-oriented, relates to the overall infrastructure, often including various systems, one of which might be Kubernetes.
--
-Application-oriented, focusses rather on a single, or a small set of applications deployed on Kubernetes.
+- Platform-oriented, relates to the overall infrastructure, often including various systems, one of which might be Kubernetes.
+- Application-oriented, focusses rather on a single, or a small set of applications deployed on Kubernetes.
Kubernetes is already great for the application-oriented part. Cloud Load Control was created to help platform-oriented operators to efficiently manage Kubernetes as part of the overall infrastructure and make it easy to execute Kubernetes tasks relevant to them.
diff --git a/content/en/blog/_posts/2016-03-00-State-Of-Container-World-February-2016.md b/content/en/blog/_posts/2016-03-00-State-Of-Container-World-February-2016.md
index 27f84d3e7b..025c311606 100644
--- a/content/en/blog/_posts/2016-03-00-State-Of-Container-World-February-2016.md
+++ b/content/en/blog/_posts/2016-03-00-State-Of-Container-World-February-2016.md
@@ -11,15 +11,12 @@ Hello, and welcome to the second installment of the Kubernetes state of the cont
In January, 71% of respondents were currently using containers, in February, 89% of respondents were currently using containers. The percentage of users not even considering containers also shrank from 4% in January to a surprising 0% in February. Will see if that holds consistent in March.Likewise, the usage of containers continued to march across the dev/canary/prod lifecycle. In all parts of the lifecycle, container usage increased:
--
-Development: 80% -\> 88%
--
-Test: 67% -\> 72%
--
-Pre production: 41% -\> 55%
--
-Production: 50% -\> 62%
-What is striking in this is that pre-production growth continued, even as workloads were clearly transitioned into true production. Likewise the share of people considering containers for production rose from 78% in January to 82% in February. Again we’ll see if the trend continues into March.
+- Development: 80% -\> 88%
+- Test: 67% -\> 72%
+- Pre production: 41% -\> 55%
+- Production: 50% -\> 62%
+
+What is striking in this is that pre-production growth continued, even as workloads were clearly transitioned into true production. Likewise the share of people considering containers for production rose from 78% in January to 82% in February. Again we’ll see if the trend continues into March.
## Container and cluster sizes
diff --git a/content/en/blog/_posts/2016-12-00-Container-Runtime-Interface-Cri-In-Kubernetes.md b/content/en/blog/_posts/2016-12-00-Container-Runtime-Interface-Cri-In-Kubernetes.md
index 061a39c196..721b217c47 100644
--- a/content/en/blog/_posts/2016-12-00-Container-Runtime-Interface-Cri-In-Kubernetes.md
+++ b/content/en/blog/_posts/2016-12-00-Container-Runtime-Interface-Cri-In-Kubernetes.md
@@ -215,14 +215,10 @@ CRI is being actively developed and maintained by the Kubernetes [SIG-Node](http
--
-Post issues or feature requests on [GitHub](https://github.com/kubernetes/kubernetes)
--
-Join the #sig-node channel on [Slack](https://kubernetes.slack.com/)
--
-Subscribe to the [SIG-Node mailing list](mailto:kubernetes-sig-node@googlegroups.com)
--
-Follow us on Twitter [@Kubernetesio](https://twitter.com/kubernetesio) for latest updates
+- Post issues or feature requests on [GitHub](https://github.com/kubernetes/kubernetes)
+- Join the #sig-node channel on [Slack](https://kubernetes.slack.com/)
+- Subscribe to the [SIG-Node mailing list](mailto:kubernetes-sig-node@googlegroups.com)
+- Follow us on Twitter [@Kubernetesio](https://twitter.com/kubernetesio) for latest updates
diff --git a/content/en/blog/_posts/2016-12-00-Five-Days-Of-Kubernetes-1-5.md b/content/en/blog/_posts/2016-12-00-Five-Days-Of-Kubernetes-1-5.md
index 14eae43fc6..fa30aba5f7 100644
--- a/content/en/blog/_posts/2016-12-00-Five-Days-Of-Kubernetes-1-5.md
+++ b/content/en/blog/_posts/2016-12-00-Five-Days-Of-Kubernetes-1-5.md
@@ -21,13 +21,8 @@ This progress is our commitment in continuing to make Kubernetes best way to man
Connect
--
-[Download](http://get.k8s.io/) Kubernetes
--
-Get involved with the Kubernetes project on [GitHub](https://github.com/kubernetes/kubernetes)
--
-Post questions (or answer questions) on [Stack Overflow](http://stackoverflow.com/questions/tagged/kubernetes)
--
-Connect with the community on [Slack](http://slack.k8s.io/)
--
-Follow us on Twitter [@Kubernetesio](https://twitter.com/kubernetesio) for latest updates
+- [Download](http://get.k8s.io/) Kubernetes
+- Get involved with the Kubernetes project on [GitHub](https://github.com/kubernetes/kubernetes)
+- Post questions (or answer questions) on [Stack Overflow](http://stackoverflow.com/questions/tagged/kubernetes)
+- Connect with the community on [Slack](http://slack.k8s.io/)
+- Follow us on Twitter [@Kubernetesio](https://twitter.com/kubernetesio) for latest updates
diff --git a/content/en/blog/_posts/2016-12-00-Windows-Server-Support-Kubernetes.md b/content/en/blog/_posts/2016-12-00-Windows-Server-Support-Kubernetes.md
index 7f58071940..ba87948d3c 100644
--- a/content/en/blog/_posts/2016-12-00-Windows-Server-Support-Kubernetes.md
+++ b/content/en/blog/_posts/2016-12-00-Windows-Server-Support-Kubernetes.md
@@ -36,12 +36,11 @@ Most of the Kubernetes constructs, such as Pods, Services, Labels, etc. work wit
|
What doesn’t work yet?
|
--
-Pod abstraction is not same due to networking namespaces. Net result is that Windows containers in a single POD cannot communicate over localhost. Linux containers can share networking stack by placing them in the same network namespace.
--
-DNS capabilities are not fully implemented
--
-UDP is not supported inside a container
+
+- Pod abstraction is not same due to networking namespaces. Net result is that Windows containers in a single POD cannot communicate over localhost. Linux containers can share networking stack by placing them in the same network namespace.
+- DNS capabilities are not fully implemented
+- UDP is not supported inside a container
+
|
|
When will it be ready for all production workloads (general availability)?
diff --git a/content/en/blog/_posts/2017-05-00-Kubernetes-Monitoring-Guide.md b/content/en/blog/_posts/2017-05-00-Kubernetes-Monitoring-Guide.md
index 87a26f14b4..c5f1147072 100644
--- a/content/en/blog/_posts/2017-05-00-Kubernetes-Monitoring-Guide.md
+++ b/content/en/blog/_posts/2017-05-00-Kubernetes-Monitoring-Guide.md
@@ -78,11 +78,7 @@ _--Jean-Mathieu Saponaro, Research & Analytics Engineer, Datadog_
--
-Get involved with the Kubernetes project on [GitHub](https://github.com/kubernetes/kubernetes)
--
-Post questions (or answer questions) on [Stack Overflow](http://stackoverflow.com/questions/tagged/kubernetes)
--
-Connect with the community on [Slack](http://slack.k8s.io/)
--
-Follow us on Twitter [@Kubernetesio](https://twitter.com/kubernetesio) for latest updates
+- Get involved with the Kubernetes project on [GitHub](https://github.com/kubernetes/kubernetes)
+- Post questions (or answer questions) on [Stack Overflow](http://stackoverflow.com/questions/tagged/kubernetes)
+- Connect with the community on [Slack](http://slack.k8s.io/)
+- Follow us on Twitter [@Kubernetesio](https://twitter.com/kubernetesio) for latest updates
diff --git a/content/en/blog/_posts/2017-05-00-Kubespray-Ansible-Collaborative-Kubernetes-Ops.md b/content/en/blog/_posts/2017-05-00-Kubespray-Ansible-Collaborative-Kubernetes-Ops.md
index 8c63574864..c6e4007d9a 100644
--- a/content/en/blog/_posts/2017-05-00-Kubespray-Ansible-Collaborative-Kubernetes-Ops.md
+++ b/content/en/blog/_posts/2017-05-00-Kubespray-Ansible-Collaborative-Kubernetes-Ops.md
@@ -113,11 +113,7 @@ _-- Rob Hirschfeld, co-founder of RackN and co-chair of the Cluster Ops SIG_
--
-Get involved with the Kubernetes project on [GitHub](https://github.com/kubernetes/kubernetes)
--
-Post questions (or answer questions) on [Stack Overflow](http://stackoverflow.com/questions/tagged/kubernetes)
--
-Connect with the community on [Slack](http://slack.k8s.io/)
--
-Follow us on Twitter [@Kubernetesio](https://twitter.com/kubernetesio) for latest updates
+- Get involved with the Kubernetes project on [GitHub](https://github.com/kubernetes/kubernetes)
+- Post questions (or answer questions) on [Stack Overflow](http://stackoverflow.com/questions/tagged/kubernetes)
+- Connect with the community on [Slack](http://slack.k8s.io/)
+- Follow us on Twitter [@Kubernetesio](https://twitter.com/kubernetesio) for latest updates
diff --git a/content/en/blog/_posts/2017-07-00-Happy-Second-Birthday-Kubernetes.md b/content/en/blog/_posts/2017-07-00-Happy-Second-Birthday-Kubernetes.md
index 774bbffad7..7f3c6ebee9 100644
--- a/content/en/blog/_posts/2017-07-00-Happy-Second-Birthday-Kubernetes.md
+++ b/content/en/blog/_posts/2017-07-00-Happy-Second-Birthday-Kubernetes.md
@@ -26,87 +26,69 @@ Kubernetes has also earned the trust of many [Fortune 500 companies](https://kub
July 2016
--
-Kubernauts celebrated its [first anniversary](https://kubernetes.io/blog/2016/07/happy-k8sbday-1) of the Kubernetes 1.0 launch with 20 [#k8sbday](https://twitter.com/search?q=k8sbday&src=typd) parties hosted worldwide
--
-Kubernetes [v1.3 release](https://kubernetes.io/blog/2016/07/kubernetes-1-3-bridging-cloud-native-and-enterprise-workloads/)
+- Kubernauts celebrated its [first anniversary](https://kubernetes.io/blog/2016/07/happy-k8sbday-1) of the Kubernetes 1.0 launch with 20 [#k8sbday](https://twitter.com/search?q=k8sbday&src=typd) parties hosted worldwide
+- Kubernetes [v1.3 release](https://kubernetes.io/blog/2016/07/kubernetes-1-3-bridging-cloud-native-and-enterprise-workloads/)
September 2016
--
-Kubernetes [v1.4 release](https://kubernetes.io/blog/2016/09/kubernetes-1-4-making-it-easy-to-run-on-kuberentes-anywhere/)
--
-Launch of [kubeadm](https://kubernetes.io/blog/2016/09/how-we-made-kubernetes-easy-to-install), a tool that makes Kubernetes dramatically easier to install
--
-[Pokemon Go](https://www.sdxcentral.com/articles/news/google-dealt-pokemon-go-traffic-50-times-beyond-expectations/2016/09/) - one of the largest installs of Kubernetes ever
+- Kubernetes [v1.4 release](https://kubernetes.io/blog/2016/09/kubernetes-1-4-making-it-easy-to-run-on-kuberentes-anywhere/)
+- Launch of [kubeadm](https://kubernetes.io/blog/2016/09/how-we-made-kubernetes-easy-to-install), a tool that makes Kubernetes dramatically easier to install
+- [Pokemon Go](https://www.sdxcentral.com/articles/news/google-dealt-pokemon-go-traffic-50-times-beyond-expectations/2016/09/) - one of the largest installs of Kubernetes ever
October 2016
--
-Introduced [Kubernetes service partners program](https://kubernetes.io/blog/2016/10/kubernetes-service-technology-partners-program) and a redesigned [partners page](https://kubernetes.io/partners/)
+- Introduced [Kubernetes service partners program](https://kubernetes.io/blog/2016/10/kubernetes-service-technology-partners-program) and a redesigned [partners page](https://kubernetes.io/partners/)
November 2016
--
-CloudNativeCon/KubeCon [Seattle](https://www.cncf.io/blog/2016/11/17/cloudnativeconkubecon-2016-wrap/)
--
-Cloud Native Computing Foundation partners with The Linux Foundation to launch a [new Kubernetes certification, training and managed service provider program](https://www.cncf.io/blog/2016/11/08/cncf-partners-linux-foundation-launch-new-kubernetes-certification-training-managed-service-provider-program/)
+- CloudNativeCon/KubeCon [Seattle](https://www.cncf.io/blog/2016/11/17/cloudnativeconkubecon-2016-wrap/)
+- Cloud Native Computing Foundation partners with The Linux Foundation to launch a [new Kubernetes certification, training and managed service provider program](https://www.cncf.io/blog/2016/11/08/cncf-partners-linux-foundation-launch-new-kubernetes-certification-training-managed-service-provider-program/)
December 2016
--
-Kubernetes [v1.5 release](https://kubernetes.io/blog/2016/12/kubernetes-1-5-supporting-production-workloads/)
+- Kubernetes [v1.5 release](https://kubernetes.io/blog/2016/12/kubernetes-1-5-supporting-production-workloads/)
January 2017
--
-[Survey](https://www.cncf.io/blog/2017/01/17/container-management-trends-kubernetes-moves-testing-production/) from CloudNativeCon + KubeCon Seattle showcases the maturation of Kubernetes deployment
+- [Survey](https://www.cncf.io/blog/2017/01/17/container-management-trends-kubernetes-moves-testing-production/) from CloudNativeCon + KubeCon Seattle showcases the maturation of Kubernetes deployment
March 2017
--
-CloudNativeCon/KubeCon [Europe](https://www.cncf.io/blog/2017/04/17/highlights-cloudnativecon-kubecon-europe-2017/)
--
-Kubernetes[v1.6 release](https://kubernetes.io/blog/2017/03/kubernetes-1-6-multi-user-multi-workloads-at-scale)
+- CloudNativeCon/KubeCon [Europe](https://www.cncf.io/blog/2017/04/17/highlights-cloudnativecon-kubecon-europe-2017/)
+- Kubernetes[v1.6 release](https://kubernetes.io/blog/2017/03/kubernetes-1-6-multi-user-multi-workloads-at-scale)
April 2017
--
-The [Battery Open Source Software (BOSS) Index](https://www.battery.com/powered/boss-index-tracking-explosive-growth-open-source-software/) lists Kubernetes as #33 in the top 100 popular open-source software projects
+- The [Battery Open Source Software (BOSS) Index](https://www.battery.com/powered/boss-index-tracking-explosive-growth-open-source-software/) lists Kubernetes as #33 in the top 100 popular open-source software projects
May 2017
--
-[Four Kubernetes projects](https://www.cncf.io/blog/2017/05/04/cncf-brings-kubernetes-coredns-opentracing-prometheus-google-summer-code-2017/) accepted to The [Google Summer of Code](https://developers.google.com/open-source/gsoc/) (GSOC) 2017 program
--
-Stutterstock and Kubernetes appear in [The Wall Street Journal](https://blogs.wsj.com/cio/2017/05/26/shutterstock-ceo-says-new-business-plan-hinged-upon-total-overhaul-of-it/): “On average we [Shutterstock] deploy 45 different releases into production a day using that framework. We use Docker, Kubernetes and Jenkins [to build and run containers and automate development,” said CTO Marty Brodbeck on the company’s IT overhaul and adoption of containerization.
+- [Four Kubernetes projects](https://www.cncf.io/blog/2017/05/04/cncf-brings-kubernetes-coredns-opentracing-prometheus-google-summer-code-2017/) accepted to The [Google Summer of Code](https://developers.google.com/open-source/gsoc/) (GSOC) 2017 program
+- Stutterstock and Kubernetes appear in [The Wall Street Journal](https://blogs.wsj.com/cio/2017/05/26/shutterstock-ceo-says-new-business-plan-hinged-upon-total-overhaul-of-it/): “On average we [Shutterstock] deploy 45 different releases into production a day using that framework. We use Docker, Kubernetes and Jenkins [to build and run containers and automate development,” said CTO Marty Brodbeck on the company’s IT overhaul and adoption of containerization.
June 2017
--
-Kubernetes [v1.7 release](https://kubernetes.io/blog/2017/06/kubernetes-1-7-security-hardening-stateful-application-extensibility-updates)
--
-[Survey](https://www.cncf.io/blog/2017/06/28/survey-shows-kubernetes-leading-orchestration-platform/) from CloudNativeCon + KubeCon Europe shows Kubernetes leading as the orchestration platform of choice
--
-Kubernetes ranked [#4](https://github.com/cncf/velocity) in the [30 highest velocity open source projects](https://www.cncf.io/blog/2017/06/05/30-highest-velocity-open-source-projects/)
+- Kubernetes [v1.7 release](https://kubernetes.io/blog/2017/06/kubernetes-1-7-security-hardening-stateful-application-extensibility-updates)
+- [Survey](https://www.cncf.io/blog/2017/06/28/survey-shows-kubernetes-leading-orchestration-platform/) from CloudNativeCon + KubeCon Europe shows Kubernetes leading as the orchestration platform of choice
+- Kubernetes ranked [#4](https://github.com/cncf/velocity) in the [30 highest velocity open source projects](https://www.cncf.io/blog/2017/06/05/30-highest-velocity-open-source-projects/)

@@ -116,8 +98,7 @@ Figure 2: The 30 highest velocity open source projects. Source: [https://github.
July 2017
--
-Kubernauts celebrate the second anniversary of the Kubernetes 1.0 launch with [#k8sbday](https://twitter.com/search?q=k8sbday&src=typd) parties worldwide!
+- Kubernauts celebrate the second anniversary of the Kubernetes 1.0 launch with [#k8sbday](https://twitter.com/search?q=k8sbday&src=typd) parties worldwide!
diff --git a/content/en/blog/_posts/2017-07-00-How-Watson-Health-Cloud-Deploys.md b/content/en/blog/_posts/2017-07-00-How-Watson-Health-Cloud-Deploys.md
index de516c17a8..b931ec336a 100644
--- a/content/en/blog/_posts/2017-07-00-How-Watson-Health-Cloud-Deploys.md
+++ b/content/en/blog/_posts/2017-07-00-How-Watson-Health-Cloud-Deploys.md
@@ -92,14 +92,10 @@ Usage of UCD in the Process Flow:
UCD is used for deployment and the end-to end deployment process is automated here. UCD component process involves the following steps:
--
-Download the required artifacts for deployment from the Gitlab.
--
-Login to Bluemix and set the KUBECONFIG based on the Kubernetes cluster used for creating the pods.
--
-Create the application pod in the cluster using kubectl create command.
--
-If needed, run a rolling update to update the existing pod.
+- Download the required artifacts for deployment from the Gitlab.
+- Login to Bluemix and set the KUBECONFIG based on the Kubernetes cluster used for creating the pods.
+- Create the application pod in the cluster using kubectl create command.
+- If needed, run a rolling update to update the existing pod.
@@ -150,13 +146,8 @@ To expose our services to outside the cluster, we used Ingress. In IBM Cloud Kub
--
-Post questions (or answer questions) on [Stack Overflow](http://stackoverflow.com/questions/tagged/kubernetes)
--
-Join the community portal for advocates on [K8sPort](http://k8sport.org/)
--
-Follow us on Twitter [@Kubernetesio](https://twitter.com/kubernetesio) for latest updates
--
-Connect with the community on [Slack](http://slack.k8s.io/)
--
-Get involved with the Kubernetes project on [GitHub](https://github.com/kubernetes/kubernetes)
+- Post questions (or answer questions) on [Stack Overflow](http://stackoverflow.com/questions/tagged/kubernetes)
+- Join the community portal for advocates on [K8sPort](http://k8sport.org/)
+- Follow us on Twitter [@Kubernetesio](https://twitter.com/kubernetesio) for latest updates
+- Connect with the community on [Slack](http://slack.k8s.io/)
+- Get involved with the Kubernetes project on [GitHub](https://github.com/kubernetes/kubernetes)
diff --git a/content/en/blog/_posts/2017-08-00-Kompose-Helps-Developers-Move-Docker.md b/content/en/blog/_posts/2017-08-00-Kompose-Helps-Developers-Move-Docker.md
index b266497707..b94ac8b693 100644
--- a/content/en/blog/_posts/2017-08-00-Kompose-Helps-Developers-Move-Docker.md
+++ b/content/en/blog/_posts/2017-08-00-Kompose-Helps-Developers-Move-Docker.md
@@ -129,14 +129,10 @@ With our graduation, comes the release of Kompose 1.0.0, here’s what’s new:
--
-Docker Compose Version 3: Kompose now supports Docker Compose Version 3. New keys such as ‘deploy’ now convert to their Kubernetes equivalent.
--
-Docker Push and Build Support: When you supply a ‘build’ key within your `docker-compose.yaml` file, Kompose will automatically build and push the image to the respective Docker repository for Kubernetes to consume.
--
-New Keys: With the addition of version 3 support, new keys such as pid and deploy are supported. For full details on what Kompose supports, view our [conversion document](http://kompose.io/conversion/).
--
-Bug Fixes: In every release we fix any bugs related to edge-cases when converting. This release fixes issues relating to converting volumes with ‘./’ in the target name.
+- Docker Compose Version 3: Kompose now supports Docker Compose Version 3. New keys such as ‘deploy’ now convert to their Kubernetes equivalent.
+- Docker Push and Build Support: When you supply a ‘build’ key within your `docker-compose.yaml` file, Kompose will automatically build and push the image to the respective Docker repository for Kubernetes to consume.
+- New Keys: With the addition of version 3 support, new keys such as pid and deploy are supported. For full details on what Kompose supports, view our [conversion document](http://kompose.io/conversion/).
+- Bug Fixes: In every release we fix any bugs related to edge-cases when converting. This release fixes issues relating to converting volumes with ‘./’ in the target name.
@@ -145,28 +141,18 @@ What’s ahead?
As we continue development, we will strive to convert as many Docker Compose keys as possible for all future and current Docker Compose releases, converting each one to their Kubernetes equivalent. All future releases will be backwards-compatible.
--
-[Install Kompose](https://github.com/kubernetes/kompose/blob/master/docs/installation.md)
--
-[Kompose Quick Start Guide](https://github.com/kubernetes/kompose/blob/master/docs/installation.md)
--
-[Kompose Web Site](http://kompose.io/)
--
-[Kompose Documentation](https://github.com/kubernetes/kompose/tree/master/docs)
+- [Install Kompose](https://github.com/kubernetes/kompose/blob/master/docs/installation.md)
+- [Kompose Quick Start Guide](https://github.com/kubernetes/kompose/blob/master/docs/installation.md)
+- [Kompose Web Site](http://kompose.io/)
+- [Kompose Documentation](https://github.com/kubernetes/kompose/tree/master/docs)
--Charlie Drage, Software Engineer, Red Hat
--
-Post questions (or answer questions) on[Stack Overflow](http://stackoverflow.com/questions/tagged/kubernetes)
--
-Join the community portal for advocates on[K8sPort](http://k8sport.org/)
--
-Follow us on Twitter[@Kubernetesio](https://twitter.com/kubernetesio) for latest updates
--
-Connect with the community on[Slack](http://slack.k8s.io/)
--
-Get involved with the Kubernetes project on[GitHub](https://github.com/kubernetes/kubernetes)
--
+- Post questions (or answer questions) on[Stack Overflow](http://stackoverflow.com/questions/tagged/kubernetes)
+- Join the community portal for advocates on[K8sPort](http://k8sport.org/)
+- Follow us on Twitter[@Kubernetesio](https://twitter.com/kubernetesio) for latest updates
+- Connect with the community on[Slack](http://slack.k8s.io/)
+- Get involved with the Kubernetes project on[GitHub](https://github.com/kubernetes/kubernetes)
diff --git a/content/en/blog/_posts/2017-09-00-Kubernetes-Statefulsets-Daemonsets.md b/content/en/blog/_posts/2017-09-00-Kubernetes-Statefulsets-Daemonsets.md
index fe156e00df..67f3e084cc 100644
--- a/content/en/blog/_posts/2017-09-00-Kubernetes-Statefulsets-Daemonsets.md
+++ b/content/en/blog/_posts/2017-09-00-Kubernetes-Statefulsets-Daemonsets.md
@@ -987,13 +987,8 @@ Rolling updates and roll backs close an important feature gap for DaemonSets and
--
-Post questions (or answer questions) on [Stack Overflow](http://stackoverflow.com/questions/tagged/kubernetes)
--
-Join the community portal for advocates on [K8sPort](http://k8sport.org/)
--
-Follow us on Twitter [@Kubernetesio](https://twitter.com/kubernetesio) for latest updates
--
-Connect with the community on [Slack](http://slack.k8s.io/)
--
-Get involved with the Kubernetes project on [GitHub](https://github.com/kubernetes/kubernetes)
+- Post questions (or answer questions) on [Stack Overflow](http://stackoverflow.com/questions/tagged/kubernetes)
+- Join the community portal for advocates on [K8sPort](http://k8sport.org/)
+- Follow us on Twitter [@Kubernetesio](https://twitter.com/kubernetesio) for latest updates
+- Connect with the community on [Slack](http://slack.k8s.io/)
+- Get involved with the Kubernetes project on [GitHub](https://github.com/kubernetes/kubernetes)
diff --git a/content/en/blog/_posts/2020-07-27-kubernetes-1-17-release-interview.md b/content/en/blog/_posts/2020-07-27-kubernetes-1-17-release-interview.md
new file mode 100644
index 0000000000..c61def44be
--- /dev/null
+++ b/content/en/blog/_posts/2020-07-27-kubernetes-1-17-release-interview.md
@@ -0,0 +1,219 @@
+---
+layout: blog
+title: "Music and math: the Kubernetes 1.17 release interview"
+date: 2020-07-27
+---
+
+**Author**: Adam Glick (Google)
+
+Every time the Kubernetes release train stops at the station, we like to ask the release lead to take a moment to reflect on their experience. That takes the form of an interview on the weekly [Kubernetes Podcast from Google](https://kubernetespodcast.com/) that I co-host with [Craig Box](https://twitter.com/craigbox). If you're not familiar with the show, every week we summarise the new in the Cloud Native ecosystem, and have an insightful discussion with an interesting guest from the broader Kubernetes community.
+
+At the time of the 1.17 release in December, we [talked to release team lead Guinevere Saenger](https://kubernetespodcast.com/episode/083-kubernetes-1.17/). We have [shared](https://kubernetes.io/blog/2018/07/16/how-the-sausage-is-made-the-kubernetes-1.11-release-interview-from-the-kubernetes-podcast/) [the](https://kubernetes.io/blog/2019/05/13/cat-shirts-and-groundhog-day-the-kubernetes-1.14-release-interview/) [transcripts](https://kubernetes.io/blog/2019/12/06/when-youre-in-the-release-team-youre-family-the-kubernetes-1.16-release-interview/) of previous interviews on the Kubernetes blog, and we're very happy to share another today.
+
+Next week we will bring you up to date with the story of Kubernetes 1.18, as we gear up for the release of 1.19 next month. [Subscribe to the show](https://kubernetespodcast.com/subscribe/) wherever you get your podcasts to make sure you don't miss that chat!
+
+---
+
+**ADAM GLICK: You have a nontraditional background for someone who works as a software engineer. Can you explain that background?**
+
+GUINEVERE SAENGER: My first career was as a [collaborative pianist](https://en.wikipedia.org/wiki/Collaborative_piano), which is an academic way of saying "piano accompanist". I was a classically trained pianist who spends most of her time onstage, accompanying other people and making them sound great.
+
+**ADAM GLICK: Is that the piano equivalent of pair-programming?**
+
+GUINEVERE SAENGER: No one has said it to me like that before, but all sorts of things are starting to make sense in my head right now. I think that's a really great way of putting it.
+
+**ADAM GLICK: That's a really interesting background, as someone who also has a background with music. What made you decide to get into software development?**
+
+GUINEVERE SAENGER: I found myself in a life situation where I needed more stable source of income, and teaching music, and performing for various gig opportunities, was really just not cutting it anymore. And I found myself to be working really, really hard with not much to show for it. I had a lot of friends who were software engineers. I live in Seattle. That's sort of a thing that happens to you when you live in Seattle — you get to know a bunch of software engineers, one way or the other.
+
+The ones I met were all lovely people, and they said, hey, I'm happy to show you how to program in Python. And so I did that for a bit, and then I heard about this program called [Ada Developers Academy](https://adadevelopersacademy.org/). That's a year long coding school, targeted at women and non-binary folks that are looking for a second career in tech. And so I applied for that.
+
+**CRAIG BOX: What can you tell us about that program?**
+
+GUINEVERE SAENGER: It's incredibly selective, for starters. It's really popular in Seattle and has gotten quite a good reputation. It took me three tries to get in. They do two classes a year, and so it was a while before I got my response saying 'congratulations, we are happy to welcome you into Cohort 6'. I think what sets Ada Developers Academy apart from other bootcamp style coding programs are three things, I think? The main important one is that if you get in, you pay no tuition. The entire program is funded by company sponsors.
+
+**CRAIG BOX: Right.**
+
+GUINEVERE SAENGER: The other thing that really convinced me is that five months of the 11-month program are an industry internship, which means you get both practical experience, mentorship, and potential job leads at the end of it.
+
+**CRAIG BOX: So very much like a condensed version of the University of Waterloo degree, where you do co-op terms.**
+
+GUINEVERE SAENGER: Interesting. I didn't know about that.
+
+**CRAIG BOX: Having lived in Waterloo for a while, I knew a lot of people who did that. But what would you say the advantages were of going through such a condensed schooling process in computer science?**
+
+GUINEVERE SAENGER: I'm not sure that the condensed process is necessarily an advantage. I think it's a necessity, though. People have to quit their jobs to go do this program. It's not an evening school type of thing.
+
+**CRAIG BOX: Right.**
+
+GUINEVERE SAENGER: And your internship is basically a full-time job when you do it. One thing that Ada was really, really good at is giving us practical experience that directly relates to the workplace. We learned how to use Git. We learned how to design websites using [Rails](https://rubyonrails.org/). And we also learned how to collaborate, how to pair-program. We had a weekly retrospective, so we sort of got a soft introduction to workflows at a real workplace. Adding to that, the internship, and I think the overall experience is a little bit more 'practical workplace oriented' and a little bit less academic.
+
+When you're done with it, you don't have to relearn how to be an adult in a working relationship with other people. You come with a set of previous skills. There are Ada graduates who have previously been campaign lawyers, and veterinarians, and nannies, cooks, all sorts of people. And it turns out these skills tend to translate, and they tend to matter.
+
+**ADAM GLICK: With your background in music, what do you think that that allows you to bring to software development that could be missing from, say, standard software development training that people go through?**
+
+GUINEVERE SAENGER: People tend to really connect the dots when I tell them I used to be a musician. Of course, I still consider myself a musician, because you don't really ever stop being a musician. But they say, 'oh, yeah, music and math', and that's just a similar sort of brain. And that makes so much sense. And I think there's a little bit of a point to that. When you learn a piece of music, you have to start recognizing patterns incredibly quickly, almost intuitively.
+
+And I think that is the main skill that translates into programming— recognizing patterns, finding the things that work, finding the things that don't work. And for me, especially as a collaborative pianist, it's the communicating with people, the finding out what people really want, where something is going, how to figure out what the general direction is that we want to take, before we start writing the first line of code.
+
+**CRAIG BOX: In your experience at Ada or with other experiences you've had, have you been able to identify patterns in other backgrounds for people that you'd recommend, 'hey, you're good at music, so therefore you might want to consider doing something like a course in computer science'?**
+
+GUINEVERE SAENGER: Overall, I think ultimately writing code is just giving a set of instructions to a computer. And we do that in daily life all the time. We give instructions to our kids, we give instructions to our students. We do math, we write textbooks. We give instructions to a room full of people when you're in court as a lawyer.
+
+Actually, the entrance exam to Ada Developers Academy used to have questions from the [LSAT](https://en.wikipedia.org/wiki/Law_School_Admission_Test) on it to see if you were qualified to join the program. They changed that when I applied, but I think that's a thing that happened at one point. So, overall, I think software engineering is a much more varied field than we give it credit for, and that there are so many ways in which you can apply your so-called other skills and bring them under the umbrella of software engineering.
+
+**CRAIG BOX: I do think that programming is effectively half art and half science. There's creativity to be applied. There is perhaps one way to solve a problem most efficiently. But there are many different ways that you can choose to express how you compiled something down to that way.**
+
+GUINEVERE SAENGER: Yeah, I mean, that's definitely true. I think one way that you could probably prove that is that if you write code at work and you're working on something with other people, you can probably tell which one of your co-workers wrote which package, just by the way it's written, or how it is documented, or how it is styled, or any of those things. I really do think that the human character shines through.
+
+**ADAM GLICK: What got you interested in Kubernetes and open source?**
+
+GUINEVERE SAENGER: The honest answer is absolutely nothing. Going back to my programming school— and remember that I had to do a five-month internship as part of my training— the way that the internship works is that sponsor companies for the program get interns in according to how much they sponsored a specific cohort of students.
+
+So at the time, Samsung and SDS offered to host two interns for five months on their [Cloud Native Computing team](https://samsung-cnct.github.io/) and have that be their practical experience. So I go out of a Ruby on Rails full stack web development bootcamp and show up at my internship, and they said, "Welcome to Kubernetes. Try to bring up a cluster." And I said, "Kuber what?"
+
+**CRAIG BOX: We've all said that on occasion.**
+
+**ADAM GLICK: Trial by fire, wow.**
+
+GUINEVERE SAENGER: I will say that that entire team was absolutely wonderful, delightful to work with, incredibly helpful. And I will forever be grateful for all of the help and support that I got in that environment. It was a great place to learn.
+
+**CRAIG BOX: You now work on GitHub's Kubernetes infrastructure. Obviously, there was GitHub before there was a Kubernetes, so a migration happened. What can you tell us about the transition that GitHub made to running on Kubernetes?**
+
+GUINEVERE SAENGER: A disclaimer here— I was not at GitHub at the time that the transition to Kubernetes was made. However, to the best of my knowledge, the decision to transition to Kubernetes was made and people decided, yes, we want to try Kubernetes. We want to use Kubernetes. And mostly, the only decision left was, which one of our applications should we move over to Kubernetes?
+
+**CRAIG BOX: I thought GitHub was written on Rails, so there was only one application.**
+
+GUINEVERE SAENGER: [LAUGHING] We have a lot of supplementary stuff under the covers.
+
+**CRAIG BOX: I'm sure.**
+
+GUINEVERE SAENGER: But yes, GitHub is written in Rails. It is still written in Rails. And most of the supplementary things are currently running on Kubernetes. We have a fair bit of stuff that currently does not run on Kubernetes. Mainly, that is GitHub Enterprise related things. I would know less about that because I am on the platform team that helps people use the Kubernetes infrastructure. But back to your question, leadership at the time decided that it would be a good idea to start with GitHub the Rails website as the first project to move to Kubernetes.
+
+**ADAM GLICK: High stakes!**
+
+GUINEVERE SAENGER: The reason for this was that they decided if they were going to not start big, it really wasn't going to transition ever. It was really not going to happen. So they just decided to go all out, and it was successful, for which I think the lesson would probably be commit early, commit big.
+
+**CRAIG BOX: Are there any other lessons that you would take away or that you've learned kind of from the transition that the company made, and might be applicable to other people who are looking at moving their companies from a traditional infrastructure to a Kubernetes infrastructure?**
+
+GUINEVERE SAENGER: I'm not sure this is a lesson specifically, but I was on support recently, and it turned out that, due to unforeseen circumstances and a mix of human error, a bunch of the namespaces on one of our Kubernetes clusters got deleted.
+
+**ADAM GLICK: Oh, my.**
+
+GUINEVERE SAENGER: It should not have affected any customers, I should mention, at this point. But all in all, it took a few of us a few hours to almost completely recover from this event. I think that, without Kubernetes, this would not have been possible.
+
+**CRAIG BOX: Generally, deleting something like that is quite catastrophic. We've seen a number of other vendors suffer large outages when someone's done something to that effect, which is why we get [#hugops](https://twitter.com/hashtag/hugops) on Twitter all the time.**
+
+GUINEVERE SAENGER: People did send me #hugops, that is a thing that happened. But overall, something like this was an interesting stress test and sort of proved that it wasn't nearly as catastrophic as a worst case scenario.
+
+**CRAIG BOX: GitHub [runs its own data centers](https://githubengineering.com/githubs-metal-cloud/). Kubernetes was largely built for running on the cloud, but a lot of people do choose to run it on their own, bare metal. How do you manage clusters and provisioning of the machinery you run?**
+
+GUINEVERE SAENGER: When I started, my onboarding project was to deprovision an old cluster, make sure all the traffic got moved to somewhere where it would keep running, provision a new cluster, and then move website traffic onto the new cluster. That was a really exciting onboarding project. At the time, we provisioned bare metal machines using Puppet. We still do that to a degree, but I believe the team that now runs our computing resources actually inserts virtual machines as an extra layer between the bare metal and the Kubernetes nodes.
+
+Again, I was not intrinsically part of that decision, but my understanding is that it just makes for a greater reliability and reproducibility across the board. We've had some interesting hardware dependency issues come up, and the virtual machines basically avoid those.
+
+**CRAIG BOX: You've been working with Kubernetes for a couple of years now. How did you get involved in the release process?**
+
+GUINEVERE SAENGER: When I first started in the project, I started at the [special interest group for contributor experience](https://github.com/kubernetes/community/tree/master/sig-contributor-experience#readme), namely because one of my co-workers at the time, Aaron Crickenberger, was a big Kubernetes community person. Still is.
+
+**CRAIG BOX: We've [had him on the show](https://kubernetespodcast.com/episode/046-kubernetes-1.14/) for one of these very release interviews!**
+
+GUINEVERE SAENGER: In fact, this is true! So Aaron and I actually go way back to Samsung SDS. Anyway, Aaron suggested that I should write up a contribution to the Kubernetes project, and I said, me? And he said, yes, of course. You will be [speaking at KubeCon](https://www.youtube.com/watch?v=TkCDUFR6xqw), so you should probably get started with a PR or something. So I tried, and it was really, really hard. And I complained about it [in a public GitHub issue](https://github.com/kubernetes/community/issues/141), and people said, yeah. Yeah, we know it's hard. Do you want to help with that?
+
+And so I started getting really involved with the [process for new contributors to get started](https://github.com/kubernetes/community/tree/master/contributors/guide) and have successes, kind of getting a foothold into a project that's as large and varied as Kubernetes. From there on, I began to talk to people, get to know people. The great thing about the Kubernetes community is that there is so much mentorship to go around.
+
+**ADAM GLICK: Right.**
+
+GUINEVERE SAENGER: There are so many friendly people willing to help. It's really funny when I talk to other people about it. They say, what do you mean, your coworker? And I said, well, he's really a colleague. He really works for another company.
+
+**CRAIG BOX: He's sort-of officially a competitor.**
+
+GUINEVERE SAENGER: Yeah.
+
+**CRAIG BOX: But we're friends.**
+
+GUINEVERE SAENGER: But he totally helped me when I didn't know how to git patch my borked pull request. So that happened. And eventually, somebody just suggested that I start following along in the release process and shadow someone on their release team role. And that, at the time, was Tim Pepper, who was bug triage lead, and I shadowed him for that role.
+
+**CRAIG BOX: Another [podcast guest](https://kubernetespodcast.com/episode/010-kubernetes-1.11/) on the interview train.**
+
+GUINEVERE SAENGER: This is a pattern that probably will make more sense once I explain to you about the shadow process of the release team.
+
+**ADAM GLICK: Well, let's turn to the Kubernetes release and the release process. First up, what's new in this release of 1.17?**
+
+GUINEVERE SAENGER: We have only a very few new things. The one that I'm most excited about is that we have moved [IPv4 and IPv6 dual stack](https://github.com/kubernetes/enhancements/issues/563) support to alpha. That is the most major change, and it has been, I think, a year and a half in coming. So this is the very first cut of that feature, and I'm super excited about that.
+
+**CRAIG BOX: The people who have been promised IPv6 for many, many years and still don't really see it, what will this mean for them?**
+
+**ADAM GLICK: And most importantly, why did we skip IPv5 support?**
+
+GUINEVERE SAENGER: I don't know!
+
+**CRAIG BOX: Please see [the appendix to this podcast](https://softwareengineering.stackexchange.com/questions/185380/ipv4-to-ipv6-where-is-ipv5) for technical explanations.**
+
+GUINEVERE SAENGER: Having a dual stack configuration obviously enables people to have a much more flexible infrastructure and not have to worry so much about making decisions that will become outdated or that may be over-complicated. This basically means that pods can have dual stack addresses, and nodes can have dual stack addresses. And that basically just makes communication a lot easier.
+
+**CRAIG BOX: What about features that didn't make it into the release? We had a conversation with Lachie in the [1.16 interview](https://kubernetespodcast.com/episode/072-kubernetes-1.16/), where he mentioned [sidecar containers](https://github.com/kubernetes/enhancements/blob/master/keps/sig-apps/sidecarcontainers.md). They unfortunately didn't make it into that release. And I see now that they haven't made this one either.**
+
+GUINEVERE SAENGER: They have not, and we are actually currently undergoing an effort of tracking features that flip multiple releases.
+
+As a community, we need everyone's help. There are a lot of features that people want. There is also a lot of cleanup that needs to happen. And we have started talking at previous KubeCons repeatedly about problems with maintainer burnout, reviewer burnout, have a hard time finding reviews for your particular contributions, especially if you are not an entrenched member of the community. And it has become very clear that this is an area where the entire community needs to improve.
+
+So the unfortunate reality is that sometimes life happens, and people are busy. This is an open source project. This is not something that has company mandated OKRs. Particularly during the fourth quarter of the year in North America, but around the world, we have a lot of holidays. It is the end of the year. Kubecon North America happened as well. This makes it often hard to find a reviewer in time or to rally the support that you need for your enhancement proposal. Unfortunately, slipping releases is fairly common and, at this point, expected. We started out with having 42 enhancements and [landed with roughly half of that](https://docs.google.com/spreadsheets/d/1ebKGsYB1TmMnkx86bR2ZDOibm5KWWCs_UjV3Ys71WIs/edit#gid=0).
+
+**CRAIG BOX: I was going to ask about the truncated schedule due to the fourth quarter of the year, where there are holidays in large parts of the world. Do you find that the Q4 release on the whole is smaller than others, if not for the fact that it's some week shorter?**
+
+GUINEVERE SAENGER: Q4 releases are shorter by necessity because we are trying to finish the final release of the year before the end of the year holidays. Often, releases are under pressure of KubeCons, during which finding reviewers or even finding the time to do work can be hard to do, if you are attending. And even if you're not attending, your reviewers might be attending.
+
+It has been brought up last year to make the final release more of a stability release, meaning no new alpha features. In practice, for this release, this is actually quite close to the truth. We have four features graduating to beta and most of our features are graduating to stable. I am hoping to use this as a precedent to change our process to make the final release a stability release from here on out. The timeline fits. The past experience fits this model.
+
+**ADAM GLICK: On top of all of the release work that was going on, there was also KubeCon that happened. And you were involved in the [contributor summit](https://github.com/kubernetes/community/tree/master/events/2019/11-contributor-summit). How was the summit?**
+
+GUINEVERE SAENGER: This was the first contributor summit where we had an organized events team with events organizing leads, and handbooks, and processes. And I have heard from multiple people— this is just word of mouth— that it was their favorite contributor summit ever.
+
+**CRAIG BOX: Was someone allocated to hat production? [Everyone had sailor hats](https://flickr.com/photos/143247548@N03/49093218951/).**
+
+GUINEVERE SAENGER: Yes, the entire event staff had sailor hats with their GitHub handle on them, and it was pretty fantastic. You can probably see me wearing one in some of the pictures from the contributor summit. That literally was something that was pulled out of a box the morning of the contributor summit, and no one had any idea. But at first, I was a little skeptical, but then I put it on and looked at myself in the mirror. And I was like, yes. Yes, this is accurate. We should all wear these.
+
+**ADAM GLICK: Did getting everyone together for the contributor summit help with the release process?**
+
+GUINEVERE SAENGER: It did not. It did quite the opposite, really. Well, that's too strong.
+
+**ADAM GLICK: Is that just a matter of the time taken up?**
+
+GUINEVERE SAENGER: It's just a completely different focus. Honestly, it helped getting to know people face-to-face that I had currently only interacted with on video. But we did have to cancel the release team meeting the day of the contributor summit because there was kind of no sense in having it happen. We moved it to the Tuesday, I believe.
+
+**CRAIG BOX: The role of the release team leader has been described as servant leadership. Do you consider the position proactive or reactive?**
+
+GUINEVERE SAENGER: Honestly, I think that depends on who's the release team lead, right? There are some people who are very watchful and look for trends, trying to detect problems before they happen. I tend to be in that camp, but I also know that sometimes it's not possible to predict things. There will be last minute bugs sometimes, sometimes not. If there is a last minute bug, you have to be ready to be on top of that. So for me, the approach has been I want to make sure that I have my priorities in order and also that I have backups in case I can't be available.
+
+**ADAM GLICK: What was the most interesting part of the release process for you?**
+
+GUINEVERE SAENGER: A release lead has to have served in other roles on the release team prior to being release team lead. To me, it was very interesting to see what other roles were responsible for, ones that I hadn't seen from the inside before, such as docs, CI signal. I had helped out with CI signal for a bit, but I want to give a big shout out to CI signal lead, Alena Varkockova, who was able to communicate effectively and kindly with everyone who was running into broken tests, failing tests. And she was very effective in getting all of our tests up and running.
+
+So that was actually really cool to see. And yeah, just getting to see more of the workings of the team, for me, it was exciting. The other big exciting thing, of course, was to see all the changes that were going in and all the efforts that were being made.
+
+**CRAIG BOX: The release lead for 1.18 has just been announced as [Jorge Alarcon](https://twitter.com/alejandrox135). What are you going to put in the proverbial envelope as advice for him?**
+
+GUINEVERE SAENGER: I would want Jorge to be really on top of making sure that every Special Interest Group that enters a change, that has an enhancement for 1.18, is on top of the timelines and is responsive. Communication tends to be a problem. And I had hinted at this earlier, but some enhancements slipped simply because there wasn't enough reviewer bandwidth.
+
+Greater communication of timelines and just giving people more time and space to be able to get in their changes, or at least, seemingly give them more time and space by sending early warnings, is going to be helpful. Of course, he's going to have a slightly longer release, too, than I did. This might be related to a unique Q4 challenge. Overall, I would encourage him to take more breaks, to rely more on his release shadows, and split out the work in a fashion that allows everyone to have a turn and everyone to have a break as well.
+
+**ADAM GLICK: What would your advice be to someone who is hearing your experience and is inspired to get involved with the Kubernetes release or contributer process?**
+
+GUINEVERE SAENGER: Those are two separate questions. So let me tackle the Kubernetes release question first. Kubernetes [SIG Release](https://github.com/kubernetes/sig-release/#readme) has, in my opinion, a really excellent onboarding program for new members. We have what is called the [Release Team Shadow Program](https://github.com/kubernetes/sig-release/blob/master/release-team/shadows.md). We also have the Release Engineering Shadow Program, or the Release Management Shadow Program. Those are two separate subprojects within SIG Release. And each subproject has a team of roles, and each role can have two to four shadows that are basically people who are part of that role team, and they are learning that role as they are doing it.
+
+So for example, if I am the lead for bug triage on the release team, I may have two, three or four people that I closely work with on the bug triage tasks. These people are my shadows. And once they have served one release cycle as a shadow, they are now eligible to be lead in that role. We have an application form for this process, and it should probably be going up in January. It usually happens the first week of the release once all the release leads are put together.
+
+**CRAIG BOX: Do you think being a member of the release team is something that is a good first contribution to the Kubernetes project overall?**
+
+GUINEVERE SAENGER: It depends on what your goals are, right? I believe so. I believe, for me, personally, it has been incredibly helpful looking into corners of the project that I don't know very much about at all, like API machinery, storage. It's been really exciting to look over all the areas of code that I normally never touch.
+
+It depends on what you want to get out of it. In general, I think that being a release team shadow is a really, really great on-ramp to being a part of the community because it has a paved path solution to contributing. All you have to do is show up to the meetings, ask questions of your lead, who is required to answer those questions.
+
+And you also do real work. You really help, you really contribute. If you go across the issues and pull requests in the repo, you will see, 'Hi, my name is so-and-so. I am shadowing the CI signal lead for the current release. Can you help me out here?' And that's a valuable contribution, and it introduces people to others. And then people will recognize your name. They'll see a pull request by you, and they're like oh yeah, I know this person. They're legit.
+
+---
+
+_[Guinevere Saenger](https://twitter.com/guincodes) is a software engineer for GitHub and served as the Kubernetes 1.17 release team lead._
+
+_You can find the [Kubernetes Podcast from Google](http://www.kubernetespodcast.com/) at [@KubernetesPod](https://twitter.com/KubernetesPod) on Twitter, and you can [subscribe](https://kubernetespodcast.com/subscribe/) so you never miss an episode._
diff --git a/content/en/case-studies/adform/index.html b/content/en/case-studies/adform/index.html
index e9a8acc7a2..be35a2d837 100644
--- a/content/en/case-studies/adform/index.html
+++ b/content/en/case-studies/adform/index.html
@@ -12,7 +12,7 @@ quote: >
Kubernetes enabled the self-healing and immutable infrastructure. We can do faster releases, so our developers are really happy. They can ship our features faster than before, and that makes our clients happier.
---
-


































+
+- Visit the Netlify page preview for a PR to make sure things look good before approving.
+
+- Participate in the
+ [PR Wrangler rotation schedule](https://github.com/kubernetes/website/wiki/PR-Wranglers)
+ for weekly rotations. SIG Docs expects all approvers to participate in this
+ rotation. See [PR wranglers](/docs/contribute/participate/pr-wranglers/).
+ for more details.
+
+### Becoming an approver
+
+When you meet the
+[requirements](https://github.com/kubernetes/community/blob/master/community-membership.md#approver),
+you can become a SIG Docs approver. Approvers in other SIGs must apply
+separately for approver status in SIG Docs.
+
+To apply:
+
+1. Open a pull request adding yourself to a section of the
+ [OWNERS_ALIASES](https://github.com/kubernetes/website/blob/master/OWNERS)
+ file in the `kubernetes/website` repository.
+
+ {{< note >}}
+ If you aren't sure where to add yourself, add yourself to `sig-docs-en-owners`.
+ {{< /note >}}
+
+2. Assign the PR to one or more current SIG Docs approvers.
+
+If approved, a SIG Docs lead adds you to the appropriate GitHub team. Once added,
+[@k8s-ci-robot](https://github.com/kubernetes/test-infra/tree/master/prow#bots-home)
+assigns and suggests you as a reviewer on new pull requests.
+
+## {{% heading "whatsnext" %}}
+
+- Read about [PR wrangling](/docs/contribute/participate/pr-wranglers/), a role all approvers take on rotation.
diff --git a/content/en/docs/contribute/participate/roles-and-responsibilties.md b/content/en/docs/contribute/participate/roles-and-responsibilties.md
deleted file mode 100644
index f4cca67155..0000000000
--- a/content/en/docs/contribute/participate/roles-and-responsibilties.md
+++ /dev/null
@@ -1,195 +0,0 @@
----
-title: Roles and responsibilities
-content_type: concept
-weight: 10
----
-
-
-
-Anyone can contribute to Kubernetes. As your contributions to SIG Docs grow, you can apply for different levels of membership in the community.
-These roles allow you to take on more responsibility within the community.
-Each role requires more time and commitment. The roles are:
-
-- Anyone: regular contributors to the Kubernetes documentation
-- Members: can assign and triage issues and provide non-binding review on pull requests
-- Reviewers: can lead reviews on documentation pull requests and can vouch for a change's quality
-- Approvers: can lead reviews on documentation and merge changes
-
-
-
-## Anyone
-
-Anyone with a GitHub account can contribute to Kubernetes. SIG Docs welcomes all new contributors!
-
-Anyone can:
-
-- Open an issue in any [Kubernetes](https://github.com/kubernetes/) repository, including [`kubernetes/website`](https://github.com/kubernetes/website)
-- Give non-binding feedback on a pull request
-- Contribute to a localization
-- Suggest improvements on [Slack](http://slack.k8s.io/) or the [SIG docs mailing list](https://groups.google.com/forum/#!forum/kubernetes-sig-docs).
-
-After [signing the CLA](/docs/contribute/new-content/overview/#sign-the-cla), anyone can also:
-
-- Open a pull request to improve existing content, add new content, or write a blog post or case study
-- Create diagrams, graphics assets, and embeddable screencasts and videos
-
-For more information, see [contributing new content](/docs/contribute/new-content/).
-
-## Members
-
-A member is someone who has submitted multiple pull requests to `kubernetes/website`. Members are a part of the [Kubernetes GitHub organization](https://github.com/kubernetes).
-
-Members can:
-
-- Do everything listed under [Anyone](#anyone)
-- Use the `/lgtm` comment to add the LGTM (looks good to me) label to a pull request
-
- {{< note >}}
- Using `/lgtm` triggers automation. If you want to provide non-binding approval, simply commenting "LGTM" works too!
- {{< /note >}}
-- Use the `/hold` comment to block merging for a pull request
-- Use the `/assign` comment to assign a reviewer to a pull request
-- Provide non-binding review on pull requests
-- Use automation to triage and categorize issues
-- Document new features
-
-### Becoming a member
-
-After submitting at least 5 substantial pull requests and meeting the other [requirements](https://github.com/kubernetes/community/blob/master/community-membership.md#member):
-
-1. Find two [reviewers](#reviewers) or [approvers](#approvers) to [sponsor](/docs/contribute/advanced#sponsor-a-new-contributor) your membership.
-
- Ask for sponsorship in the [#sig-docs channel on Slack](https://kubernetes.slack.com) or on the
- [SIG Docs mailing list](https://groups.google.com/forum/#!forum/kubernetes-sig-docs).
-
- {{< note >}}
- Don't send a direct email or Slack direct message to an individual
- SIG Docs member. You must request sponsorship before submitting your application.
- {{< /note >}}
-
-2. Open a GitHub issue in the [`kubernetes/org`](https://github.com/kubernetes/org/) repository. Use the **Organization Membership Request** issue template.
-
-3. Let your sponsors know about the GitHub issue. You can either:
- - Mention their GitHub username in an issue (`@
-
-- Visit the Netlify page preview for a PR to make sure things look good before approving.
-
-- Participate in the [PR Wrangler rotation schedule](https://github.com/kubernetes/website/wiki/PR-Wranglers) for weekly rotations. SIG Docs expects all approvers to participate in this
-rotation. See [PR wranglers](/docs/contribute/participating/pr-wranglers/).
-for more details.
-
-### Becoming an approver
-
-When you meet the [requirements](https://github.com/kubernetes/community/blob/master/community-membership.md#approver), you can become a SIG Docs approver. Approvers in other SIGs must apply separately for approver status in SIG Docs.
-
-To apply:
-
-1. Open a pull request adding yourself to a section of the [OWNERS_ALIASES](https://github.com/kubernetes/website/blob/master/OWNERS) file in the `kubernetes/website` repository.
-
- {{< note >}}
- If you aren't sure where to add yourself, add yourself to `sig-docs-en-owners`.
- {{< /note >}}
-
-2. Assign the PR to one or more current SIG Docs approvers.
-
-If approved, a SIG Docs lead adds you to the appropriate GitHub team. Once added, [@k8s-ci-robot](https://github.com/kubernetes/test-infra/tree/master/prow#bots-home) assigns and suggests you as a reviewer on new pull requests.
-
-## {{% heading "whatsnext" %}}
-
-- Read about [PR wrangling](/docs/contribute/participating/pr-wranglers), a role all approvers take on rotation.
\ No newline at end of file
diff --git a/content/en/docs/contribute/review/for-approvers.md b/content/en/docs/contribute/review/for-approvers.md
index 0cddbcba6a..82a05bdb86 100644
--- a/content/en/docs/contribute/review/for-approvers.md
+++ b/content/en/docs/contribute/review/for-approvers.md
@@ -8,7 +8,9 @@ weight: 20
-SIG Docs [Reviewers](/docs/contribute/participating/#reviewers) and [Approvers](/docs/contribute/participating/#approvers) do a few extra things when reviewing a change.
+SIG Docs [Reviewers](/docs/contribute/participate/#reviewers) and
+[Approvers](/docs/contribute/participate/#approvers) do a few extra things
+when reviewing a change.
Every week a specific docs approver volunteers to triage
and review pull requests. This
@@ -19,9 +21,6 @@ requests (PRs) that are not already under active review.
In addition to the rotation, a bot assigns reviewers and approvers
for the PR based on the owners for the affected files.
-
-
-
## Reviewing a PR
@@ -202,9 +201,9 @@ Sample response to a request for support:
This issue sounds more like a request for support and less
like an issue specifically for docs. I encourage you to bring
your question to the `#kubernetes-users` channel in
-[Kubernetes slack](http://slack.k8s.io/). You can also search
+[Kubernetes slack](https://slack.k8s.io/). You can also search
resources like
-[Stack Overflow](http://stackoverflow.com/questions/tagged/kubernetes)
+[Stack Overflow](https://stackoverflow.com/questions/tagged/kubernetes)
for answers to similar questions.
You can also open issues for Kubernetes functionality in
diff --git a/content/en/docs/contribute/review/reviewing-prs.md b/content/en/docs/contribute/review/reviewing-prs.md
index 3c271aa44f..ff6ef9d709 100644
--- a/content/en/docs/contribute/review/reviewing-prs.md
+++ b/content/en/docs/contribute/review/reviewing-prs.md
@@ -16,10 +16,10 @@ It helps you learn the code base and build trust with other contributors.
Before reviewing, it's a good idea to:
- Read the [content guide](/docs/contribute/style/content-guide/) and
-[style guide](/docs/contribute/style/style-guide/) so you can leave informed comments.
-- Understand the different [roles and responsibilities](/docs/contribute/participating/#roles-and-responsibilities) in the Kubernetes documentation community.
-
-
+ [style guide](/docs/contribute/style/style-guide/) so you can leave informed comments.
+- Understand the different
+ [roles and responsibilities](/docs/contribute/participate/roles-and-responsibilities/)
+ in the Kubernetes documentation community.
diff --git a/content/en/docs/contribute/style/content-guide.md b/content/en/docs/contribute/style/content-guide.md
index 569ca8d72c..0de4a381a3 100644
--- a/content/en/docs/contribute/style/content-guide.md
+++ b/content/en/docs/contribute/style/content-guide.md
@@ -10,9 +10,9 @@ weight: 10
This page contains guidelines for Kubernetes documentation.
If you have questions about what's allowed, join the #sig-docs channel in
-[Kubernetes Slack](http://slack.k8s.io/) and ask!
+[Kubernetes Slack](https://slack.k8s.io/) and ask!
-You can register for Kubernetes Slack at http://slack.k8s.io/.
+You can register for Kubernetes Slack at https://slack.k8s.io/.
For information on creating new content for the Kubernetes
docs, follow the [style guide](/docs/contribute/style/style-guide).
@@ -67,7 +67,7 @@ ask for help in [#sig-docs on Kubernetes Slack](https://kubernetes.slack.com/mes
### More information
-If you have questions about allowed content, join the [Kubernetes Slack](http://slack.k8s.io/) #sig-docs channel and ask!
+If you have questions about allowed content, join the [Kubernetes Slack](https://slack.k8s.io/) #sig-docs channel and ask!
diff --git a/content/en/docs/contribute/style/hugo-shortcodes/index.md b/content/en/docs/contribute/style/hugo-shortcodes/index.md
index e4a6d703ad..ab949be7fc 100644
--- a/content/en/docs/contribute/style/hugo-shortcodes/index.md
+++ b/content/en/docs/contribute/style/hugo-shortcodes/index.md
@@ -232,7 +232,7 @@ Renders to:
{{< tabs name="tab_with_file_include" >}}
{{< tab name="Content File #1" include="example1" />}}
{{< tab name="Content File #2" include="example2" />}}
-{{< tab name="JSON File" include="podtemplate" />}}
+{{< tab name="JSON File" include="podtemplate.json" />}}
{{< /tabs >}}
@@ -242,6 +242,6 @@ Renders to:
* Learn about [Hugo](https://gohugo.io/).
* Learn about [writing a new topic](/docs/contribute/style/write-new-topic/).
* Learn about [page content types](/docs/contribute/style/page-content-types/).
-* Learn about [creating a pull request](/docs/contribute/new-content/new-content/).
+* Learn about [opening a pull request](/docs/contribute/new-content/open-a-pr/).
* Learn about [advanced contributing](/docs/contribute/advanced/).
diff --git a/content/en/docs/contribute/style/page-content-types.md b/content/en/docs/contribute/style/page-content-types.md
index 2a3325d397..5d3b519bc0 100644
--- a/content/en/docs/contribute/style/page-content-types.md
+++ b/content/en/docs/contribute/style/page-content-types.md
@@ -191,7 +191,7 @@ Within each section, write your content. Use the following guidelines:
interested in reading next.
An example of a published tutorial topic is
-[Running a Stateless Application Using a Deployment](/docs/tutorials/stateless-application/run-stateless-application-deployment/).
+[Running a Stateless Application Using a Deployment](/docs/tasks/run-application/run-stateless-application-deployment/).
### Reference
diff --git a/content/en/docs/contribute/style/style-guide.md b/content/en/docs/contribute/style/style-guide.md
index 55aa30d66c..44653708ec 100644
--- a/content/en/docs/contribute/style/style-guide.md
+++ b/content/en/docs/contribute/style/style-guide.md
@@ -22,8 +22,11 @@ discussion.
{{< note >}}
-Kubernetes documentation uses [Blackfriday Markdown Renderer](https://github.com/russross/blackfriday) along with a few [Hugo Shortcodes](/docs/home/contribute/includes/) to support glossary entries, tabs,
-and representing feature state.
+Kubernetes documentation uses
+[Goldmark Markdown Renderer](https://github.com/yuin/goldmark)
+with some adjustments along with a few
+[Hugo Shortcodes](/docs/contribute/style/hugo-shortcodes/) to support
+glossary entries, tabs, and representing feature state.
{{< /note >}}
## Language
@@ -584,12 +587,8 @@ The Federation feature provides ... | The new Federation feature provides ...
{{< /table >}}
-
-
## {{% heading "whatsnext" %}}
-
* Learn about [writing a new topic](/docs/contribute/style/write-new-topic/).
* Learn about [using page templates](/docs/contribute/style/page-content-types/).
-* Learn about [staging your changes](/docs/contribute/stage-documentation-changes/)
* Learn about [creating a pull request](/docs/contribute/new-content/open-a-pr/).
diff --git a/content/en/docs/contribute/style/write-new-topic.md b/content/en/docs/contribute/style/write-new-topic.md
index 3e4f999c08..7cac1aa6b7 100644
--- a/content/en/docs/contribute/style/write-new-topic.md
+++ b/content/en/docs/contribute/style/write-new-topic.md
@@ -11,7 +11,7 @@ This page shows how to create a new topic for the Kubernetes docs.
## {{% heading "prerequisites" %}}
Create a fork of the Kubernetes documentation repository as described in
-[Open a PR](/docs/new-content/open-a-pr/).
+[Open a PR](/docs/contribute/new-content/open-a-pr/).
@@ -160,7 +160,7 @@ submitted to ensure all examples pass the tests.
{{< /note >}}
For an example of a topic that uses this technique, see
-[Running a Single-Instance Stateful Application](/docs/tutorials/stateful-application/run-stateful-application/).
+[Running a Single-Instance Stateful Application](/docs/tasks/run-application/run-single-instance-stateful-application/).
## Adding images to a topic
diff --git a/content/en/docs/reference/access-authn-authz/admission-controllers.md b/content/en/docs/reference/access-authn-authz/admission-controllers.md
index c0747f3d56..7e1f8ced66 100644
--- a/content/en/docs/reference/access-authn-authz/admission-controllers.md
+++ b/content/en/docs/reference/access-authn-authz/admission-controllers.md
@@ -677,9 +677,6 @@ for more information.
This admission controller acts on creation and modification of the pod and determines if it should be admitted
based on the requested security context and the available Pod Security Policies.
-For Kubernetes < 1.6.0, the API Server must enable the extensions/v1beta1/podsecuritypolicy API
-extensions group (`--runtime-config=extensions/v1beta1/podsecuritypolicy=true`).
-
See also [Pod Security Policy documentation](/docs/concepts/policy/pod-security-policy/)
for more information.
diff --git a/content/en/docs/reference/access-authn-authz/authentication.md b/content/en/docs/reference/access-authn-authz/authentication.md
index d196be938d..398f06b671 100644
--- a/content/en/docs/reference/access-authn-authz/authentication.md
+++ b/content/en/docs/reference/access-authn-authz/authentication.md
@@ -26,7 +26,7 @@ even a file with a list of usernames and passwords. In this regard, _Kubernetes
does not have objects which represent normal user accounts._ Normal users
cannot be added to a cluster through an API call.
-Even though normal user cannot be added via an API call, but any user that presents a valid certificate signed by the cluster’s certificate authority (CA) is considered authenticated. In this configuration, Kubernetes determines the username from the common name field in the ‘subject’ of the cert (e.g., “/CN=bob”). From there, the role based access control (RBAC) sub-system would determine whether the user is authorized to perform a specific operation a resource. You can refer to [creating user certificate request](/docs/reference/access-authn-authz/certificate-signing-requests/#user-csr) for more details about this.
+Even though normal user cannot be added via an API call, but any user that presents a valid certificate signed by the cluster’s certificate authority (CA) is considered authenticated. In this configuration, Kubernetes determines the username from the common name field in the ‘subject’ of the cert (e.g., “/CN=bob”). From there, the role based access control (RBAC) sub-system would determine whether the user is authorized to perform a specific operation on a resource. You can refer to [creating user certificate request](/docs/reference/access-authn-authz/certificate-signing-requests/#user-csr) for more details about this.
In contrast, service accounts are users managed by the Kubernetes API. They are
bound to specific namespaces, and created automatically by the API server or
diff --git a/content/en/docs/reference/access-authn-authz/extensible-admission-controllers.md b/content/en/docs/reference/access-authn-authz/extensible-admission-controllers.md
index 1227f750eb..a9db3b00eb 100644
--- a/content/en/docs/reference/access-authn-authz/extensible-admission-controllers.md
+++ b/content/en/docs/reference/access-authn-authz/extensible-admission-controllers.md
@@ -997,7 +997,7 @@ See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels for
### Matching requests: matchPolicy
API servers can make objects available via multiple API groups or versions.
-For example, the Kubernetes API server allows creating and modifying `Deployment` objects
+For example, the Kubernetes API server may allow creating and modifying `Deployment` objects
via `extensions/v1beta1`, `apps/v1beta1`, `apps/v1beta2`, and `apps/v1` APIs.
For example, if a webhook only specified a rule for some API groups/versions (like `apiGroups:["apps"], apiVersions:["v1","v1beta1"]`),
diff --git a/content/en/docs/reference/access-authn-authz/rbac.md b/content/en/docs/reference/access-authn-authz/rbac.md
index 20b1224e59..2be833826c 100644
--- a/content/en/docs/reference/access-authn-authz/rbac.md
+++ b/content/en/docs/reference/access-authn-authz/rbac.md
@@ -606,12 +606,15 @@ either do not manually edit the role, or disable auto-reconciliation.
| Default ClusterRole | Default ClusterRoleBinding | Description | |
|---|---|---|---|
| system:basic-user | system:authenticated group | @@ -627,6 +630,7 @@ either do not manually edit the role, or disable auto-reconciliation.system:authenticated and system:unauthenticated groups | Allows read-only access to non-sensitive information about the cluster. Introduced in Kubernetes v1.14. |
| Default ClusterRole | Default ClusterRoleBinding | Description |
|---|---|---|
| cluster-admin | system:masters group | @@ -691,17 +698,21 @@ the contents of Secrets enables access to ServiceAccount credentials in the namespace, which would allow API access as any ServiceAccount in the namespace (a form of privilege escalation).
| Default ClusterRole | Default ClusterRoleBinding | Description | |
|---|---|---|---|
| system:kube-scheduler | system:kube-scheduler user | @@ -733,17 +744,21 @@ The system:node role only exists for compatibility with Kubernetes clussystem:kube-proxy user | Allows access to the resources required by the {{< glossary_tooltip term_id="kube-proxy" text="kube-proxy" >}} component. |
| Default ClusterRole | Default ClusterRoleBinding | Description | |
|---|---|---|---|
| system:auth-delegator | None | @@ -786,6 +801,7 @@ This is commonly used by add-on API servers for unified authentication and authoNone | Allows access to the resources required by most dynamic volume provisioners. |
The `kubeadm` tool helps you bootstrap a minimum viable Kubernetes cluster that conforms to best practices. In fact, you can use `kubeadm` to set up a cluster that will pass the [Kubernetes Conformance tests](https://kubernetes.io/blog/2017/10/software-conformance-certification).
+
The `kubeadm` tool helps you bootstrap a minimum viable Kubernetes cluster that conforms to best practices. In fact, you can use `kubeadm` to set up a cluster that will pass the [Kubernetes Conformance tests](https://kubernetes.io/blog/2017/10/software-conformance-certification).
`kubeadm` also supports other cluster
lifecycle functions, such as [bootstrap tokens](/docs/reference/access-authn-authz/bootstrap-tokens/) and cluster upgrades.
@@ -254,11 +254,11 @@ Read all of this advice carefully before proceeding.
**You must deploy a
{{< glossary_tooltip text="Container Network Interface" term_id="cni" >}}
-(CNI) based Pod network add-on so that your Pods can communicate with each other.
+(CNI) based Pod network add-on so that your Pods can communicate with each other.
Cluster DNS (CoreDNS) will not start up before a network is installed.**
- Take care that your Pod network must not overlap with any of the host
- networks: you are likely to see problems if there is any overlap.
+ networks: you are likely to see problems if there is any overlap.
(If you find a collision between your network plugin’s preferred Pod
network and some of your host networks, you should think of a suitable
CIDR block to use instead, then use that during `kubeadm init` with
@@ -266,13 +266,13 @@ Cluster DNS (CoreDNS) will not start up before a network is installed.**
- By default, `kubeadm` sets up your cluster to use and enforce use of
[RBAC](/docs/reference/access-authn-authz/rbac/) (role based access
- control).
+ control).
Make sure that your Pod network plugin supports RBAC, and so do any manifests
that you use to deploy it.
- If you want to use IPv6--either dual-stack, or single-stack IPv6 only
networking--for your cluster, make sure that your Pod network plugin
- supports IPv6.
+ supports IPv6.
IPv6 support was added to CNI in [v0.6.0](https://github.com/containernetworking/cni/releases/tag/v0.6.0).
{{< /caution >}}
@@ -284,10 +284,10 @@ tracker instead of the kubeadm or kubernetes issue trackers.
{{< /note >}}
Several external projects provide Kubernetes Pod networks using CNI, some of which also
-support [Network Policy](/docs/concepts/services-networking/networkpolicies/).
+support [Network Policy](/docs/concepts/services-networking/network-policies/).
-See the list of available
-[networking and network policy add-ons](/docs/concepts/cluster-administration/addons/#networking-and-network-policy).
+See a list of add-ons that implement the
+[Kubernetes networking model](/docs/concepts/cluster-administration/networking/#how-to-implement-the-kubernetes-networking-model).
You can install a Pod network add-on with the following command on the
control-plane node or a node that has the kubeconfig credentials:
@@ -297,79 +297,6 @@ kubectl apply -f - A Pod is the basic execution unit of a Kubernetes application. Each Pod represents a part of a workload that is running on your cluster. Learn more about Pods. + A Pod is the basic execution unit of a Kubernetes application. Each Pod represents a part of a workload that is running on your cluster. Learn more about Pods.
Kubernetes Pods are mortal. Pods in fact have a lifecycle. When a worker node dies, the Pods running on the Node are also lost. A ReplicaSet might then dynamically drive the cluster back to desired state via creation of new Pods to keep your application running. As another example, consider an image-processing backend with 3 replicas. Those replicas are exchangeable; the front-end system should not care about backend replicas or even if a Pod is lost and recreated. That said, each Pod in a Kubernetes cluster has a unique IP address, even Pods on the same Node, so there needs to be a way of automatically reconciling changes among Pods so that your applications continue to function.
+Kubernetes Pods are mortal. Pods in fact have a lifecycle. When a worker node dies, the Pods running on the Node are also lost. A ReplicaSet might then dynamically drive the cluster back to desired state via creation of new Pods to keep your application running. As another example, consider an image-processing backend with 3 replicas. Those replicas are exchangeable; the front-end system should not care about backend replicas or even if a Pod is lost and recreated. That said, each Pod in a Kubernetes cluster has a unique IP address, even Pods on the same Node, so there needs to be a way of automatically reconciling changes among Pods so that your applications continue to function.
A Service in Kubernetes is an abstraction which defines a logical set of Pods and a policy by which to access them. Services enable a loose coupling between dependent Pods. A Service is defined using YAML (preferred) or JSON, like all Kubernetes objects. The set of Pods targeted by a Service is usually determined by a LabelSelector (see below for why you might want a Service without including selector in the spec).
Laman ini menunjukkan cara untuk menginstal `kubeadm`.
-Untuk informasi mengenai cara membuat sebuah klaster dengan kubeadm setelah kamu melakukan proses instalasi ini, lihat laman [Menggunakan kubeadm untuk Membuat Sebuah Klaster](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/).
+Untuk informasi mengenai cara membuat sebuah klaster dengan kubeadm setelah kamu melakukan proses instalasi ini, lihat laman [Menggunakan kubeadm untuk Membuat Sebuah Klaster](/id/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/).
@@ -132,14 +132,14 @@ Jika ditemukan selain dari kedua _runtime_ Container tersebut, kubeadm akan berh
Komponen kubelet berintegrasi dengan Docker melalui implementasi CRI `dockershim` bawaannya.
-Lihat [_runtime_ Container](/docs/setup/production-environment/container-runtimes/)
+Lihat [_runtime_ Container](/id/docs/setup/production-environment/container-runtimes/)
untuk informasi lebih lanjut.
{{% /tab %}}
{{% tab name="sistem operasi lainnya" %}}
Secara bawaan, kubeadm menggunakan {{< glossary_tooltip term_id="docker" >}} sebagai _runtime_ Container.
Komponen kubelet berintegrasi dengan Docker melalui implementasi CRI `dockershim` bawaannya.
-Lihat [_runtime_ Container](/docs/setup/production-environment/container-runtimes/)
+Lihat [_runtime_ Container](/id/docs/setup/production-environment/container-runtimes/)
untuk informasi lebih lanjut.
{{% /tab %}}
{{< /tabs >}}
@@ -174,7 +174,7 @@ Hal ini karena kubeadm dan Kubernetes membutuhkan
Untuk informasi lebih lanjut mengenai _version skew_, lihat:
* [Kebijakan _version-skew_ dan versi Kubernetes](/docs/setup/release/version-skew-policy/)
-* [Kebijakan _version skew_](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#version-skew-policy) yang spesifik untuk kubeadm
+* [Kebijakan _version skew_](/id/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#version-skew-policy) yang spesifik untuk kubeadm
{{< tabs name="k8s_install" >}}
{{% tab name="Ubuntu, Debian atau HypriotOS" %}}
@@ -304,4 +304,4 @@ Jika kamu menemui kesulitan dengan kubeadm, silakan merujuk pada [dokumen penyel
## {{% heading "whatsnext" %}}
-* [Menggunakan kubeadm untuk Membuat Sebuah Klaster](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/)
+* [Menggunakan kubeadm untuk Membuat Sebuah Klaster](/id/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/)
diff --git a/content/id/docs/tasks/access-application-cluster/access-cluster.md b/content/id/docs/tasks/access-application-cluster/access-cluster.md
index 148f402402..6a575ad8f1 100644
--- a/content/id/docs/tasks/access-application-cluster/access-cluster.md
+++ b/content/id/docs/tasks/access-application-cluster/access-cluster.md
@@ -178,7 +178,7 @@ Saat mengakses API dari Pod, pencarian dan autentikasi ke apiserver agak berbeda
Cara yang disarankan untuk menemukan apiserver di dalam Pod adalah dengan nama DNS `kubernetes.default.svc`,
yang akan mengubah kedalam bentuk Service IP yang pada gilirannya akan dialihkan ke apiserver.
-Cara yang disarankan untuk mengautentikasi ke apiserver adalah dengan kredensial [akun servis](/docs/tasks/configure-pod-container/configure-service-account/).
+Cara yang disarankan untuk mengautentikasi ke apiserver adalah dengan kredensial [akun servis](/id/docs/tasks/configure-pod-container/configure-service-account/).
Oleh kube-system, Pod dikaitkan dengan sebuah akun servis (_service account_), dan sebuah kredensial (token) untuk akun servis (_service account_) tersebut ditempatkan ke pohon sistem berkas (_file system tree_) dari setiap Container di dalam Pod tersebut,
di `/var/run/secrets/kubernetes.io/serviceaccount/token`.
@@ -317,7 +317,7 @@ Ada beberapa proksi berbeda yang mungkin kamu temui saat menggunakan Kubernetes:
- dapat digunakan untuk menjangkau Node, Pod, atau Service
- melakukan _load balancing_ saat digunakan untuk menjangkau sebuah Service
-1. [kube-proxy](/docs/concepts/services-networking/service/#ips-and-vips):
+1. [kube-proxy](/id/docs/concepts/services-networking/service/#ips-and-vips):
- berjalan di setiap Node
- memproksi UDP dan TCP
diff --git a/content/id/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md b/content/id/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md
index b2b80aacba..8775823304 100644
--- a/content/id/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md
+++ b/content/id/docs/tasks/access-application-cluster/configure-access-multiple-clusters.md
@@ -320,7 +320,7 @@ contexts:
```
Untuk informasi lebih tentang bagaimana berkas Kubeconfig tergabung, lihat
-[Mengatur Akses Cluster Menggunakan Berkas Kubeconfig](/docs/concepts/configuration/organize-cluster-access-kubeconfig/)
+[Mengatur Akses Cluster Menggunakan Berkas Kubeconfig](/id/docs/concepts/configuration/organize-cluster-access-kubeconfig/)
## Jelajahi direktori $HOME/.kube
@@ -372,7 +372,7 @@ $Env:KUBECONFIG=$ENV:KUBECONFIG_SAVED
## {{% heading "whatsnext" %}}
-* [Mengatur Akses Cluster Menggunakan Berkas Kubeconfig](/docs/concepts/configuration/organize-cluster-access-kubeconfig/)
+* [Mengatur Akses Cluster Menggunakan Berkas Kubeconfig](/id/docs/concepts/configuration/organize-cluster-access-kubeconfig/)
* [kubectl config](/docs/reference/generated/kubectl/kubectl-commands#config)
diff --git a/content/id/docs/tasks/access-application-cluster/create-external-load-balancer.md b/content/id/docs/tasks/access-application-cluster/create-external-load-balancer.md
index 1c6226b1be..d6d04df2ad 100644
--- a/content/id/docs/tasks/access-application-cluster/create-external-load-balancer.md
+++ b/content/id/docs/tasks/access-application-cluster/create-external-load-balancer.md
@@ -19,7 +19,7 @@ _asalkan klaster kamu beroperasi pada lingkungan yang mendukung dan terkonfigura
Untuk informasi mengenai penyediaan dan penggunaan sumber daya Ingress yang dapat memberikan
servis URL yang dapat dijangkau secara eksternal, penyeimbang beban lalu lintas, terminasi SSL, dll.,
-silahkan cek dokumentasi [Ingress](/docs/concepts/services-networking/ingress/)
+silahkan cek dokumentasi [Ingress](/id/docs/concepts/services-networking/ingress/)
@@ -35,7 +35,7 @@ silahkan cek dokumentasi [Ingress](/docs/concepts/services-networking/ingress/)
## Berkas konfigurasi
Untuk membuat _load balancer_ eksternal, tambahkan baris di bawah ini ke
-[berkas konfigurasi Service](/docs/concepts/services-networking/service/#loadbalancer) kamu:
+[berkas konfigurasi Service](/id/docs/concepts/services-networking/service/#loadbalancer) kamu:
```yaml
type: LoadBalancer
diff --git a/content/id/docs/tasks/access-application-cluster/list-all-running-container-images.md b/content/id/docs/tasks/access-application-cluster/list-all-running-container-images.md
new file mode 100644
index 0000000000..f2140e5276
--- /dev/null
+++ b/content/id/docs/tasks/access-application-cluster/list-all-running-container-images.md
@@ -0,0 +1,129 @@
+---
+title: Membuat Daftar Semua Image Container yang Berjalan dalam Klaster
+content_type: task
+weight: 100
+---
+
+
+
+Laman ini menunjukkan cara menggunakan kubectl untuk membuat daftar semua _image_ Container
+untuk Pod yang berjalan dalam sebuah klaster.
+
+
+
+## {{% heading "prerequisites" %}}
+
+
+{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
+
+
+
+
+
+Dalam latihan ini kamu akan menggunakan kubectl untuk mengambil semua Pod yang
+berjalan dalam sebuah klaster, dan mengubah format keluarannya untuk melihat daftar
+Container untuk masing-masing Pod.
+
+## Membuat daftar semua _image_ Container pada semua Namespace
+
+- Silakan ambil semua Pod dalam Namespace dengan menggunakan perintah `kubectl get pods --all-namespaces`
+- Silakan format keluarannya agar hanya menyertakan daftar nama _image_ dari Container
+ dengan menggunakan perintah `-o jsonpath={..image}`. Perintah ini akan mem-_parsing field_
+ `image` dari keluaran json yang dihasilkan.
+ - Silakan lihat [referensi jsonpath](/docs/user-guide/jsonpath/)
+ untuk informasi lebih lanjut tentang cara menggunakan `jsonpath`.
+- Silakan format keluaran dengan menggunakan peralatan standar: `tr`, `sort`, `uniq`
+ - Gunakan `tr` untuk mengganti spasi dengan garis baru
+ - Gunakan `sort` untuk menyortir hasil
+ - Gunakan `uniq` untuk mengumpulkan jumlah _image_
+
+```sh
+kubectl get pods --all-namespaces -o jsonpath="{..image}" |\
+tr -s '[[:space:]]' '\n' |\
+sort |\
+uniq -c
+```
+
+Perintah di atas secara berulang akan mengembalikan semua _field_ bernama `image`
+dari semua poin yang dikembalikan.
+
+Sebagai pilihan, dimungkinkan juga untuk menggunakan jalur (_path_) absolut ke _field image_
+di dalam Pod. Hal ini memastikan _field_ yang diambil benar
+bahkan ketika nama _field_ tersebut diulangi,
+misalnya banyak _field_ disebut dengan `name` dalam sebuah poin yang diberikan:
+
+```sh
+kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}"
+```
+
+`Jsonpath` dapat diartikan sebagai berikut:
+
+- `.items[*]`: untuk setiap nilai yang dihasilkan
+- `.spec`: untuk mendapatkan spesifikasi
+- `.containers[*]`: untuk setiap Container
+- `.image`: untuk mendapatkan _image_
+
+{{< note >}}
+Pada saat mengambil sebuah Pod berdasarkan namanya, misalnya `kubectl get pod nginx`,
+bagian `.items[*]` dari jalur harus dihilangkan karena hanya akan menghasilkan sebuah Pod
+sebagai keluarannya, bukan daftar dari semua Pod.
+
+{{< /note >}}
+
+## Membuat daftar _image_ Container berdasarkan Pod
+
+Format dapat dikontrol lebih lanjut dengan menggunakan operasi `range` untuk
+melakukan iterasi untuk setiap elemen secara individual.
+
+```sh
+kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.containers[*]}{.image}{", "}{end}{end}' |\
+sort
+```
+
+## Membuat daftar _image_ yang difilter berdasarkan label dari Pod
+
+Untuk menargetkan hanya Pod yang cocok dengan label tertentu saja, gunakan tanda -l. Filter
+dibawah ini akan menghasilkan Pod dengan label yang cocok dengan `app=nginx`.
+
+```sh
+kubectl get pods --all-namespaces -o=jsonpath="{..image}" -l app=nginx
+```
+
+## Membuat daftar _image_ Container yang difilter berdasarkan Namespace Pod
+
+Untuk hanya menargetkan Pod pada Namespace tertentu, gunakankan tanda Namespace. Filter
+dibawah ini hanya menyaring Pod pada Namespace `kube-system`.
+
+```sh
+kubectl get pods --namespace kube-system -o jsonpath="{..image}"
+```
+
+## Membuat daftar _image_ Container dengan menggunakan go-template sebagai alternatif dari jsonpath
+
+Sebagai alternatif untuk `jsonpath`, kubectl mendukung penggunaan [go-template](https://golang.org/pkg/text/template/)
+untuk memformat keluaran seperti berikut:
+
+
+```sh
+kubectl get pods --all-namespaces -o go-template --template="{{range .items}}{{range .spec.containers}}{{.image}} {{end}}{{end}}"
+```
+
+
+
+
+
+
+
+
+
+## {{% heading "whatsnext" %}}
+
+
+### Referensi
+
+* Referensi panduan [Jsonpath](/docs/user-guide/jsonpath/).
+* Referensi panduan [Go template](https://golang.org/pkg/text/template/).
+
+
+
+
diff --git a/content/id/docs/tasks/access-application-cluster/web-ui-dashboard.md b/content/id/docs/tasks/access-application-cluster/web-ui-dashboard.md
index a83605db40..99d23c823d 100644
--- a/content/id/docs/tasks/access-application-cluster/web-ui-dashboard.md
+++ b/content/id/docs/tasks/access-application-cluster/web-ui-dashboard.md
@@ -69,17 +69,17 @@ Tekan tombol **CREATE** di pojok kanan atas di laman apapun untuk memulai.
_Deploy wizard_ meminta kamu untuk menyediakan informasi sebagai berikut:
-- **App name** (wajib): Nama dari aplikasi kamu. Sebuah [label](/docs/concepts/overview/working-with-objects/labels/) dengan nama tersebut akan ditambahkan ke Deployment dan Service, jika ada, akan di-_deploy_.
+- **App name** (wajib): Nama dari aplikasi kamu. Sebuah [label](/id/docs/concepts/overview/working-with-objects/labels/) dengan nama tersebut akan ditambahkan ke Deployment dan Service, jika ada, akan di-_deploy_.
Nama aplikasi harus unik di dalam [Namespace](/docs/tasks/administer-cluster/namespaces/) Kubernetes yang kamu pilih. Nama tersebut harus dimulai dengan huruf kecil, dan diakhiri dengan huruf kecil atau angka, dan hanya berisi huruf kecil, angka dan tanda hubung (-). Nama tersebut juga dibatasi hanya 24 karakter. Spasi di depan dan belakang nama tersebut diabaikan.
-- **Container image** (wajib): Tautan publik dari sebuah [_image_](/docs/concepts/containers/images/) kontainer Docker pada _registry_ apapun, atau sebuah _image_ privat (biasanya di-_hosting_ di Google Container Registry atau Docker Hub). Spesifikasi _image_ kontainer tersebut harus diakhiri dengan titik dua.
+- **Container image** (wajib): Tautan publik dari sebuah [_image_](/id/docs/concepts/containers/images/) kontainer Docker pada _registry_ apapun, atau sebuah _image_ privat (biasanya di-_hosting_ di Google Container Registry atau Docker Hub). Spesifikasi _image_ kontainer tersebut harus diakhiri dengan titik dua.
- **Number of pods** (wajib): Berapa banyak Pod yang kamu inginkan untuk men-_deploy_ aplikasimu. Nilainya haruslah sebuah bilangan bulat positif.
- Sebuah [Deployment](/docs/concepts/workloads/controllers/deployment/) akan terbuat untuk mempertahankan jumlah Pod di klaster kamu.
+ Sebuah [Deployment](/id/docs/concepts/workloads/controllers/deployment/) akan terbuat untuk mempertahankan jumlah Pod di klaster kamu.
-- **Service** (opsional): Untuk beberapa aplikasi (misalnya aplikasi _frontend_) kamu mungkin akan mengekspos sebuah [Service](/docs/concepts/services-networking/service/) ke alamat IP publik yang mungkin berada diluar klaster kamu(Service eksternal). Untuk Service eksternal, kamu mungkin perlu membuka lebih dari satu porta jaringan untuk mengeksposnya. Lihat lebih lanjut [di sini](/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/).
+- **Service** (opsional): Untuk beberapa aplikasi (misalnya aplikasi _frontend_) kamu mungkin akan mengekspos sebuah [Service](/id/docs/concepts/services-networking/service/) ke alamat IP publik yang mungkin berada diluar klaster kamu(Service eksternal). Untuk Service eksternal, kamu mungkin perlu membuka lebih dari satu porta jaringan untuk mengeksposnya. Lihat lebih lanjut [di sini](/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/).
Service lainnya yang hanya dapat diakses dari dalam klaster disebut Service internal.
@@ -87,9 +87,9 @@ _Deploy wizard_ meminta kamu untuk menyediakan informasi sebagai berikut:
Jika membutuhkan, kamu dapat membuka bagian **Advanced options** di mana kamu dapat menyetel lebih banyak pengaturan:
-- **Description**: Tels yang kamu masukkan ke sini akan ditambahkan sebagai sebuah [anotasi](/docs/concepts/overview/working-with-objects/annotations/) ke Deployment dan akan ditampilkan di detail aplikasi.
+- **Description**: Tels yang kamu masukkan ke sini akan ditambahkan sebagai sebuah [anotasi](/id/docs/concepts/overview/working-with-objects/annotations/) ke Deployment dan akan ditampilkan di detail aplikasi.
-- **Labels**: [Label-label](/docs/concepts/overview/working-with-objects/labels/) bawaan yang akan digunakan untuk aplikasi kamu adalah `name` dan `version` aplikasi. Kamu dapat menentukan label lain untuk diterapkan ke Deployment, Service (jika ada), dan Pod, seperti `release`, `environment`, `tier`, `partition`, dan `track` rilis.
+- **Labels**: [Label-label](/id/docs/concepts/overview/working-with-objects/labels/) bawaan yang akan digunakan untuk aplikasi kamu adalah `name` dan `version` aplikasi. Kamu dapat menentukan label lain untuk diterapkan ke Deployment, Service (jika ada), dan Pod, seperti `release`, `environment`, `tier`, `partition`, dan `track` rilis.
Contoh:
@@ -107,9 +107,9 @@ track=stable
Jika pembuatan Namespace berhasil, Namespace tersebut akan dipilih secara bawaan. Jika pembuatannya gagal, maka Namespace yang pertama akan terpilih.
-- **_Image Pull Secret_**: Jika kamu menggunakan _image_ kontainer Docker yang privat, mungkin diperlukan kredensial [_pull secret_](/docs/concepts/configuration/secret/).
+- **_Image Pull Secret_**: Jika kamu menggunakan _image_ kontainer Docker yang privat, mungkin diperlukan kredensial [_pull secret_](/id/docs/concepts/configuration/secret/).
- Dashboard menampilkan semua _secret_ yang tersedia dengan daftar _dropdown_, dan mengizinkan kamu untuk membuat _secret_ baru. Nama _secret_ tersebut harus mengikuti aturan Nama DNS, misalnya `new.image-pull.secret`. Isi dari sebuah _secret_ harus dienkode dalam bentuk _base64_ dan ditentukan dalam sebuah berkas [`.dockercfg`](/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod). Nama kredensial dapat berisi maksimal 253 karakter.
+ Dashboard menampilkan semua _secret_ yang tersedia dengan daftar _dropdown_, dan mengizinkan kamu untuk membuat _secret_ baru. Nama _secret_ tersebut harus mengikuti aturan Nama DNS, misalnya `new.image-pull.secret`. Isi dari sebuah _secret_ harus dienkode dalam bentuk _base64_ dan ditentukan dalam sebuah berkas [`.dockercfg`](/id/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod). Nama kredensial dapat berisi maksimal 253 karakter.
Jika pembuatan _image pull secret_ berhasil, _image pull secret_ tersebut akan terpilih secara bawaan. Jika gagal, maka tidak ada _secret_ yang dipilih.
@@ -123,7 +123,7 @@ track=stable
### Menggungah berkas YAML atau JSON
-Kubernetes mendukung pengaturan deklaratif. Dengan cara ini, semua pengaturan disimpan dalam bentuk berkas YAML atau JSON menggunakan skema sumber daya [[API](/docs/concepts/overview/kubernetes-api/).
+Kubernetes mendukung pengaturan deklaratif. Dengan cara ini, semua pengaturan disimpan dalam bentuk berkas YAML atau JSON menggunakan skema sumber daya [[API](/id/docs/concepts/overview/kubernetes-api/).
Sebagai alternatif untuk menentukan detail aplikasi di _deploy wizard_, kamu dapat menentukan sendiri detail aplikasi kamu dalam berkas YAML atau JSON, dan mengunggah berkas tersebut menggunakan Dashboard.
diff --git a/content/id/docs/tasks/administer-cluster/highly-available-master.md b/content/id/docs/tasks/administer-cluster/highly-available-master.md
new file mode 100644
index 0000000000..0b2ebea7fe
--- /dev/null
+++ b/content/id/docs/tasks/administer-cluster/highly-available-master.md
@@ -0,0 +1,177 @@
+---
+title: Mengatur Control Plane Kubernetes dengan Ketersediaan Tinggi (High-Availability)
+content_type: task
+---
+
+
+
+{{< feature-state for_k8s_version="v1.5" state="alpha" >}}
+
+Kamu dapat mereplikasi _control plane_ Kubernetes dalam skrip `kube-up` atau `kube-down` untuk Google Compute Engine (GCE).
+Dokumen ini menjelaskan cara menggunakan skrip kube-up/down untuk mengelola _control plane_ dengan ketersedian tinggi atau _high_availability_ (HA) dan bagaimana _control plane_ HA diimplementasikan untuk digunakan dalam GCE.
+
+
+
+## {{% heading "prerequisites" %}}
+
+
+{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
+
+
+
+
+
+## Memulai klaster yang kompatibel dengan HA
+
+Untuk membuat klaster yang kompatibel dengan HA, kamu harus mengatur tanda ini pada skrip `kube-up`:
+
+* `MULTIZONE=true` - untuk mencegah penghapusan replika _control plane_ kubelet dari zona yang berbeda dengan zona bawaan server.
+Ini diperlukan jika kamu ingin menjalankan replika _control plane_ pada zona berbeda, dimana hal ini disarankan.
+
+* `ENABLE_ETCD_QUORUM_READ=true` - untuk memastikan bahwa pembacaan dari semua server API akan mengembalikan data terbaru.
+Jika `true`, bacaan akan diarahkan ke replika pemimpin dari etcd.
+Menetapkan nilai ini menjadi `true` bersifat opsional: pembacaan akan lebih dapat diandalkan tetapi juga akan menjadi lebih lambat.
+
+Sebagai pilihan, kamu dapat menentukan zona GCE tempat dimana replika _control plane_ pertama akan dibuat.
+Atur tanda berikut:
+
+* `KUBE_GCE_ZONE=zone` - zona tempat di mana replika _control plane_ pertama akan berjalan.
+
+Berikut ini contoh perintah untuk mengatur klaster yang kompatibel dengan HA pada zona GCE europe-west1-b:
+
+```shell
+MULTIZONE=true KUBE_GCE_ZONE=europe-west1-b ENABLE_ETCD_QUORUM_READS=true ./cluster/kube-up.sh
+```
+
+Perhatikan bahwa perintah di atas digunakan untuk membuat klaster dengan sebuah _control plane_;
+Namun, kamu bisa menambahkan replika _control plane_ baru ke klaster dengan perintah berikutnya.
+
+
+## Menambahkan replika _control plane_ yang baru
+
+Setelah kamu membuat klaster yang kompatibel dengan HA, kamu bisa menambahkan replika _control plane_ ke sana.
+Kamu bisa menambahkan replika _control plane_ dengan menggunakan skrip `kube-up` dengan tanda berikut ini:
+
+* `KUBE_REPLICATE_EXISTING_MASTER=true` - untuk membuat replika dari _control plane_ yang sudah ada.
+
+* `KUBE_GCE_ZONE=zone` - zona di mana replika _control plane_ itu berjalan.
+Region ini harus sama dengan region dari zona replika yang lain.
+
+Kamu tidak perlu mengatur tanda `MULTIZONE` atau `ENABLE_ETCD_QUORUM_READS`,
+karena tanda itu diturunkan pada saat kamu memulai klaster yang kompatible dengan HA.
+
+Berikut ini contoh perintah untuk mereplikasi _control plane_ pada klaster sebelumnya yang kompatibel dengan HA:
+
+```shell
+KUBE_GCE_ZONE=europe-west1-c KUBE_REPLICATE_EXISTING_MASTER=true ./cluster/kube-up.sh
+```
+
+## Menghapus replika _control plane_
+
+Kamu dapat menghapus replika _control plane_ dari klaster HA dengan menggunakan skrip `kube-down` dengan tanda berikut:
+
+* `KUBE_DELETE_NODES=false` - untuk mencegah penghapusan kubelet.
+
+* `KUBE_GCE_ZONE=zone` - zona di mana replika _control plane_ akan dihapus.
+
+* `KUBE_REPLICA_NAME=replica_name` - (opsional) nama replika _control plane_ yang akan dihapus.
+Jika kosong: replika mana saja dari zona yang diberikan akan dihapus.
+
+Berikut ini contoh perintah untuk menghapus replika _control plane_ dari klaster HA yang sudah ada sebelumnya:
+
+```shell
+KUBE_DELETE_NODES=false KUBE_GCE_ZONE=europe-west1-c ./cluster/kube-down.sh
+```
+
+## Mengatasi replika _control plane_ yang gagal
+
+Jika salah satu replika _control plane_ di klaster HA kamu gagal,
+praktek terbaik adalah menghapus replika dari klaster kamu dan menambahkan replika baru pada zona yang sama.
+Berikut ini contoh perintah yang menunjukkan proses tersebut:
+
+1. Menghapus replika yang gagal:
+
+```shell
+KUBE_DELETE_NODES=false KUBE_GCE_ZONE=replica_zone KUBE_REPLICA_NAME=replica_name ./cluster/kube-down.sh
+```
+
+2. Menambahkan replika baru untuk menggantikan replika yang lama
+
+```shell
+KUBE_GCE_ZONE=replica-zone KUBE_REPLICATE_EXISTING_MASTER=true ./cluster/kube-up.sh
+```
+
+## Praktek terbaik untuk mereplikasi _control plane_ untuk klaster HA
+
+* Usahakan untuk menempatkan replika _control plane_ pada zona yang berbeda. Pada saat terjadi kegagalan zona, semua _control plane_ yang ditempatkan dalam zona tersebut akan gagal pula.
+Untuk bertahan dari kegagalan pada sebuah zona, tempatkan juga Node pada beberapa zona yang lain
+(Lihatlah [multi-zona](/id/docs/setup/best-practices/multiple-zones/) untuk lebih detail).
+
+* Jangan gunakan klaster dengan dua replika _control plane_. Konsensus pada klaster dengan dua replika membutuhkan kedua replika tersebut berjalan pada saat mengubah keadaan yang persisten.
+Akibatnya, kedua replika tersebut diperlukan dan kegagalan salah satu replika mana pun mengubah klaster dalam status kegagalan mayoritas.
+Dengan demikian klaster dengan dua replika lebih buruk, dalam hal HA, daripada klaster dengan replika tunggal.
+
+* Ketika kamu menambahkan sebuah replika _control plane_, status klaster (etcd) disalin ke sebuah _instance_ baru.
+Jika klaster itu besar, mungkin butuh waktu yang lama untuk menduplikasi keadaannya.
+Operasi ini dapat dipercepat dengan memigrasi direktori data etcd, seperti yang dijelaskan [di sini](https://coreos.com/etcd/docs/latest/admin_guide.html#member-migration)
+(Kami sedang mempertimbangkan untuk menambahkan dukungan untuk migrasi direktori data etcd di masa mendatang).
+
+
+
+
+
+## Catatan implementasi
+
+
+
+### Ikhtisar
+
+Setiap replika _control plane_ akan menjalankan komponen berikut dalam mode berikut:
+
+* _instance_ etcd: semua _instance_ akan dikelompokkan bersama menggunakan konsensus;
+
+* server API : setiap server akan berbicara dengan lokal etcd - semua server API pada cluster akan tersedia;
+
+* pengontrol (_controller_), penjadwal (_scheduler_), dan _scaler_ klaster automatis: akan menggunakan mekanisme sewa - dimana hanya satu _instance_ dari masing-masing mereka yang akan aktif dalam klaster;
+
+* manajer tambahan (_add-on_): setiap manajer akan bekerja secara independen untuk mencoba menjaga tambahan dalam sinkronisasi.
+
+Selain itu, akan ada penyeimbang beban (_load balancer_) di depan server API yang akan mengarahkan lalu lintas eksternal dan internal menuju mereka.
+
+
+### Penyeimbang Beban
+
+Saat memulai replika _control plane_ kedua, penyeimbang beban yang berisi dua replika akan dibuat
+dan alamat IP dari replika pertama akan dipromosikan ke alamat IP penyeimbang beban.
+Demikian pula, setelah penghapusan replika _control plane_ kedua yang dimulai dari paling akhir, penyeimbang beban akan dihapus dan alamat IP-nya akan diberikan ke replika terakhir yang ada.
+Mohon perhatikan bahwa pembuatan dan penghapusan penyeimbang beban adalah operasi yang rumit dan mungkin perlu beberapa waktu (~20 menit) untuk dipropagasikan.
+
+
+### Service _control plane_ & kubelet
+
+Daripada sistem mencoba untuk menjaga daftar terbaru dari apiserver Kubernetes yang ada dalam Service Kubernetes,
+sistem akan mengarahkan semua lalu lintas ke IP eksternal:
+
+* dalam klaster dengan satu _control plane_, IP diarahkan ke _control plane_ tunggal.
+
+* dalam klaster dengan multiple _control plane_, IP diarahkan ke penyeimbang beban yang ada di depan _control plane_.
+
+Demikian pula, IP eksternal akan digunakan oleh kubelet untuk berkomunikasi dengan _control plane_.
+
+
+### Sertifikat _control plane_
+
+Kubernetes menghasilkan sertifikat TLS _control plane_ untuk IP publik eksternal dan IP lokal untuk setiap replika.
+Tidak ada sertifikat untuk IP publik sementara (_ephemeral_) dari replika;
+Untuk mengakses replika melalui IP publik sementara, kamu harus melewatkan verifikasi TLS.
+
+### Pengklasteran etcd
+
+Untuk mengizinkan pengelompokkan etcd, porta yang diperlukan untuk berkomunikasi antara _instance_ etcd akan dibuka (untuk komunikasi dalam klaster).
+Untuk membuat penyebaran itu aman, komunikasi antara _instance_ etcd diotorisasi menggunakan SSL.
+
+## Bacaan tambahan
+
+[Dokumen desain - Penyebaran master HA automatis](https://git.k8s.io/community/contributors/design-proposals/cluster-lifecycle/ha_master.md)
+
+
diff --git a/content/id/docs/tasks/administer-cluster/namespaces.md b/content/id/docs/tasks/administer-cluster/namespaces.md
new file mode 100644
index 0000000000..409e42dd70
--- /dev/null
+++ b/content/id/docs/tasks/administer-cluster/namespaces.md
@@ -0,0 +1,302 @@
+---
+title: Membagi sebuah Klaster dengan Namespace
+content_type: task
+---
+
+
+Laman ini menunjukkan bagaimana cara melihat, menggunakan dan menghapus {{< glossary_tooltip text="namespaces" term_id="namespace" >}}. Laman ini juga menunjukkan bagaimana cara menggunakan Namespace Kubernetes namespaces untuk membagi klaster kamu.
+
+
+## {{% heading "prerequisites" %}}
+
+* Memiliki [Klaster Kubernetes](/id/docs/setup/).
+* Memiliki pemahaman dasar [_Pod_](/id/docs/concepts/workloads/pods/pod/), [_Service_](/id/docs/concepts/services-networking/service/), dan [_Deployment_](/id/docs/concepts/workloads/controllers/deployment/) dalam Kubernetes.
+
+
+
+
+## Melihat Namespace
+
+1. Untuk melihat Namespace yang ada saat ini pada sebuah klaster anda bisa menggunakan:
+
+```shell
+kubectl get namespaces
+```
+```
+NAME STATUS AGE
+default Active 11d
+kube-system Active 11d
+kube-public Active 11d
+```
+
+Kubernetes mulai dengan tiga Namespace pertama:
+
+ * `default` Namespace bawaan untuk objek-objek yang belum terkait dengan Namespace lain
+ * `kube-system` Namespace untuk objek-objek yang dibuat oleh sistem Kubernetes
+ * `kube-public` Namespace ini dibuat secara otomatis dan dapat dibaca oleh seluruh pengguna (termasuk yang tidak terotentikasi). Namespace ini sering dicadangkan untuk kepentingan klaster, untuk kasus dimana beberapa sumber daya seharusnya dapat terlihat dan dapat terlihat secara publik di seluruh klaster. Aspek publik pada Namespace ini hanya sebuah konvensi bukan suatu kebutuhan.
+
+Kamu bisa mendapat ringkasan Namespace tertentu dengan menggunakan:
+
+```shell
+kubectl get namespaces