Skip to content

Commit bd456cf

Browse files
authored
Merge pull request #39824 from mickeyboxell/merged-main-dev-1.27
Merged main dev 1.27
2 parents d3979d5 + 987edf7 commit bd456cf

File tree

210 files changed

+6478
-2134
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

210 files changed

+6478
-2134
lines changed

README-zh.md

+24-4
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,34 @@ cd website
6060
<!--
6161
The Kubernetes website uses the [Docsy Hugo theme](https://github.com/google/docsy#readme). Even if you plan to run the website in a container, we strongly recommend pulling in the submodule and other development dependencies by running the following:
6262
-->
63-
6463
Kubernetes 网站使用的是 [Docsy Hugo 主题](https://github.com/google/docsy#readme)
6564
即使你打算在容器中运行网站,我们也强烈建议你通过运行以下命令来引入子模块和其他开发依赖项:
6665

67-
```bash
68-
# 引入 Docsy 子模块
66+
<!--
67+
### Windows
68+
```powershell
69+
# fetch submodule dependencies
6970
git submodule update --init --recursive --depth 1
70-
```
71+
```
72+
-->
73+
### Windows
74+
```powershell
75+
# 获取子模块依赖
76+
git submodule update --init --recursive --depth 1
77+
```
78+
79+
<!--
80+
### Linux / other Unix
81+
```bash
82+
# fetch submodule dependencies
83+
make module-init
84+
```
85+
-->
86+
### Linux / 其它 Unix
87+
```bash
88+
# 获取子模块依赖
89+
make module-init
90+
```
7191

7292
<!--
7393
## Running the website using a container

content/de/docs/concepts/containers/images.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ Pods können nur eigene Image Pull Secret in ihrem eigenen Namespace referenzier
277277

278278
#### Referenzierung eines imagePullSecrets bei einem Pod
279279

280-
Nun können Sie Pods erstellen, die dieses Secret referenzieren, indem Sie einen Aschnitt `imagePullSecrets` zu ihrer Pod - Definition hinzufügen.
280+
Nun können Sie Pods erstellen, die dieses Secret referenzieren, indem Sie einen Abschnitt `imagePullSecrets` zu ihrer Pod - Definition hinzufügen.
281281

282282
```shell
283283
cat <<EOF > pod.yaml

content/en/blog/_posts/2022-11-28-registry-k8s-io-change.md

+8-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Starting with Kubernetes 1.25, our container image registry has changed from k8s
1111

1212
## TL;DR: What you need to know about this change
1313

14-
* Container images for Kubernetes releases from 1.25 onward are no longer published to k8s.gcr.io, only to registry.k8s.io.
14+
* Container images for Kubernetes releases from <del>1.25</del> 1.27 onward are not published to k8s.gcr.io, only to registry.k8s.io.
1515
* In the upcoming December patch releases, the new registry domain default will be backported to all branches still in support (1.22, 1.23, 1.24).
1616
* If you run in a restricted environment and apply strict domain/IP address access policies limited to k8s.gcr.io, the __image pulls will not function__ after the migration to this new registry. For these users, the recommended method is to mirror the release images to a private registry.
1717

@@ -68,8 +68,15 @@ The image used by kubelet for the pod sandbox (`pause`) can be overridden by set
6868
kubelet --pod-infra-container-image=k8s.gcr.io/pause:3.5
6969
```
7070
71+
## Legacy container registry freeze {#registry-freeze}
72+
73+
[k8s.gcr.io Image Registry Will Be Frozen From the 3rd of April 2023](/blog/2023/02/06/k8s-gcr-io-freeze-announcement/) announces the freeze of the
74+
legacy k8s.gcr.io image registry. Read that article for more details.
75+
7176
## Acknowledgments
7277
7378
__Change is hard__, and evolving our image-serving platform is needed to ensure a sustainable future for the project. We strive to make things better for everyone using Kubernetes. Many contributors from all corners of our community have been working long and hard to ensure we are making the best decisions possible, executing plans, and doing our best to communicate those plans.
7479
7580
Thanks to Aaron Crickenberger, Arnaud Meukam, Benjamin Elder, Caleb Woodbine, Davanum Srinivas, Mahamed Ali, and Tim Hockin from SIG K8s Infra, Brian McQueen, and Sergey Kanzhelev from SIG Node, Lubomir Ivanov from SIG Cluster Lifecycle, Adolfo García Veytia, Jeremy Rickard, Sascha Grunert, and Stephen Augustus from SIG Release, Bob Killen and Kaslin Fields from SIG Contribex, Tim Allclair from the Security Response Committee. Also a big thank you to our friends acting as liaisons with our cloud provider partners: Jay Pipes from Amazon and Jon Johnson Jr. from Google.
81+
82+
_This article was updated on the 28th of February 2023._

content/en/blog/_posts/2022-12-12-kubernetes-release-artifact-signing.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ files side by side to the artifacts for verifying their integrity.
3131

3232
[tarballs]: https://github.com/kubernetes/kubernetes/blob/release-1.26/CHANGELOG/CHANGELOG-1.26.md#downloads-for-v1260
3333
[binaries]: https://gcsweb.k8s.io/gcs/kubernetes-release/release/v1.26.0/bin
34-
[sboms]: https://storage.googleapis.com/kubernetes-release/release/v1.26.0/kubernetes-release.spdx
35-
[provenance]: https://storage.googleapis.com/kubernetes-release/release/v1.26.0/provenance.json
34+
[sboms]: https://dl.k8s.io/release/v1.26.0/kubernetes-release.spdx
35+
[provenance]: https://dl.k8s.io/kubernetes-release/release/v1.26.0/provenance.json
3636
[cosign]: https://github.com/sigstore/cosign
3737

3838
To verify an artifact, for example `kubectl`, you can download the
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
---
2+
layout: blog
3+
title: "Introducing KWOK: Kubernetes WithOut Kubelet"
4+
date: 2023-03-01
5+
slug: introducing-kwok
6+
canonicalUrl: https://kubernetes.dev/blog/2023/03/01/introducing-kwok/
7+
---
8+
9+
**Author:** Shiming Zhang (DaoCloud), Wei Huang (Apple), Yibo Zhuang (Apple)
10+
11+
<img style="float: right; display: inline-block; margin-left: 2em; max-width: 15em;" src="/blog/2023/03/01/introducing-kwok/kwok.svg" alt="KWOK logo" />
12+
13+
Have you ever wondered how to set up a cluster of thousands of nodes just in seconds, how to simulate real nodes with a low resource footprint, and how to test your Kubernetes controller at scale without spending much on infrastructure?
14+
15+
If you answered "yes" to any of these questions, then you might be interested in KWOK, a toolkit that enables you to create a cluster of thousands of nodes in seconds.
16+
17+
## What is KWOK?
18+
19+
KWOK stands for Kubernetes WithOut Kubelet. So far, it provides two tools:
20+
21+
`kwok`
22+
: `kwok` is the cornerstone of this project, responsible for simulating the lifecycle of fake nodes, pods, and other Kubernetes API resources.
23+
24+
`kwokctl`
25+
: `kwokctl` is a CLI tool designed to streamline the creation and management of clusters, with nodes simulated by `kwok`.
26+
27+
## Why use KWOK?
28+
29+
KWOK has several advantages:
30+
31+
- **Speed**: You can create and delete clusters and nodes almost instantly, without waiting for boot or provisioning.
32+
- **Compatibility**: KWOK works with any tools or clients that are compliant with Kubernetes APIs, such as kubectl, helm, kui, etc.
33+
- **Portability**: KWOK has no specific hardware or software requirements. You can run it using pre-built images, once Docker or Nerdctl is installed. Alternatively, binaries are also available for all platforms and can be easily installed.
34+
- **Flexibility**: You can configure different node types, labels, taints, capacities, conditions, etc., and you can configure different pod behaviors, status, etc. to test different scenarios and edge cases.
35+
- **Performance**: You can simulate thousands of nodes on your laptop without significant consumption of CPU or memory resources.
36+
37+
## What are the use cases?
38+
39+
KWOK can be used for various purposes:
40+
41+
- **Learning**: You can use KWOK to learn about Kubernetes concepts and features without worrying about resource waste or other consequences.
42+
- **Development**: You can use KWOK to develop new features or tools for Kubernetes without accessing to a real cluster or requiring other components.
43+
- **Testing**:
44+
- You can measure how well your application or controller scales with different numbers of nodes and(or) pods.
45+
- You can generate high loads on your cluster by creating many pods or services with different resource requests or limits.
46+
- You can simulate node failures or network partitions by changing node conditions or randomly deleting nodes.
47+
- You can test how your controller interacts with other components or features of Kubernetes by enabling different feature gates or API versions.
48+
49+
## What are the limitations?
50+
51+
KWOK is not intended to replace others completely. It has some limitations that you should be aware of:
52+
53+
- **Functionality**: KWOK is not a kubelet and may exhibit different behaviors in areas such as pod lifecycle management, volume mounting, and device plugins. Its primary function is to simulate updates of node and pod status.
54+
- **Accuracy**: It's important to note that KWOK doesn't accurately reflect the performance or behavior of real nodes under various workloads or environments. Instead, it approximates some behaviors using simple formulas.
55+
- **Security**: KWOK does not enforce any security policies or mechanisms on simulated nodes. It assumes that all requests from the kube-apiserver are authorized and valid.
56+
57+
## Getting started
58+
59+
If you are interested in trying out KWOK, please check its [documents] for more details.
60+
61+
{{< figure src="/blog/2023/03/01/introducing-kwok/manage-clusters.svg" alt="Animation of a terminal showing kwokctl in use" caption="Using kwokctl to manage simulated clusters" >}}
62+
63+
## Getting Involved
64+
65+
If you're interested in participating in future discussions or development related to KWOK, there are several ways to get involved:
66+
67+
- Slack: [#kwok] for general usage discussion, [#kwok-dev] for development discussion. (visit [slack.k8s.io] for a workspace invitation)
68+
- Open Issues/PRs/Discussions in [sigs.k8s.io/kwok]
69+
70+
We welcome feedback and contributions from anyone who wants to join us in this exciting project.
71+
72+
[documents]: https://kwok.sigs.k8s.io/
73+
[sigs.k8s.io/kwok]: https://sigs.k8s.io/kwok/
74+
[#kwok]: https://kubernetes.slack.com/messages/kwok/
75+
[#kwok-dev]: https://kubernetes.slack.com/messages/kwok-dev/
76+
[slack.k8s.io]: https://slack.k8s.io/
Loading

content/en/blog/_posts/2023-03-01-introducing-kwok/manage-clusters.svg

+1
Loading

content/en/docs/concepts/architecture/cloud-controller.md

+42-30
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ components.
1717
The cloud-controller-manager is structured using a plugin
1818
mechanism that allows different cloud providers to integrate their platforms with Kubernetes.
1919

20-
21-
2220
<!-- body -->
2321

2422
## Design
@@ -48,10 +46,10 @@ when new servers are created in your cloud infrastructure. The node controller o
4846
hosts running inside your tenancy with the cloud provider. The node controller performs the following functions:
4947

5048
1. Update a Node object with the corresponding server's unique identifier obtained from the cloud provider API.
51-
2. Annotating and labelling the Node object with cloud-specific information, such as the region the node
49+
1. Annotating and labelling the Node object with cloud-specific information, such as the region the node
5250
is deployed into and the resources (CPU, memory, etc) that it has available.
53-
3. Obtain the node's hostname and network addresses.
54-
4. Verifying the node's health. In case a node becomes unresponsive, this controller checks with
51+
1. Obtain the node's hostname and network addresses.
52+
1. Verifying the node's health. In case a node becomes unresponsive, this controller checks with
5553
your cloud provider's API to see if the server has been deactivated / deleted / terminated.
5654
If the node has been deleted from the cloud, the controller deletes the Node object from your Kubernetes
5755
cluster.
@@ -88,13 +86,13 @@ to read and modify Node objects.
8886

8987
`v1/Node`:
9088

91-
- Get
92-
- List
93-
- Create
94-
- Update
95-
- Patch
96-
- Watch
97-
- Delete
89+
- get
90+
- list
91+
- create
92+
- update
93+
- patch
94+
- watch
95+
- delete
9896

9997
### Route controller {#authorization-route-controller}
10098

@@ -103,37 +101,42 @@ routes appropriately. It requires Get access to Node objects.
103101

104102
`v1/Node`:
105103

106-
- Get
104+
- get
107105

108106
### Service controller {#authorization-service-controller}
109107

110-
The service controller listens to Service object Create, Update and Delete events and then configures Endpoints for those Services appropriately (for EndpointSlices, the kube-controller-manager manages these on demand).
108+
The service controller watches for Service object **create**, **update** and **delete** events and then
109+
configures Endpoints for those Services appropriately (for EndpointSlices, the
110+
kube-controller-manager manages these on demand).
111111

112-
To access Services, it requires List, and Watch access. To update Services, it requires Patch and Update access.
112+
To access Services, it requires **list**, and **watch** access. To update Services, it requires
113+
**patch** and **update** access.
113114

114-
To set up Endpoints resources for the Services, it requires access to Create, List, Get, Watch, and Update.
115+
To set up Endpoints resources for the Services, it requires access to **create**, **list**,
116+
**get**, **watch**, and **update**.
115117

116118
`v1/Service`:
117119

118-
- List
119-
- Get
120-
- Watch
121-
- Patch
122-
- Update
120+
- list
121+
- get
122+
- watch
123+
- patch
124+
- update
123125

124126
### Others {#authorization-miscellaneous}
125127

126-
The implementation of the core of the cloud controller manager requires access to create Event objects, and to ensure secure operation, it requires access to create ServiceAccounts.
128+
The implementation of the core of the cloud controller manager requires access to create Event
129+
objects, and to ensure secure operation, it requires access to create ServiceAccounts.
127130

128131
`v1/Event`:
129132

130-
- Create
131-
- Patch
132-
- Update
133+
- create
134+
- patch
135+
- update
133136

134137
`v1/ServiceAccount`:
135138

136-
- Create
139+
- create
137140

138141
The {{< glossary_tooltip term_id="rbac" text="RBAC" >}} ClusterRole for the cloud
139142
controller manager looks like:
@@ -206,12 +209,21 @@ rules:
206209
[Cloud Controller Manager Administration](/docs/tasks/administer-cluster/running-cloud-controller/#cloud-controller-manager)
207210
has instructions on running and managing the cloud controller manager.
208211
209-
To upgrade a HA control plane to use the cloud controller manager, see [Migrate Replicated Control Plane To Use Cloud Controller Manager](/docs/tasks/administer-cluster/controller-manager-leader-migration/).
212+
To upgrade a HA control plane to use the cloud controller manager, see
213+
[Migrate Replicated Control Plane To Use Cloud Controller Manager](/docs/tasks/administer-cluster/controller-manager-leader-migration/).
210214
211215
Want to know how to implement your own cloud controller manager, or extend an existing project?
212216
213-
The cloud controller manager uses Go interfaces to allow implementations from any cloud to be plugged in. Specifically, it uses the `CloudProvider` interface defined in [`cloud.go`](https://github.com/kubernetes/cloud-provider/blob/release-1.21/cloud.go#L42-L69) from [kubernetes/cloud-provider](https://github.com/kubernetes/cloud-provider).
217+
The cloud controller manager uses Go interfaces to allow implementations from any cloud to be plugged in.
218+
Specifically, it uses the `CloudProvider` interface defined in
219+
[`cloud.go`](https://github.com/kubernetes/cloud-provider/blob/release-1.26/cloud.go#L43-L69) from
220+
[kubernetes/cloud-provider](https://github.com/kubernetes/cloud-provider).
221+
222+
The implementation of the shared controllers highlighted in this document (Node, Route, and Service),
223+
and some scaffolding along with the shared cloudprovider interface, is part of the Kubernetes core.
224+
Implementations specific to cloud providers are outside the core of Kubernetes and implement the
225+
`CloudProvider` interface.
214226

215-
The implementation of the shared controllers highlighted in this document (Node, Route, and Service), and some scaffolding along with the shared cloudprovider interface, is part of the Kubernetes core. Implementations specific to cloud providers are outside the core of Kubernetes and implement the `CloudProvider` interface.
227+
For more information about developing plugins, see
228+
[Developing Cloud Controller Manager](/docs/tasks/administer-cluster/developing-cloud-controller-manager/).
216229

217-
For more information about developing plugins, see [Developing Cloud Controller Manager](/docs/tasks/administer-cluster/developing-cloud-controller-manager/).

0 commit comments

Comments
 (0)