Fix links
This PR fixes some link errors as discovered by the `linkchecker.py` tool.pull/42642/head
parent
37fe70480b
commit
07f224714a
|
@ -64,7 +64,8 @@ To set the network location of a kube-apiserver that peers will use to proxy req
|
|||
`--peer-advertise-ip` and `--peer-advertise-port` command line arguments to kube-apiserver or specify
|
||||
these fields in the API server configuration file.
|
||||
If these flags are unspecified, peers will use the value from either `--advertise-address` or
|
||||
`--bind-address` command line argument to the kube-apiserver. If those too, are unset, the host's default interface is used.
|
||||
`--bind-address` command line argument to the kube-apiserver.
|
||||
If those too, are unset, the host's default interface is used.
|
||||
|
||||
## Mixed version proxying
|
||||
|
||||
|
@ -81,7 +82,8 @@ loads a special filter that does the following:
|
|||
### How it works under the hood
|
||||
|
||||
When an API Server receives a resource request, it first checks which API servers can
|
||||
serve the requested resource. This check happens using the internal `StorageVersion` API.
|
||||
serve the requested resource. This check happens using the internal
|
||||
[`StorageVersion` API](/docs/reference/generated/kubernetes-api/v{{< skew currentVersion >}}/#storageversioncondition-v1alpha1-internal-apiserver-k8s-io).
|
||||
|
||||
* If the resource is known to the API server that received the request
|
||||
(for example, `GET /api/v1/pods/some-pod`), the request is handled locally.
|
||||
|
@ -98,9 +100,11 @@ serve the requested resource. This check happens using the internal `StorageVers
|
|||
(`api/v1/batch` in this case) using the information in the fetched `StorageVersion` object.
|
||||
The _handling API server_ then proxies the request to one of the matching peer kube-apiservers
|
||||
that are aware of the requested resource.
|
||||
|
||||
* If there is no peer known for that API group / version / resource, the handling API server
|
||||
passes the request to its own handler chain which should eventually return a 404 ("Not Found") response.
|
||||
|
||||
* If the handling API server has identified and selected a peer API server, but that peer fails
|
||||
to respond (for reasons such as network connectivity issues, or a data race between the request
|
||||
being received and a controller registering the peer's info into the control plane), then the handling
|
||||
API server responds with a 503 (“Service Unavailable”) error.
|
||||
API server responds with a 503 ("Service Unavailable") error.
|
||||
|
|
|
@ -144,6 +144,6 @@ pie showData
|
|||
## {{% heading "whatsnext" %}}
|
||||
|
||||
* Read about [Service External Traffic Policy](/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip)
|
||||
* Read about [Connecting Applications with Services](/docs/concepts/services-networking/connect-applications-service/)
|
||||
* Read about [Connecting Applications with Services](/docs/tutorials/services/connect-applications-service/)
|
||||
* Read about [Services](/docs/concepts/services-networking/service/)
|
||||
|
||||
|
|
|
@ -63,6 +63,6 @@ Kubernetes considers all endpoints.
|
|||
|
||||
## {{% heading "whatsnext" %}}
|
||||
|
||||
* Read about [Topology Aware Hints](/docs/concepts/services-networking/topology-aware-hints)
|
||||
* Read about [Topology Aware Routing](/docs/concepts/services-networking/topology-aware-routing)
|
||||
* Read about [Service External Traffic Policy](/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip)
|
||||
* Follow the [Connecting Applications with Services](/docs/tutorials/services/connect-applications-service/) tutorial
|
||||
|
|
|
@ -401,7 +401,7 @@ have the exact font used in the original SVG.
|
|||
5. **Reviewing and testing**: After making the necessary translations and
|
||||
converting text to curves, save and review the updated SVG image to ensure
|
||||
the text is properly displayed and aligned. Check
|
||||
[Preview your changes locally](https://kubernetes.io/docs/contribute/new-content/open-a-pr/#preview-locally).
|
||||
[Preview your changes locally](/docs/contribute/new-content/open-a-pr/#preview-locally).
|
||||
|
||||
### Source files
|
||||
|
||||
|
|
|
@ -260,8 +260,9 @@ When a StatefulSet controller creates a Pod for the StatefulSet, it sets this la
|
|||
The value of the label is the ordinal index of the pod being created.
|
||||
|
||||
See [Pod Index Label](/docs/concepts/workloads/controllers/statefulset/#pod-index-label)
|
||||
in the StatefulSet topic for more details. Note the [PodIndexLabel](content/en/docs/reference/command-line-tools-reference/feature-gates.md) feature gate must be enabled
|
||||
for this label to be added to pods.
|
||||
in the StatefulSet topic for more details.
|
||||
Note the [PodIndexLabel](/docs/reference/command-line-tools-reference/feature-gates/)
|
||||
feature gate must be enabled for this label to be added to pods.
|
||||
|
||||
### cluster-autoscaler.kubernetes.io/safe-to-evict
|
||||
|
||||
|
@ -1100,8 +1101,9 @@ Used on: Pod
|
|||
The Job controller in the kube-controller-manager sets this as a label and annotation for Pods
|
||||
created with Indexed [completion mode](/docs/concepts/workloads/controllers/job/#completion-mode).
|
||||
|
||||
Note the [PodIndexLabel](content/en/docs/reference/command-line-tools-reference/feature-gates.md) feature gate must be enabled
|
||||
for this to be added as a pod **label**, otherwise it will just be an annotation.
|
||||
Note the [PodIndexLabel](/docs/reference/command-line-tools-reference/feature-gates/)
|
||||
feature gate must be enabled for this to be added as a pod **label**,
|
||||
otherwise it will just be an annotation.
|
||||
|
||||
### batch.kubernetes.io/cronjob-scheduled-timestamp
|
||||
|
||||
|
|
|
@ -32,13 +32,12 @@ clientConnection:
|
|||
kubeconfig: /etc/srv/kubernetes/kube-scheduler/kubeconfig
|
||||
```
|
||||
|
||||
{{< note >}}
|
||||
KubeSchedulerConfiguration [v1beta2](/docs/reference/config-api/kube-scheduler-config.v1beta2/)
|
||||
is deprecated in v1.25 and will be removed in v1.28.
|
||||
KubeSchedulerConfiguration [v1beta3](/docs/reference/config-api/kube-scheduler-config.v1beta3/)
|
||||
is deprecated in v1.26 and will be removed in v1.29.
|
||||
Please migrate KubeSchedulerConfiguration to [v1](/docs/reference/config-api/kube-scheduler-config.v1/).
|
||||
{{< /note >}}
|
||||
{{< note >}}
|
||||
KubeSchedulerConfiguration [v1beta3](/docs/reference/config-api/kube-scheduler-config.v1beta3/)
|
||||
is deprecated in v1.26 and will be removed in v1.29.
|
||||
Please migrate KubeSchedulerConfiguration to [v1](/docs/reference/config-api/kube-scheduler-config.v1/).
|
||||
{{< /note >}}
|
||||
|
||||
## Profiles
|
||||
|
||||
A scheduling Profile allows you to configure the different stages of scheduling
|
||||
|
|
|
@ -135,7 +135,7 @@ If your configuration is not using the latest version it is **recommended** that
|
|||
the [kubeadm config migrate](/docs/reference/setup-tools/kubeadm/kubeadm-config/) command.
|
||||
|
||||
For more information on the fields and usage of the configuration you can navigate to our
|
||||
[API reference page](/docs/reference/config-api/kubeadm-config.v1beta3/).
|
||||
[API reference page](/docs/reference/config-api/kubeadm-config.v1beta4/).
|
||||
|
||||
### Using kubeadm init with feature gates {#feature-gates}
|
||||
|
||||
|
@ -145,7 +145,7 @@ of the cluster. Feature gates are removed after a feature graduates to GA.
|
|||
|
||||
To pass a feature gate you can either use the `--feature-gates` flag for
|
||||
`kubeadm init`, or you can add items into the `featureGates` field when you pass
|
||||
a [configuration file](/docs/reference/config-api/kubeadm-config.v1beta3/#kubeadm-k8s-io-v1beta3-ClusterConfiguration)
|
||||
a [configuration file](/docs/reference/config-api/kubeadm-config.v1beta4/#kubeadm-k8s-io-v1beta4-ClusterConfiguration)
|
||||
using `--config`.
|
||||
|
||||
Passing [feature gates for core Kubernetes components](/docs/reference/command-line-tools-reference/feature-gates)
|
||||
|
@ -294,7 +294,8 @@ The following phase command can be used to re-upload the certificates after expi
|
|||
kubeadm init phase upload-certs --upload-certs --config=SOME_YAML_FILE
|
||||
```
|
||||
{{< note >}}
|
||||
A predefined `certificateKey` can be provided in `InitConfiguration` when passing the [configuration file](https://kubernetes.io/docs/reference/config-api/kubeadm-config.v1beta3/) with `--config`.
|
||||
A predefined `certificateKey` can be provided in `InitConfiguration` when passing the
|
||||
[configuration file](/docs/reference/config-api/kubeadm-config.v1beta4/) with `--config`.
|
||||
{{< /note >}}
|
||||
|
||||
If a predefined certificate key is not passed to `kubeadm init` and
|
||||
|
|
|
@ -323,8 +323,8 @@ Some Kubernetes resources define an additional runtime cost budget that bounds
|
|||
the execution of multiple expressions. If the sum total of the cost of
|
||||
expressions exceed the budget, execution of the expressions will be halted, and
|
||||
an error will result. For example the validation of a custom resource has a
|
||||
_per-validation_ runtime cost budget for all [Validation
|
||||
Rules](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#validation-rules)
|
||||
_per-validation_ runtime cost budget for all
|
||||
[Validation Rules](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#validation-rules)
|
||||
evaluated to validate the custom resource.
|
||||
|
||||
### Estimated cost limits
|
||||
|
|
|
@ -167,7 +167,10 @@ kubeadm certs renew all
|
|||
```
|
||||
|
||||
{{< note >}}
|
||||
Clusters built with kubeadm often copy the `admin.conf` certificate into `$HOME/.kube/config`, as instructed in [Creating a cluster with kubeadm](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/). On such a system, to update the contents of `$HOME/.kube/config` after renewing the `admin.conf` you must run the following commands:
|
||||
Clusters built with kubeadm often copy the `admin.conf` certificate into
|
||||
`$HOME/.kube/config`, as instructed in [Creating a cluster with kubeadm](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/).
|
||||
On such a system, to update the contents of `$HOME/.kube/config`
|
||||
after renewing the `admin.conf`, you must run the following commands:
|
||||
|
||||
```shell
|
||||
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
|
||||
|
|
|
@ -27,8 +27,7 @@ The Pod names will be suffixed with the node hostname with a leading hyphen.
|
|||
{{< note >}}
|
||||
If you are running clustered Kubernetes and are using static
|
||||
Pods to run a Pod on every node, you should probably be using a
|
||||
{{< glossary_tooltip text="DaemonSet" term_id="daemonset" >}}
|
||||
instead.
|
||||
{{< glossary_tooltip text="DaemonSet" term_id="daemonset" >}} instead.
|
||||
{{< /note >}}
|
||||
|
||||
{{< note >}}
|
||||
|
@ -54,11 +53,14 @@ Instructions for other distributions or Kubernetes installations may vary.
|
|||
|
||||
## Create a static pod {#static-pod-creation}
|
||||
|
||||
You can configure a static Pod with either a [file system hosted configuration file](/docs/tasks/configure-pod-container/static-pod/#configuration-files) or a [web hosted configuration file](/docs/tasks/configure-pod-container/static-pod/#pods-created-via-http).
|
||||
You can configure a static Pod with either a
|
||||
[file system hosted configuration file](/docs/tasks/configure-pod-container/static-pod/#configuration-files)
|
||||
or a [web hosted configuration file](/docs/tasks/configure-pod-container/static-pod/#pods-created-via-http).
|
||||
|
||||
### Filesystem-hosted static Pod manifest {#configuration-files}
|
||||
|
||||
Manifests are standard Pod definitions in JSON or YAML format in a specific directory. Use the `staticPodPath: <the directory>` field in the
|
||||
Manifests are standard Pod definitions in JSON or YAML format in a specific directory.
|
||||
Use the `staticPodPath: <the directory>` field in the
|
||||
[kubelet configuration file](/docs/reference/config-api/kubelet-config.v1beta1/),
|
||||
which periodically scans the directory and creates/deletes static Pods as YAML/JSON files appear/disappear there.
|
||||
Note that the kubelet will ignore files starting with dots when scanning the specified directory.
|
||||
|
@ -71,38 +73,42 @@ For example, this is how to start a simple web server as a static Pod:
|
|||
ssh my-node1
|
||||
```
|
||||
|
||||
2. Choose a directory, say `/etc/kubernetes/manifests` and place a web server Pod definition there, for example `/etc/kubernetes/manifests/static-web.yaml`:
|
||||
1. Choose a directory, say `/etc/kubernetes/manifests` and place a web server
|
||||
Pod definition there, for example `/etc/kubernetes/manifests/static-web.yaml`:
|
||||
|
||||
```shell
|
||||
# Run this command on the node where kubelet is running
|
||||
mkdir -p /etc/kubernetes/manifests/
|
||||
cat <<EOF >/etc/kubernetes/manifests/static-web.yaml
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: static-web
|
||||
labels:
|
||||
role: myrole
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: nginx
|
||||
ports:
|
||||
- name: web
|
||||
containerPort: 80
|
||||
protocol: TCP
|
||||
EOF
|
||||
```
|
||||
```shell
|
||||
# Run this command on the node where kubelet is running
|
||||
mkdir -p /etc/kubernetes/manifests/
|
||||
cat <<EOF >/etc/kubernetes/manifests/static-web.yaml
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: static-web
|
||||
labels:
|
||||
role: myrole
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: nginx
|
||||
ports:
|
||||
- name: web
|
||||
containerPort: 80
|
||||
protocol: TCP
|
||||
EOF
|
||||
```
|
||||
|
||||
3. Configure your kubelet on the node to use this directory by running it with `--pod-manifest-path=/etc/kubernetes/manifests/` argument. On Fedora edit `/etc/kubernetes/kubelet` to include this line:
|
||||
1. Configure your kubelet on the node to use this directory by running it with
|
||||
`--pod-manifest-path=/etc/kubernetes/manifests/` argument.
|
||||
On Fedora, edit `/etc/kubernetes/kubelet` to include this line:
|
||||
|
||||
```
|
||||
KUBELET_ARGS="--cluster-dns=10.254.0.10 --cluster-domain=kube.local --pod-manifest-path=/etc/kubernetes/manifests/"
|
||||
```
|
||||
|
||||
or add the `staticPodPath: <the directory>` field in the
|
||||
[kubelet configuration file](/docs/reference/config-api/kubelet-config.v1beta1/).
|
||||
|
||||
4. Restart the kubelet. On Fedora, you would run:
|
||||
1. Restart the kubelet. On Fedora, you would run:
|
||||
|
||||
```shell
|
||||
# Run this command on the node where the kubelet is running
|
||||
|
@ -138,18 +144,20 @@ To use this approach:
|
|||
protocol: TCP
|
||||
```
|
||||
|
||||
2. Configure the kubelet on your selected node to use this web manifest by running it with `--manifest-url=<manifest-url>`. On Fedora, edit `/etc/kubernetes/kubelet` to include this line:
|
||||
1. Configure the kubelet on your selected node to use this web manifest by
|
||||
running it with `--manifest-url=<manifest-url>`.
|
||||
On Fedora, edit `/etc/kubernetes/kubelet` to include this line:
|
||||
|
||||
```
|
||||
KUBELET_ARGS="--cluster-dns=10.254.0.10 --cluster-domain=kube.local --manifest-url=<manifest-url>"
|
||||
```
|
||||
```shell
|
||||
KUBELET_ARGS="--cluster-dns=10.254.0.10 --cluster-domain=kube.local --manifest-url=<manifest-url>"
|
||||
```
|
||||
|
||||
3. Restart the kubelet. On Fedora, you would run:
|
||||
1. Restart the kubelet. On Fedora, you would run:
|
||||
|
||||
```shell
|
||||
# Run this command on the node where the kubelet is running
|
||||
systemctl restart kubelet
|
||||
```
|
||||
```shell
|
||||
# Run this command on the node where the kubelet is running
|
||||
systemctl restart kubelet
|
||||
```
|
||||
|
||||
## Observe static pod behavior {#behavior-of-static-pods}
|
||||
|
||||
|
@ -186,7 +194,8 @@ static-web 1/1 Running 0 2m
|
|||
```
|
||||
|
||||
{{< note >}}
|
||||
Make sure the kubelet has permission to create the mirror Pod in the API server. If not, the creation request is rejected by the API server.
|
||||
Make sure the kubelet has permission to create the mirror Pod in the API server.
|
||||
If not, the creation request is rejected by the API server.
|
||||
{{< /note >}}
|
||||
|
||||
{{< glossary_tooltip term_id="label" text="Labels" >}} from the static Pod are
|
||||
|
@ -221,6 +230,7 @@ crictl stop 129fd7d382018 # replace with the ID of your container
|
|||
sleep 20
|
||||
crictl ps
|
||||
```
|
||||
|
||||
```console
|
||||
CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID
|
||||
89db4553e1eeb docker.io/library/nginx@sha256:... 19 seconds ago Running web 1 34533c6729106
|
||||
|
@ -231,16 +241,21 @@ Once you identify the right container, you can get the logs for that container w
|
|||
# Run these commands on the node where the container is running
|
||||
crictl logs <container_id>
|
||||
```
|
||||
|
||||
```console
|
||||
10.240.0.48 - - [16/Nov/2022:12:45:49 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0" "-"
|
||||
10.240.0.48 - - [16/Nov/2022:12:45:50 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0" "-"
|
||||
10.240.0.48 - - [16/Nove/2022:12:45:51 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0" "-"
|
||||
```
|
||||
To find more about how to debug using `crictl`, please visit [_Debugging Kubernetes nodes with crictl_](https://kubernetes.io/docs/tasks/debug/debug-cluster/crictl/)
|
||||
|
||||
To find more about how to debug using `crictl`, please visit
|
||||
[_Debugging Kubernetes nodes with crictl_](/docs/tasks/debug/debug-cluster/crictl/).
|
||||
|
||||
## Dynamic addition and removal of static pods
|
||||
|
||||
The running kubelet periodically scans the configured directory (`/etc/kubernetes/manifests` in our example) for changes and adds/removes Pods as files appear/disappear in this directory.
|
||||
The running kubelet periodically scans the configured directory
|
||||
(`/etc/kubernetes/manifests` in our example) for changes and
|
||||
adds/removes Pods as files appear/disappear in this directory.
|
||||
|
||||
```shell
|
||||
# This assumes you are using filesystem-hosted static Pod configuration
|
||||
|
|
|
@ -8,12 +8,10 @@ weight: 10
|
|||
This tutorial applies only for new clusters.
|
||||
{{% /alert %}}
|
||||
|
||||
Pod Security admission (PSA) is enabled by default in v1.23 and later, as it has
|
||||
[graduated to beta](/blog/2021/12/09/pod-security-admission-beta/).
|
||||
Pod Security
|
||||
is an admission controller that carries out checks against the Kubernetes
|
||||
Pod Security is an admission controller that carries out checks against the Kubernetes
|
||||
[Pod Security Standards](/docs/concepts/security/pod-security-standards/) when new pods are
|
||||
created. This tutorial shows you how to enforce the `baseline` Pod Security
|
||||
created. It is a feature GA'ed in v1.25.
|
||||
This tutorial shows you how to enforce the `baseline` Pod Security
|
||||
Standard at the cluster level which applies a standard configuration
|
||||
to all namespaces in a cluster.
|
||||
|
||||
|
|
|
@ -8,11 +8,10 @@ weight: 20
|
|||
This tutorial applies only for new clusters.
|
||||
{{% /alert %}}
|
||||
|
||||
Pod Security admission (PSA) is enabled by default in v1.23 and later, as it
|
||||
[graduated to beta](/blog/2021/12/09/pod-security-admission-beta/). Pod Security Admission
|
||||
is an admission controller that applies
|
||||
Pod Security Admission is an admission controller that applies
|
||||
[Pod Security Standards](/docs/concepts/security/pod-security-standards/)
|
||||
when pods are created. In this tutorial, you will enforce the `baseline` Pod Security Standard,
|
||||
when pods are created. It is a feature GA'ed in v1.25.
|
||||
In this tutorial, you will enforce the `baseline` Pod Security Standard,
|
||||
one namespace at a time.
|
||||
|
||||
You can also apply Pod Security Standards to multiple namespaces at once at the cluster
|
||||
|
|
Loading…
Reference in New Issue