From cf858d854fe68c4f6afad23d21b69bef3fbdafdb Mon Sep 17 00:00:00 2001
From: Riita <42636694+riita10069@users.noreply.github.com>
Date: Wed, 20 Oct 2021 19:17:34 +0900
Subject: [PATCH 0001/1077] Update nodes.md
---
.../ja/docs/concepts/architecture/nodes.md | 131 +++++++++++++-----
1 file changed, 97 insertions(+), 34 deletions(-)
diff --git a/content/ja/docs/concepts/architecture/nodes.md b/content/ja/docs/concepts/architecture/nodes.md
index bf5fa1acb9..ec52ee7b1b 100644
--- a/content/ja/docs/concepts/architecture/nodes.md
+++ b/content/ja/docs/concepts/architecture/nodes.md
@@ -137,7 +137,7 @@ kubectl describe node <ノード名をここに挿入>
`SchedulingDisabled`はKubernetesのAPIにおけるConditionではありません;その代わり、cordonされたノードはUnschedulableとしてマークされます。
{{< /note >}}
-ノードのConditionはJSONオブジェクトで表現されます。例えば、正常なノードの場合は以下のような構造体が表示されます。
+Nodeの状態は、Nodeリソースの`.status`の一部として表現されます。例えば、正常なノードの場合は以下のようなjson構造が表示されます。
```json
"conditions": [
@@ -173,36 +173,25 @@ CapacityとAllocatableについて深く知りたい場合は、ノード上で
### Info {#info}
カーネルのバージョン、Kubernetesのバージョン(kubeletおよびkube-proxyのバージョン)、(使用されている場合)Dockerのバージョン、OS名など、ノードに関する一般的な情報です。
-この情報はノードからkubeletを通じて取得されます。
+この情報はノードからkubeletを通じて取得され、Kubernetes APIに公開されます。
-## 管理 {#management}
-[Pod](/ja/docs/concepts/workloads/pods/pod/)や[Service](/ja/docs/concepts/services-networking/service/)と違い、ノードは本質的にはKubernetesによって作成されません。GCPのようなクラウドプロバイダーによって外的に作成されるか、VMや物理マシンのプールに存在するものです。そのため、Kubernetesがノードを作成すると、そのノードを表すオブジェクトが作成されます。作成後、Kubernetesはそのノードが有効かどうかを確認します。 たとえば、次の内容からノードを作成しようとしたとします:
+## ハートビート
+ハートビートは、Kubernetesノードから送信され、ノードが利用可能か判断するのに役立ちます。
+以下の2つのハートビートがあります:
+* ノードの`.status`の更新
+* [Lease object](/docs/reference/generated/kubernetes-api/{{< latest-version >}}#lease-v1-coordination-k8s-io)です。
+各ノードは`kube-node-lease`という{{< glossary_tooltip term_id="namespace" text="namespace">}}に関連したLeaseオブジェクトを持ちます。
+Leaseは軽量なリソースで、クラスターのスケールに応じてノードのハートビートにおけるパフォーマンスを改善します。
-```json
-{
- "kind": "Node",
- "apiVersion": "v1",
- "metadata": {
- "name": "10.240.79.157",
- "labels": {
- "name": "my-first-k8s-node"
- }
- }
-}
-```
+kubeletが`NodeStatus`とLeaseオブジェクトの作成および更新を担当します。
-Kubernetesは内部的にNodeオブジェクトを作成し、 `metadata.name`フィールドに基づくヘルスチェックによってノードを検証します。ノードが有効な場合、つまり必要なサービスがすべて実行されている場合は、Podを実行する資格があります。それ以外の場合、該当ノードが有効になるまではいかなるクラスターの活動に対しても無視されます。
-Nodeオブジェクトの名前は有効な[DNSサブドメイン名](/ja/docs/concepts/overview/working-with-objects/names#dns-subdomain-names)である必要があります。
+- kubeletは、ステータスに変化があったり、設定した間隔の間に更新がない時に`NodeStatus`を更新します。`NodeStatus`更新のデフォルト間隔は5分です。(到達不能の場合のデフォルトタイムアウトである40秒よりもはるかに長いです)
+- kubeletは10秒間隔(デフォルトの更新間隔)でLeaseオブジェクトの生成と更新を実施します。Leaseの更新は`NodeStatus`の更新とは独立されて行われます。Leaseの更新が失敗した場合、kubeletは200ミリ秒から始まり7秒を上限とした指数バックオフでリトライします。
-{{< note >}}
-Kubernetesは無効なノードのためにオブジェクトを保存し、それをチェックし続けます。
-このプロセスを停止するには、Nodeオブジェクトを明示的に削除する必要があります。
-{{< /note >}}
-現在、Kubernetesのノードインターフェースと相互作用する3つのコンポーネントがあります。ノードコントローラー、kubelet、およびkubectlです。
-### ノードコントローラー
+## ノードコントローラー
ノード{{< glossary_tooltip text="コントローラー" term_id="controller" >}}は、ノードのさまざまな側面を管理するKubernetesのコントロールプレーンコンポーネントです。
@@ -216,16 +205,6 @@ Kubernetesは無効なノードのためにオブジェクトを保存し、そ
ノードが到達不能(例えば、ノードがダウンしているなどので理由で、ノードコントローラーがハートビートの受信を停止した場合)になると、ノードコントローラーは、NodeStatusのNodeReady conditionをConditionUnknownに変更する役割があります。その後も該当ノードが到達不能のままであった場合、Graceful Terminationを使って全てのPodを退役させます。デフォルトのタイムアウトは、ConditionUnknownの報告を開始するまで40秒、その後Podの追い出しを開始するまで5分に設定されています。
ノードコントローラーは、`--node-monitor-period`に設定された秒数ごとに各ノードの状態をチェックします。
-#### ハートビート
-ハートビートは、Kubernetesノードから送信され、ノードが利用可能か判断するのに役立ちます。
-2つのハートビートがあります:`NodeStatus`の更新と[Lease object](/docs/reference/generated/kubernetes-api/{{< latest-version >}}#lease-v1-coordination-k8s-io)です。
-各ノードは`kube-node-lease`という{{< glossary_tooltip term_id="namespace" text="namespace">}}に関連したLeaseオブジェクトを持ちます。
-Leaseは軽量なリソースで、クラスターのスケールに応じてノードのハートビートにおけるパフォーマンスを改善します。
-
-kubeletが`NodeStatus`とLeaseオブジェクトの作成および更新を担当します。
-
-- kubeletは、ステータスに変化があったり、設定した間隔の間に更新がない時に`NodeStatus`を更新します。`NodeStatus`更新のデフォルト間隔は5分です。(到達不能の場合のデフォルトタイムアウトである40秒よりもはるかに長いです)
-- kubeletは10秒間隔(デフォルトの更新間隔)でLeaseオブジェクトの生成と更新を実施します。Leaseの更新は`NodeStatus`の更新とは独立されて行われます。Leaseの更新が失敗した場合、kubeletは200ミリ秒から始まり7秒を上限とした指数バックオフでリトライします。
#### 信頼性
@@ -269,6 +248,90 @@ Pod以外のプロセス用にリソースを明示的に予約したい場合
kubeletはリソースの割当を決定する際にトポロジーのヒントを利用できます。
詳細は、[ノードのトポロジー管理ポリシーを制御する](/docs/tasks/administer-cluster/topology-manager/)を参照してください。
+## Graceful node shutdown {#graceful-node-shutdown}
+
+{{< feature-state state="beta" for_k8s_version="v1.21" >}}
+
+kubeletは、ノードのシステムシャットダウンを検出すると、ノード上で動作しているポッドを終了させます。
+
+Kubelet は、ノードのシャットダウン時に、ポッドが通常の[通常のポッド終了プロセス](/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination)に従うようにします。
+
+Graceful node shutdownはsystemdに依存しているため、[systemd inhibitor locks](https://www.freedesktop.org/wiki/Software/systemd/inhibit/)を
+利用してノードのシャットダウンを一定時間遅らせることができます。
+
+Graceful node shutdownは、v1.21でデフォルトで有効になっている`GracefulNodeShutdown` [feature gate](/ja/docs/reference/command-line-tools-reference/feature-gates/)で制御されます。
+
+なお、デフォルトでは、後述の設定オプション`ShutdownGracePeriod`および`ShutdownGracePeriodCriticalPods`の両方がゼロに設定されているため、Graceful node shutdownは有効になりません。この機能を有効にするには、この2つのkubeletの設定を適切に設定し、ゼロ以外の値を設定する必要があります。
+
+Graceful shutdownには, kubeletは以下の2段階でPodを終了させます。
+
+1. そのノード上で動作している通常のPodを終了させます。
+2. そのノード上で動作している[critical pods](/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/#marking-pod-as-critical)を終了させます。
+
+Graceful node shutdownには、2つの[`KubeletConfiguration`](/docs/tasks/administer-cluster/kubelet-config-file/)オプションを設定します。:
+* `ShutdownGracePeriod`:
+ * ノードがシャットダウンを遅らせるべき合計期間を指定します。これは、通常のPodと[critical pods](/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/#marking-pod-as-critical)の両方のPod終了の合計猶予期間です。
+* `ShutdownGracePeriodCriticalPods`:
+ * ノードのシャットダウン時に[critical pods](/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/#marking-pod-as-critical)を終了させるために使用する期間を指定します。この値は、ShutdownGracePeriodよりも小さくする必要があります。
+
+例えば、`ShutdownGracePeriod=30s`、`ShutdownGracePeriodCriticalPods=10s`とすると、
+kubeletはノードのシャットダウンを30秒遅らせます。シャットダウンの間、最初の20(30-10)秒は通常のポッドを優雅に終了させるために確保され、
+残りの10秒は重要なポッドを終了させるために確保されることになります。
+
+{{< note >}}
+Graceful node shutdown中にPodが退避された場合、それらのPodの`.status`は`Failed`になります。
+`kubectl get pods`を実行すると、退避させられたPodのステータスが `Shutdown` と表示されます。
+また、`kubectl describe pod`を実行すると、ノードのシャットダウンのためにPodが退避されたことがわかります。
+
+```
+Status: Failed
+Reason: Shutdown
+Message: Node is shutting, evicting pods
+```
+
+失敗したポッドオブジェクトは、明示的に削除されるか、[GCによってクリーンアップ](/docs/concepts/workloads/pods/pod-lifecycle/#pod-garbage-collection)されるまで保存されます。
+これは、ノードが突然終了した場合とは異なった振る舞いです。
+
+{{< /note >}}
+
+## Swap memory management {#swap-memory}
+
+{{< feature-state state="alpha" for_k8s_version="v1.22" >}}
+
+Kubernetes 1.22以前では、ノードはスワップメモリの使用をサポートしておらず、ノード上でスワップが検出された場合、
+kubeletはデフォルトで起動に失敗していました。1.22以降では、スワップメモリのサポートをノードごとに有効にすることができます。
+
+
+
+ノードでスワップを有効にするには、kubelet の `NodeSwap` [フィーチャーゲート](/ja/docs/reference/command-line-tools-reference/feature-gates/)を有効にし、
+`--fail-swap-on`コマンドラインフラグまたは`failSwapOn`[KubeletConfiguration](/docs/reference/config-api/kubelet-config.v1beta1/#kubelet-config-k8s-io-v1beta1-KubeletConfiguration)を false に設定する必要があります。
+
+
+ユーザーはオプションで、ノードがスワップメモリをどのように使用するかを指定するために、`memorySwap.swapBehavior`を設定することもできます。ノードがスワップメモリをどのように使用するかを指定します。例えば、以下のようになります。
+
+```yaml
+memorySwap:
+ swapBehavior: LimitedSwap
+```
+
+swapBehaviorで使用できる設定オプションは以下の通りです。:
+- `LimitedSwap`: Kubernetesのワークロードが、使用できるスワップ量に制限を設けます。Kubernetesが管理していないノード上のワークロードは、依然としてスワップを使用できます。
+- `UnlimitedSwap`: Kubernetesのワークロードが使用できるスワップ量に制限を設けません。システムの限界まで、要求されただけのスワップメモリを使用することができます。
+
+`memorySwap`の設定が指定されておらず、[フィーチャーゲート](/ja/docs/reference/command-line-tools-reference/feature-gates/)が有効な場合、
+デフォルトのkubeletは`LimitedSwap`の設定と同じ動作を適用します。
+
+LimitedSwap`設定の動作は、ノードがコントロールグループ(「cgroups」とも呼ばれる)のv1とv2のどちらで動作しているかによって異なります。
+
+Kubernetesのワークロードでは、メモリとスワップを組み合わせて使用することができ、ポッドのメモリ制限が設定されている場合はその制限まで使用できます。
+- **cgroupsv1:** Kubernetesのワークロードは、メモリとスワップを組み合わせて使用することができ、ポッドのメモリ制限が設定されている場合はその制限まで使用できます。
+- **cgroupsv2:** Kubernetesのワークロードは、スワップメモリを使用できません。
+
+詳しくは、[KEP-2400](https://github.com/kubernetes/enhancements/issues/2400)と
+[design proposal](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/2400-node-swap/README.md)
+をご覧いただき、テストにご協力、ご意見をお聞かせください。
+
+
## {{% heading "whatsnext" %}}
* [ノードコンポーネント](/ja/docs/concepts/overview/components/#node-components)について学習する。
From 2fdb8e2c1753e9bb102eb48c0c11c3848be5984e Mon Sep 17 00:00:00 2001
From: Riita <42636694+riita10069@users.noreply.github.com>
Date: Wed, 20 Oct 2021 23:10:30 +0900
Subject: [PATCH 0002/1077] Update pod-security-standards.md
---
.../security/pod-security-standards.md | 163 +++++++++++++++---
1 file changed, 138 insertions(+), 25 deletions(-)
diff --git a/content/ja/docs/concepts/security/pod-security-standards.md b/content/ja/docs/concepts/security/pod-security-standards.md
index 7b0f16dff1..dd3f91e79f 100644
--- a/content/ja/docs/concepts/security/pod-security-standards.md
+++ b/content/ja/docs/concepts/security/pod-security-standards.md
@@ -49,6 +49,25 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
項目 |
ポリシー |
+
+ | ホストのプロセス |
+
+ Windows ポッドは、Windows ノードへの特権的なアクセスを可能にするHostProcessコンテナを実行する機能を提供します。ベースラインポリシーでは、ホストへの特権的なアクセスは禁止されています。HostProcessポッドは、Kubernetes v1.22時点ではアルファ版の機能です。
+ ホストのネームスペースの共有は無効化すべきです。
+ 制限されるフィールド
+
+ spec.securityContext.windowsOptions.hostProcess
+ spec.containers[*].securityContext.windowsOptions.hostProcess
+ spec.initContainers[*].securityContext.windowsOptions.hostProcess
+ spec.ephemeralContainers[*].securityContext.windowsOptions.hostProcess
+
+ 認められる値
+
+ - Undefined/nil
+ false
+
+ |
+
| ホストのネームスペース |
@@ -57,7 +76,7 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
spec.hostNetwork
spec.hostPID
spec.hostIPC
- 認められる値: false
+ 認められる値: false, Undefined/nil
|
@@ -67,6 +86,7 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
制限されるフィールド:
spec.containers[*].securityContext.privileged
spec.initContainers[*].securityContext.privileged
+ spec.ephemeralContainers[*].securityContext.privileged
認められる値: false, undefined/nil
@@ -77,7 +97,22 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
制限されるフィールド:
spec.containers[*].securityContext.capabilities.add
spec.initContainers[*].securityContext.capabilities.add
-
認められる値: 空 (または既知のリストに限定)
+ spec.ephemeralContainers[*].securityContext.capabilities.add
+
認められる値:
+ Undefined/nil
+ AUDIT_WRITE
+ CHOWN
+ DAC_OVERRIDE
+ FOWNER
+ FSETID
+ KILL
+ MKNOD
+ NET_BIND_SERVICE
+ SETFCAP
+ SETGID
+ SETPCAP
+ SETUID
+ SYS_CHROOT
@@ -96,6 +131,7 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
制限されるフィールド:
spec.containers[*].ports[*].hostPort
spec.initContainers[*].ports[*].hostPort
+ spec.ephemeralContainers[*].ports[*].hostPort
認められる値: 0, undefined (または既知のリストに限定)
@@ -105,7 +141,7 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
サポートされるホストでは、AppArmorの'runtime/default'プロファイルがデフォルトで適用されます。デフォルトのポリシーはポリシーの上書きや無効化を防ぎ、許可されたポリシーのセットを上書きできないよう制限すべきです。
制限されるフィールド:
metadata.annotations['container.apparmor.security.beta.kubernetes.io/*']
-
認められる値: 'runtime/default', undefined
+
認められる値: 'runtime/default', undefined, localhost/*
@@ -116,7 +152,24 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
spec.securityContext.seLinuxOptions
spec.containers[*].securityContext.seLinuxOptions
spec.initContainers[*].securityContext.seLinuxOptions
+ spec.ephemeralContainers[*].securityContext.seLinuxOptions.type
認められる値: undefined/nil
+ Undefined/""
+ container_t
+ container_init_t
+ container_kvm_t
+
+
制限されるフィールド:
+ spec.securityContext.seLinuxOptions.user
+ spec.containers[*].securityContext.seLinuxOptions.user
+ spec.initContainers[*].securityContext.seLinuxOptions.user
+ spec.ephemeralContainers[*].securityContext.seLinuxOptions.user
+ spec.securityContext.seLinuxOptions.role
+ spec.containers[*].securityContext.seLinuxOptions.role
+ spec.initContainers[*].securityContext.seLinuxOptions.role
+ spec.ephemeralContainers[*].securityContext.seLinuxOptions.role
+
認められる値: undefined/nil
+ Undefined/""
@@ -126,9 +179,29 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
制限されるフィールド:
spec.containers[*].securityContext.procMount
spec.initContainers[*].securityContext.procMount
+ spec.ephemeralContainers[*].securityContext.procMount
認められる値: undefined/nil, 'Default'
+
+ | Seccomp |
+
+ Seccompプロファイルを明示的にUnconfinedに設定することはできません。
+ Restricted Fields
+
+ spec.securityContext.seccompProfile.type
+ spec.containers[*].securityContext.seccompProfile.type
+ spec.initContainers[*].securityContext.seccompProfile.type
+ spec.ephemeralContainers[*].securityContext.seccompProfile.type
+
+ Allowed Values
+
+ - Undefined/nil
+ RuntimeDefault
+ Localhost
+
+ |
+
| Sysctl |
@@ -169,27 +242,27 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
|
HostPathボリュームの制限に加え、制限プロファイルではコアでない種類のボリュームの利用をPersistentVolumeにより定義されたものに限定します。
制限されるフィールド:
- spec.volumes[*].hostPath
- spec.volumes[*].gcePersistentDisk
- spec.volumes[*].awsElasticBlockStore
- spec.volumes[*].gitRepo
- spec.volumes[*].nfs
- spec.volumes[*].iscsi
- spec.volumes[*].glusterfs
- spec.volumes[*].rbd
- spec.volumes[*].flexVolume
- spec.volumes[*].cinder
- spec.volumes[*].cephFS
- spec.volumes[*].flocker
- spec.volumes[*].fc
- spec.volumes[*].azureFile
- spec.volumes[*].vsphereVolume
- spec.volumes[*].quobyte
- spec.volumes[*].azureDisk
- spec.volumes[*].portworxVolume
- spec.volumes[*].scaleIO
- spec.volumes[*].storageos
- spec.volumes[*].csi
+ spec.volumes[*].hostPath
+ spec.volumes[*].gcePersistentDisk
+ spec.volumes[*].awsElasticBlockStore
+ spec.volumes[*].gitRepo
+ spec.volumes[*].nfs
+ spec.volumes[*].iscsi
+ spec.volumes[*].glusterfs
+ spec.volumes[*].rbd
+ spec.volumes[*].flexVolume
+ spec.volumes[*].cinder
+ spec.volumes[*].cephfs
+ spec.volumes[*].flocker
+ spec.volumes[*].fc
+ spec.volumes[*].azureFile
+ spec.volumes[*].vsphereVolume
+ spec.volumes[*].quobyte
+ spec.volumes[*].azureDisk
+ spec.volumes[*].portworxVolume
+ spec.volumes[*].scaleIO
+ spec.volumes[*].storageos
+ spec.volumes[*].photonPersistentDisk
認められる値: undefined/nil
|
@@ -200,6 +273,7 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
制限されるフィールド:
spec.containers[*].securityContext.allowPrivilegeEscalation
spec.initContainers[*].securityContext.allowPrivilegeEscalation
+ spec.ephemeralContainers[*].securityContext.allowPrivilegeEscalation
認められる値: false
@@ -211,6 +285,7 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
spec.securityContext.runAsNonRoot
spec.containers[*].securityContext.runAsNonRoot
spec.initContainers[*].securityContext.runAsNonRoot
+ spec.ephemeralContainers[*].securityContext.runAsNonRoot
認められる値: true
@@ -242,6 +317,36 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
undefined / nil
+
+ | Capabilities (v1.22+) |
+
+
+ コンテナはすべてのケイパビリティを削除する必要があり、NET_BIND_SERVICEケイパビリティを追加することだけが許可されています。
+
+ Restricted Fields
+
+ spec.containers[*].securityContext.capabilities.drop
+ spec.initContainers[*].securityContext.capabilities.drop
+ spec.ephemeralContainers[*].securityContext.capabilities.drop
+
+ Allowed Values
+
+ - Any list of capabilities that includes
ALL
+
+
+ Restricted Fields
+
+ spec.containers[*].securityContext.capabilities.add
+ spec.initContainers[*].securityContext.capabilities.add
+ spec.ephemeralContainers[*].securityContext.capabilities.add
+
+ Allowed Values
+
+ - Undefined/nil
+ NET_BIND_SERVICE
+
+ |
+
@@ -281,9 +386,17 @@ Gatekeeper](https://github.com/open-policy-agent/gatekeeper)があります。
### WindowsのPodにはどのプロファイルを適用すればよいですか?
Kubernetesでは、Linuxベースのワークロードと比べてWindowsの使用は制限や差異があります。
-特に、PodのSecurityContextフィールドは[Windows環境では効果がありません](/docs/setup/production-environment/windows/intro-windows-in-kubernetes/#v1-podsecuritycontext)。
+特に、PodのSecurityContextフィールドは[Windows環境では効果がありません](/ja/docs/setup/production-environment/windows/intro-windows-in-kubernetes/#v1-podsecuritycontext)。
したがって、現段階では標準化されたセキュリティポリシーは存在しません。
+Windows Podに制限付きプロファイルを適用すると、実行時にPodに影響が出る場合があります。
+制限付きプロファイルでは、Linux 固有の制限 (seccomp プロファイルや特権昇格の不許可など) を適用する必要があります。
+kubelet および/またはそのコンテナランタイムがこれらの Linux 固有の値を無視した場合、Windows Podは制限付きプロファイル内で正常に動作します。
+ただし、強制力がないため、Windows コンテナを使用するPodについては、ベースラインプロファイルと比較して追加の制限はありません。
+
+HostProcess Podを作成するための HostProcess フラグの使用は、特権的なポリシーに沿ってのみ行われるべきです。
+Windows HostProcess Podの作成は、ベースラインおよび制限されたポリシーの下でブロックされているため、いかなる HostProcess Podも特権的であるとみなされるべきです。
+
### サンドボックス化されたPodはどのように扱えばよいでしょうか?
現在のところ、Podがサンドボックス化されていると見なされるかどうかを制御できるAPI標準はありません。
From 79a6b1972ff56469407e476e3b7955b7931fb3e8 Mon Sep 17 00:00:00 2001
From: Riita <42636694+riita10069@users.noreply.github.com>
Date: Sat, 30 Oct 2021 00:29:55 +0900
Subject: [PATCH 0003/1077] Update nodes.md
---
content/ja/docs/concepts/architecture/nodes.md | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/content/ja/docs/concepts/architecture/nodes.md b/content/ja/docs/concepts/architecture/nodes.md
index ec52ee7b1b..e1dcea5be5 100644
--- a/content/ja/docs/concepts/architecture/nodes.md
+++ b/content/ja/docs/concepts/architecture/nodes.md
@@ -248,7 +248,7 @@ Pod以外のプロセス用にリソースを明示的に予約したい場合
kubeletはリソースの割当を決定する際にトポロジーのヒントを利用できます。
詳細は、[ノードのトポロジー管理ポリシーを制御する](/docs/tasks/administer-cluster/topology-manager/)を参照してください。
-## Graceful node shutdown {#graceful-node-shutdown}
+## Graceful Node Shutdown {#graceful-node-shutdown}
{{< feature-state state="beta" for_k8s_version="v1.21" >}}
@@ -256,10 +256,10 @@ kubeletは、ノードのシステムシャットダウンを検出すると、
Kubelet は、ノードのシャットダウン時に、ポッドが通常の[通常のポッド終了プロセス](/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination)に従うようにします。
-Graceful node shutdownはsystemdに依存しているため、[systemd inhibitor locks](https://www.freedesktop.org/wiki/Software/systemd/inhibit/)を
+Graceful Node Shutdownはsystemdに依存しているため、[systemd inhibitor locks](https://www.freedesktop.org/wiki/Software/systemd/inhibit/)を
利用してノードのシャットダウンを一定時間遅らせることができます。
-Graceful node shutdownは、v1.21でデフォルトで有効になっている`GracefulNodeShutdown` [feature gate](/ja/docs/reference/command-line-tools-reference/feature-gates/)で制御されます。
+Graceful Node Shutdownは、v1.21でデフォルトで有効になっている`GracefulNodeShutdown` [feature gate](/ja/docs/reference/command-line-tools-reference/feature-gates/)で制御されます。
なお、デフォルトでは、後述の設定オプション`ShutdownGracePeriod`および`ShutdownGracePeriodCriticalPods`の両方がゼロに設定されているため、Graceful node shutdownは有効になりません。この機能を有効にするには、この2つのkubeletの設定を適切に設定し、ゼロ以外の値を設定する必要があります。
@@ -268,7 +268,7 @@ Graceful shutdownには, kubeletは以下の2段階でPodを終了させます
1. そのノード上で動作している通常のPodを終了させます。
2. そのノード上で動作している[critical pods](/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/#marking-pod-as-critical)を終了させます。
-Graceful node shutdownには、2つの[`KubeletConfiguration`](/docs/tasks/administer-cluster/kubelet-config-file/)オプションを設定します。:
+Graceful Node Shutdownには、2つの[`KubeletConfiguration`](/docs/tasks/administer-cluster/kubelet-config-file/)オプションを設定します。:
* `ShutdownGracePeriod`:
* ノードがシャットダウンを遅らせるべき合計期間を指定します。これは、通常のPodと[critical pods](/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/#marking-pod-as-critical)の両方のPod終了の合計猶予期間です。
* `ShutdownGracePeriodCriticalPods`:
@@ -279,7 +279,7 @@ kubeletはノードのシャットダウンを30秒遅らせます。シャッ
残りの10秒は重要なポッドを終了させるために確保されることになります。
{{< note >}}
-Graceful node shutdown中にPodが退避された場合、それらのPodの`.status`は`Failed`になります。
+Graceful Node Shutdown中にPodが退避された場合、それらのPodの`.status`は`Failed`になります。
`kubectl get pods`を実行すると、退避させられたPodのステータスが `Shutdown` と表示されます。
また、`kubectl describe pod`を実行すると、ノードのシャットダウンのためにPodが退避されたことがわかります。
@@ -294,7 +294,7 @@ Message: Node is shutting, evicting pods
{{< /note >}}
-## Swap memory management {#swap-memory}
+## スワップメモリの管理 {#swap-memory}
{{< feature-state state="alpha" for_k8s_version="v1.22" >}}
@@ -321,7 +321,7 @@ swapBehaviorで使用できる設定オプションは以下の通りです。:
`memorySwap`の設定が指定されておらず、[フィーチャーゲート](/ja/docs/reference/command-line-tools-reference/feature-gates/)が有効な場合、
デフォルトのkubeletは`LimitedSwap`の設定と同じ動作を適用します。
-LimitedSwap`設定の動作は、ノードがコントロールグループ(「cgroups」とも呼ばれる)のv1とv2のどちらで動作しているかによって異なります。
+`LimitedSwap`設定の動作は、ノードがコントロールグループ(「cgroups」とも呼ばれる)のv1とv2のどちらで動作しているかによって異なります。
Kubernetesのワークロードでは、メモリとスワップを組み合わせて使用することができ、ポッドのメモリ制限が設定されている場合はその制限まで使用できます。
- **cgroupsv1:** Kubernetesのワークロードは、メモリとスワップを組み合わせて使用することができ、ポッドのメモリ制限が設定されている場合はその制限まで使用できます。
From 54cd481f36cd36a4c2270b37eccfcd34e139a66e Mon Sep 17 00:00:00 2001
From: Riita <42636694+riita10069@users.noreply.github.com>
Date: Sat, 30 Oct 2021 00:32:32 +0900
Subject: [PATCH 0004/1077] Update nodes.md
---
content/ja/docs/concepts/architecture/nodes.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ja/docs/concepts/architecture/nodes.md b/content/ja/docs/concepts/architecture/nodes.md
index e1dcea5be5..000c4944e6 100644
--- a/content/ja/docs/concepts/architecture/nodes.md
+++ b/content/ja/docs/concepts/architecture/nodes.md
@@ -248,7 +248,7 @@ Pod以外のプロセス用にリソースを明示的に予約したい場合
kubeletはリソースの割当を決定する際にトポロジーのヒントを利用できます。
詳細は、[ノードのトポロジー管理ポリシーを制御する](/docs/tasks/administer-cluster/topology-manager/)を参照してください。
-## Graceful Node Shutdown {#graceful-node-shutdown}
+## ノードの正常終了 {#graceful-node-shutdown}
{{< feature-state state="beta" for_k8s_version="v1.21" >}}
From 7d24269a648b223a693743add270714cd9a0d977 Mon Sep 17 00:00:00 2001
From: Riita <42636694+riita10069@users.noreply.github.com>
Date: Tue, 16 Nov 2021 19:32:40 +0900
Subject: [PATCH 0005/1077] Update pod-security-standards.md
---
.../security/pod-security-standards.md | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/content/ja/docs/concepts/security/pod-security-standards.md b/content/ja/docs/concepts/security/pod-security-standards.md
index dd3f91e79f..3a7bf61003 100644
--- a/content/ja/docs/concepts/security/pod-security-standards.md
+++ b/content/ja/docs/concepts/security/pod-security-standards.md
@@ -52,7 +52,7 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
| ホストのプロセス |
- Windows ポッドは、Windows ノードへの特権的なアクセスを可能にするHostProcessコンテナを実行する機能を提供します。ベースラインポリシーでは、ホストへの特権的なアクセスは禁止されています。HostProcessポッドは、Kubernetes v1.22時点ではアルファ版の機能です。
+ Windows Podは、Windowsノードへの特権的なアクセスを可能にするHostProcessコンテナを実行する機能を提供します。ベースラインポリシーでは、ホストへの特権的なアクセスは禁止されています。HostProcess Podは、Kubernetes v1.22時点ではアルファ版の機能です。
ホストのネームスペースの共有は無効化すべきです。
制限されるフィールド
@@ -136,7 +136,7 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
|
- | AppArmor (任意) |
+ AppArmor(任意) |
サポートされるホストでは、AppArmorの'runtime/default'プロファイルがデフォルトで適用されます。デフォルトのポリシーはポリシーの上書きや無効化を防ぎ、許可されたポリシーのセットを上書きできないよう制限すべきです。
制限されるフィールド:
@@ -153,7 +153,7 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
spec.containers[*].securityContext.seLinuxOptions
spec.initContainers[*].securityContext.seLinuxOptions
spec.ephemeralContainers[*].securityContext.seLinuxOptions.type
- 認められる値: undefined/nil
+ 認められる値:undefined/nil
Undefined/""
container_t
container_init_t
@@ -168,7 +168,7 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
spec.containers[*].securityContext.seLinuxOptions.role
spec.initContainers[*].securityContext.seLinuxOptions.role
spec.ephemeralContainers[*].securityContext.seLinuxOptions.role
- 認められる値: undefined/nil
+ 認められる値:undefined/nil
Undefined/""
|
@@ -180,7 +180,7 @@ _Pod Security Policy_ はクラスターレベルのリソースで、Pod定義
spec.containers[*].securityContext.procMount
spec.initContainers[*].securityContext.procMount
spec.ephemeralContainers[*].securityContext.procMount
-
認められる値: undefined/nil, 'Default'
+
認められる値:undefined/nil, 'Default'
@@ -390,12 +390,12 @@ Kubernetesでは、Linuxベースのワークロードと比べてWindowsの使
したがって、現段階では標準化されたセキュリティポリシーは存在しません。
Windows Podに制限付きプロファイルを適用すると、実行時にPodに影響が出る場合があります。
-制限付きプロファイルでは、Linux 固有の制限 (seccomp プロファイルや特権昇格の不許可など) を適用する必要があります。
-kubelet および/またはそのコンテナランタイムがこれらの Linux 固有の値を無視した場合、Windows Podは制限付きプロファイル内で正常に動作します。
+制限付きプロファイルでは、Linux固有の制限 (seccompプロファイルや特権昇格の不許可など) を適用する必要があります。
+kubeletおよび/またはそのコンテナランタイムがこれらのLinux固有の値を無視した場合、Windows Podは制限付きプロファイル内で正常に動作します。
ただし、強制力がないため、Windows コンテナを使用するPodについては、ベースラインプロファイルと比較して追加の制限はありません。
-HostProcess Podを作成するための HostProcess フラグの使用は、特権的なポリシーに沿ってのみ行われるべきです。
-Windows HostProcess Podの作成は、ベースラインおよび制限されたポリシーの下でブロックされているため、いかなる HostProcess Podも特権的であるとみなされるべきです。
+HostProcess Podを作成するためのHostProcessフラグの使用は、特権的なポリシーに沿ってのみ行われるべきです。
+Windows HostProcess Podの作成は、ベースラインおよび制限されたポリシーの下でブロックされているため、いかなるHostProcess Podも特権的であるとみなされるべきです。
### サンドボックス化されたPodはどのように扱えばよいでしょうか?
From b37a9ca3618a9ce8089fbd0fd744cee9cf00e035 Mon Sep 17 00:00:00 2001
From: Riita <42636694+riita10069@users.noreply.github.com>
Date: Wed, 17 Nov 2021 00:45:02 +0900
Subject: [PATCH 0006/1077] Update secret.md
---
.../ja/docs/concepts/configuration/secret.md | 56 ++++++++++++++-----
1 file changed, 41 insertions(+), 15 deletions(-)
diff --git a/content/ja/docs/concepts/configuration/secret.md b/content/ja/docs/concepts/configuration/secret.md
index f2a71e1860..0821b42a80 100644
--- a/content/ja/docs/concepts/configuration/secret.md
+++ b/content/ja/docs/concepts/configuration/secret.md
@@ -10,14 +10,31 @@ weight: 30
-KubernetesのSecretはパスワード、OAuthトークン、SSHキーのような機密情報を保存し、管理できるようにします。
-Secretに機密情報を保存することは、それらを{{< glossary_tooltip text="Pod" term_id="pod" >}}の定義や{{< glossary_tooltip text="コンテナイメージ" term_id="image" >}}に直接記載するより、安全で柔軟です。
-詳しくは[Secretの設計文書](https://git.k8s.io/community/contributors/design-proposals/auth/secrets.md)を参照してください。
-Secretはパスワード、トークン、キーのような小容量の機密データを含むオブジェクトです。
-他の方法としては、そのような情報はPodの定義やイメージに含めることができます。
-ユーザーはSecretを作ることができ、またシステムが作るSecretもあります。
+Secretとは、パスワードやトークン、キーなどの少量の機密データを含むオブジェクトのことです。
+このような情報は、Secretを用いないと {{< glossary_tooltip term_id="pod" >}} の定義や
+{{< glossary_tooltip text="コンテナイメージ" term_id="image" >}}に直接記載することになってしまうかもしれません。
+シークレットを使用すれば、アプリケーションコードに機密データを含める必要がなくなります。
+なぜなら、シークレットは、それを使用するポッドとは独立して作成することができ、
+ポッドの作成、閲覧、編集といったワークフローの中でシークレット(およびそのデータ)が漏洩する危険性が低くなるためです。
+また、Kubernetesやクラスタ内で動作するアプリケーションは、不揮発性ストレージに機密データを書き込まないようにするなど、Secretsで追加の予防措置を取ることができます。
+
+Secretsは、{{< glossary_tooltip text="ConfigMaps" term_id="configmap" >}}
+に似ていますが、機密データを保持するために用います。
+
+
+{{< caution >}}
+KubernetesのSecretは、デフォルトでは、APIサーバーの基礎となるデータストア(etcd)に暗号化されずに保存されます。APIにアクセスできる人は誰でもSecretを取得または変更でき、etcdにアクセスできる人も同様です。
+さらに、名前空間でPodを作成する権限を持つ人は、そのアクセスを使用して、その名前空間のあらゆるSecretを読むことができます。これには、Deploymentを作成する能力などの間接的なアクセスも含まれます。
+
+Secretsを安全に使用するには、以下の手順を推奨します。
+
+1. Secretsを[安全に暗号化する](/docs/tasks/administer-cluster/encrypt-data/)
+2. Secretsのデータの読み取りを制限する[RBACルール](/docs/reference/access-authn-authz/authorization/)の有効化または設定
+3. 適切な場合には、RBACなどのメカニズムを使用して、どの原則が新しいSecretの作成や既存のSecretの置き換えを許可されるかを制限します。
+
+{{< /caution >}}
@@ -30,6 +47,7 @@ PodがSecretを使う方法は3種類あります。
- [コンテナの環境変数](#using-secrets-as-environment-variables)として利用する
- Podを生成するために[kubeletがイメージをpullする](#using-imagepullsecrets)ときに使用する
+KubernetesのコントロールプレーンでもSecretsは使われています。例えば、[bootstrap token Secrets](#bootstrap-token-secrets)は、ノード登録を自動化するための仕組みです。
Secretオブジェクトの名称は正当な[DNSサブドメイン名](/ja/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names)である必要があります。
シークレットの構成ファイルを作成するときに、`data`および/または`stringData`フィールドを指定できます。`data`フィールドと`stringData`フィールドはオプションです。
@@ -145,7 +163,8 @@ Docker configファイルがない場合、または`kubectl`を使用してDock
kubectl create secret docker-registry secret-tiger-docker \
--docker-username=tiger \
--docker-password=pass113 \
- --docker-email=tiger@acme.com
+ --docker-email=tiger@acme.com \
+ --docker-server=my-registry.example:5000
```
このコマンドは、`kubernetes.io/dockerconfigjson`型のSecretを作成します。
@@ -153,15 +172,21 @@ kubectl create secret docker-registry secret-tiger-docker \
```json
{
- "auths": {
- "https://index.docker.io/v1/": {
- "username": "tiger",
- "password": "pass113",
- "email": "tiger@acme.com",
- "auth": "dGlnZXI6cGFzczExMw=="
- }
- }
+ "apiVersion": "v1",
+ "data": {
+ ".dockerconfigjson": "eyJhdXRocyI6eyJteS1yZWdpc3RyeTo1MDAwIjp7InVzZXJuYW1lIjoidGlnZXIiLCJwYXNzd29yZCI6InBhc3MxMTMiLCJlbWFpbCI6InRpZ2VyQGFjbWUuY29tIiwiYXV0aCI6ImRHbG5aWEk2Y0dGemN6RXhNdz09In19fQ=="
+ },
+ "kind": "Secret",
+ "metadata": {
+ "creationTimestamp": "2021-07-01T07:30:59Z",
+ "name": "secret-tiger-docker",
+ "namespace": "default",
+ "resourceVersion": "566718",
+ "uid": "e15c1d7b-9071-4100-8681-f3a7a2ce89ca"
+ },
+ "type": "kubernetes.io/dockerconfigjson"
}
+
```
### Basic authentication Secret
@@ -1062,3 +1087,4 @@ Podに複数のコンテナが含まれることもあります。しかし、Po
- [`kubectl`を使用してSecretを管理する](/docs/tasks/configmap-secret/managing-secret-using-kubectl/)方法を学ぶ
- [config fileを使用してSecretを管理する](/docs/tasks/configmap-secret/managing-secret-using-config-file/)方法を学ぶ
- [kustomizeを使用してSecretを管理する](/docs/tasks/configmap-secret/managing-secret-using-kustomize/)方法を学ぶ
+- [SecretのAPIリファレンス](/docs/reference/kubernetes-api/config-and-storage-resources/secret-v1/)を読む
From d41309780935610a86a32cd92f0221a1c9664309 Mon Sep 17 00:00:00 2001
From: Jesse Butler
Date: Mon, 13 Dec 2021 16:01:01 -0500
Subject: [PATCH 0007/1077] Tracking commit for v1.24 docs
From e138c8b39c0efbbe62f69f20cdbfcb84289bc580 Mon Sep 17 00:00:00 2001
From: ystkfujii
Date: Wed, 15 Dec 2021 22:16:18 +0900
Subject: [PATCH 0008/1077] Remove section on dockershim
---
content/en/docs/concepts/containers/runtime-class.md | 5 -----
1 file changed, 5 deletions(-)
diff --git a/content/en/docs/concepts/containers/runtime-class.md b/content/en/docs/concepts/containers/runtime-class.md
index 96858d32af..9e7efa0a46 100644
--- a/content/en/docs/concepts/containers/runtime-class.md
+++ b/content/en/docs/concepts/containers/runtime-class.md
@@ -107,11 +107,6 @@ to the behavior when the RuntimeClass feature is disabled.
For more details on setting up CRI runtimes, see [CRI installation](/docs/setup/production-environment/container-runtimes/).
-#### dockershim
-
-RuntimeClasses with dockershim must set the runtime handler to `docker`. Dockershim does not support
-custom configurable runtime handlers.
-
#### {{< glossary_tooltip term_id="containerd" >}}
Runtime handlers are configured through containerd's configuration at
From 8dd92746a486d64c46502fbd692eb78b2fd52bb9 Mon Sep 17 00:00:00 2001
From: Ryota Yamada <42636694+riita10069@users.noreply.github.com>
Date: Sun, 2 Jan 2022 18:23:07 +0900
Subject: [PATCH 0009/1077] Update
content/ja/docs/concepts/security/pod-security-standards.md
Co-authored-by: nasa9084
---
content/ja/docs/concepts/security/pod-security-standards.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ja/docs/concepts/security/pod-security-standards.md b/content/ja/docs/concepts/security/pod-security-standards.md
index 3a7bf61003..f55dc75ef5 100644
--- a/content/ja/docs/concepts/security/pod-security-standards.md
+++ b/content/ja/docs/concepts/security/pod-security-standards.md
@@ -390,7 +390,7 @@ Kubernetesでは、Linuxベースのワークロードと比べてWindowsの使
したがって、現段階では標準化されたセキュリティポリシーは存在しません。
Windows Podに制限付きプロファイルを適用すると、実行時にPodに影響が出る場合があります。
-制限付きプロファイルでは、Linux固有の制限 (seccompプロファイルや特権昇格の不許可など) を適用する必要があります。
+制限付きプロファイルでは、Linux固有の制限(seccompプロファイルや特権昇格の不許可など)を適用する必要があります。
kubeletおよび/またはそのコンテナランタイムがこれらのLinux固有の値を無視した場合、Windows Podは制限付きプロファイル内で正常に動作します。
ただし、強制力がないため、Windows コンテナを使用するPodについては、ベースラインプロファイルと比較して追加の制限はありません。
From e0d3ec65b63132e402c2fd785640f4a800e1723c Mon Sep 17 00:00:00 2001
From: Ryota Yamada <42636694+riita10069@users.noreply.github.com>
Date: Sun, 2 Jan 2022 18:24:53 +0900
Subject: [PATCH 0010/1077] Update
content/ja/docs/concepts/configuration/secret.md
Co-authored-by: nasa9084
---
content/ja/docs/concepts/configuration/secret.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ja/docs/concepts/configuration/secret.md b/content/ja/docs/concepts/configuration/secret.md
index 0821b42a80..2aa3a99b3b 100644
--- a/content/ja/docs/concepts/configuration/secret.md
+++ b/content/ja/docs/concepts/configuration/secret.md
@@ -12,7 +12,7 @@ weight: 30
Secretとは、パスワードやトークン、キーなどの少量の機密データを含むオブジェクトのことです。
-このような情報は、Secretを用いないと {{< glossary_tooltip term_id="pod" >}} の定義や
+このような情報は、Secretを用いないと{{< glossary_tooltip term_id="pod" >}}の定義や
{{< glossary_tooltip text="コンテナイメージ" term_id="image" >}}に直接記載することになってしまうかもしれません。
シークレットを使用すれば、アプリケーションコードに機密データを含める必要がなくなります。
From 93c0c2a51499627c3112139deafe69c0f7c0c386 Mon Sep 17 00:00:00 2001
From: Ryota Yamada <42636694+riita10069@users.noreply.github.com>
Date: Sun, 2 Jan 2022 18:25:03 +0900
Subject: [PATCH 0011/1077] Update
content/ja/docs/concepts/configuration/secret.md
Co-authored-by: nasa9084
---
content/ja/docs/concepts/configuration/secret.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ja/docs/concepts/configuration/secret.md b/content/ja/docs/concepts/configuration/secret.md
index 2aa3a99b3b..c9f95e4241 100644
--- a/content/ja/docs/concepts/configuration/secret.md
+++ b/content/ja/docs/concepts/configuration/secret.md
@@ -14,7 +14,7 @@ weight: 30
Secretとは、パスワードやトークン、キーなどの少量の機密データを含むオブジェクトのことです。
このような情報は、Secretを用いないと{{< glossary_tooltip term_id="pod" >}}の定義や
{{< glossary_tooltip text="コンテナイメージ" term_id="image" >}}に直接記載することになってしまうかもしれません。
-シークレットを使用すれば、アプリケーションコードに機密データを含める必要がなくなります。
+Secretを使用すれば、アプリケーションコードに機密データを含める必要がなくなります。
なぜなら、シークレットは、それを使用するポッドとは独立して作成することができ、
ポッドの作成、閲覧、編集といったワークフローの中でシークレット(およびそのデータ)が漏洩する危険性が低くなるためです。
From f829e1698d3e65e34a0d7675b87843365897f286 Mon Sep 17 00:00:00 2001
From: Ryota Yamada <42636694+riita10069@users.noreply.github.com>
Date: Sun, 2 Jan 2022 18:25:12 +0900
Subject: [PATCH 0012/1077] Update
content/ja/docs/concepts/configuration/secret.md
Co-authored-by: nasa9084
---
content/ja/docs/concepts/configuration/secret.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ja/docs/concepts/configuration/secret.md b/content/ja/docs/concepts/configuration/secret.md
index c9f95e4241..7105a6df7e 100644
--- a/content/ja/docs/concepts/configuration/secret.md
+++ b/content/ja/docs/concepts/configuration/secret.md
@@ -17,7 +17,7 @@ Secretとは、パスワードやトークン、キーなどの少量の機密
Secretを使用すれば、アプリケーションコードに機密データを含める必要がなくなります。
なぜなら、シークレットは、それを使用するポッドとは独立して作成することができ、
-ポッドの作成、閲覧、編集といったワークフローの中でシークレット(およびそのデータ)が漏洩する危険性が低くなるためです。
+Podの作成、閲覧、編集といったワークフローの中でSecret(およびそのデータ)が漏洩する危険性が低くなるためです。
また、Kubernetesやクラスタ内で動作するアプリケーションは、不揮発性ストレージに機密データを書き込まないようにするなど、Secretsで追加の予防措置を取ることができます。
Secretsは、{{< glossary_tooltip text="ConfigMaps" term_id="configmap" >}}
From 6c6d267a48a44af0f5d337a55bda643a77dcdf2a Mon Sep 17 00:00:00 2001
From: Ryota Yamada <42636694+riita10069@users.noreply.github.com>
Date: Sun, 2 Jan 2022 18:25:23 +0900
Subject: [PATCH 0013/1077] Update
content/ja/docs/concepts/configuration/secret.md
Co-authored-by: nasa9084
---
content/ja/docs/concepts/configuration/secret.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ja/docs/concepts/configuration/secret.md b/content/ja/docs/concepts/configuration/secret.md
index 7105a6df7e..d7435d9752 100644
--- a/content/ja/docs/concepts/configuration/secret.md
+++ b/content/ja/docs/concepts/configuration/secret.md
@@ -25,7 +25,7 @@ Secretsは、{{< glossary_tooltip text="ConfigMaps" term_id="configmap" >}}
{{< caution >}}
-KubernetesのSecretは、デフォルトでは、APIサーバーの基礎となるデータストア(etcd)に暗号化されずに保存されます。APIにアクセスできる人は誰でもSecretを取得または変更でき、etcdにアクセスできる人も同様です。
+KubernetesのSecretは、デフォルトでは、APIサーバーの基礎となるデータストア(etcd)に暗号化されずに保存されます。APIにアクセスできる人は誰でもSecretを取得または変更でき、etcdにアクセスできる人も同様です。
さらに、名前空間でPodを作成する権限を持つ人は、そのアクセスを使用して、その名前空間のあらゆるSecretを読むことができます。これには、Deploymentを作成する能力などの間接的なアクセスも含まれます。
Secretsを安全に使用するには、以下の手順を推奨します。
From 76fdf0e3e66393f218e3397fb31f1b33913cbf7f Mon Sep 17 00:00:00 2001
From: Ryota Yamada <42636694+riita10069@users.noreply.github.com>
Date: Sun, 2 Jan 2022 18:25:32 +0900
Subject: [PATCH 0014/1077] Update
content/ja/docs/concepts/configuration/secret.md
Co-authored-by: nasa9084
---
content/ja/docs/concepts/configuration/secret.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ja/docs/concepts/configuration/secret.md b/content/ja/docs/concepts/configuration/secret.md
index d7435d9752..58728bc1b5 100644
--- a/content/ja/docs/concepts/configuration/secret.md
+++ b/content/ja/docs/concepts/configuration/secret.md
@@ -16,7 +16,7 @@ Secretとは、パスワードやトークン、キーなどの少量の機密
{{< glossary_tooltip text="コンテナイメージ" term_id="image" >}}に直接記載することになってしまうかもしれません。
Secretを使用すれば、アプリケーションコードに機密データを含める必要がなくなります。
-なぜなら、シークレットは、それを使用するポッドとは独立して作成することができ、
+なぜなら、Secretは、それを使用するPodとは独立して作成することができ、
Podの作成、閲覧、編集といったワークフローの中でSecret(およびそのデータ)が漏洩する危険性が低くなるためです。
また、Kubernetesやクラスタ内で動作するアプリケーションは、不揮発性ストレージに機密データを書き込まないようにするなど、Secretsで追加の予防措置を取ることができます。
From 61cbfe80b2b94ee223a34b94933fa19b1dd06d65 Mon Sep 17 00:00:00 2001
From: Ryota Yamada <42636694+riita10069@users.noreply.github.com>
Date: Sun, 2 Jan 2022 18:25:37 +0900
Subject: [PATCH 0015/1077] Update
content/ja/docs/concepts/configuration/secret.md
Co-authored-by: nasa9084
---
content/ja/docs/concepts/configuration/secret.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ja/docs/concepts/configuration/secret.md b/content/ja/docs/concepts/configuration/secret.md
index 58728bc1b5..689fcdb4ac 100644
--- a/content/ja/docs/concepts/configuration/secret.md
+++ b/content/ja/docs/concepts/configuration/secret.md
@@ -18,7 +18,7 @@ Secretを使用すれば、アプリケーションコードに機密データ
なぜなら、Secretは、それを使用するPodとは独立して作成することができ、
Podの作成、閲覧、編集といったワークフローの中でSecret(およびそのデータ)が漏洩する危険性が低くなるためです。
-また、Kubernetesやクラスタ内で動作するアプリケーションは、不揮発性ストレージに機密データを書き込まないようにするなど、Secretsで追加の予防措置を取ることができます。
+また、Kubernetesやクラスター内で動作するアプリケーションは、不揮発性ストレージに機密データを書き込まないようにするなど、Secretで追加の予防措置を取ることができます。
Secretsは、{{< glossary_tooltip text="ConfigMaps" term_id="configmap" >}}
に似ていますが、機密データを保持するために用います。
From 7a4cc6ca6611a2acc86baa0c2be6e6d44d9b2e8c Mon Sep 17 00:00:00 2001
From: Ryota Yamada <42636694+riita10069@users.noreply.github.com>
Date: Sun, 2 Jan 2022 18:28:03 +0900
Subject: [PATCH 0016/1077] Update secret.md
---
content/ja/docs/concepts/configuration/secret.md | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/content/ja/docs/concepts/configuration/secret.md b/content/ja/docs/concepts/configuration/secret.md
index 689fcdb4ac..795196c3b2 100644
--- a/content/ja/docs/concepts/configuration/secret.md
+++ b/content/ja/docs/concepts/configuration/secret.md
@@ -12,16 +12,14 @@ weight: 30
Secretとは、パスワードやトークン、キーなどの少量の機密データを含むオブジェクトのことです。
-このような情報は、Secretを用いないと{{< glossary_tooltip term_id="pod" >}}の定義や
-{{< glossary_tooltip text="コンテナイメージ" term_id="image" >}}に直接記載することになってしまうかもしれません。
+このような情報は、Secretを用いないと{{< glossary_tooltip term_id="pod" >}}の定義や{{< glossary_tooltip text="コンテナイメージ" term_id="image" >}}に直接記載することになってしまうかもしれません。
Secretを使用すれば、アプリケーションコードに機密データを含める必要がなくなります。
なぜなら、Secretは、それを使用するPodとは独立して作成することができ、
Podの作成、閲覧、編集といったワークフローの中でSecret(およびそのデータ)が漏洩する危険性が低くなるためです。
また、Kubernetesやクラスター内で動作するアプリケーションは、不揮発性ストレージに機密データを書き込まないようにするなど、Secretで追加の予防措置を取ることができます。
-Secretsは、{{< glossary_tooltip text="ConfigMaps" term_id="configmap" >}}
-に似ていますが、機密データを保持するために用います。
+Secretsは、{{< glossary_tooltip text="ConfigMaps" term_id="configmap" >}}に似ていますが、機密データを保持するために用います。
{{< caution >}}
From 396ce8ed36c26c84c9f7120046c70130f2ef5b1e Mon Sep 17 00:00:00 2001
From: Ryota Yamada <42636694+riita10069@users.noreply.github.com>
Date: Sun, 2 Jan 2022 18:29:57 +0900
Subject: [PATCH 0017/1077] Update
content/ja/docs/concepts/architecture/nodes.md
Co-authored-by: nasa9084
---
content/ja/docs/concepts/architecture/nodes.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ja/docs/concepts/architecture/nodes.md b/content/ja/docs/concepts/architecture/nodes.md
index 000c4944e6..9e0ba6f8b7 100644
--- a/content/ja/docs/concepts/architecture/nodes.md
+++ b/content/ja/docs/concepts/architecture/nodes.md
@@ -179,7 +179,7 @@ CapacityとAllocatableについて深く知りたい場合は、ノード上で
## ハートビート
ハートビートは、Kubernetesノードから送信され、ノードが利用可能か判断するのに役立ちます。
以下の2つのハートビートがあります:
-* ノードの`.status`の更新
+* Nodeの`.status`の更新
* [Lease object](/docs/reference/generated/kubernetes-api/{{< latest-version >}}#lease-v1-coordination-k8s-io)です。
各ノードは`kube-node-lease`という{{< glossary_tooltip term_id="namespace" text="namespace">}}に関連したLeaseオブジェクトを持ちます。
Leaseは軽量なリソースで、クラスターのスケールに応じてノードのハートビートにおけるパフォーマンスを改善します。
From a4e66916cc9a7c0b7e7c8d720a858dfd5a2e015d Mon Sep 17 00:00:00 2001
From: Ryota Yamada <42636694+riita10069@users.noreply.github.com>
Date: Sun, 2 Jan 2022 18:30:03 +0900
Subject: [PATCH 0018/1077] Update
content/ja/docs/concepts/architecture/nodes.md
Co-authored-by: nasa9084
---
content/ja/docs/concepts/architecture/nodes.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ja/docs/concepts/architecture/nodes.md b/content/ja/docs/concepts/architecture/nodes.md
index 9e0ba6f8b7..b0ee7d3fad 100644
--- a/content/ja/docs/concepts/architecture/nodes.md
+++ b/content/ja/docs/concepts/architecture/nodes.md
@@ -186,7 +186,7 @@ Leaseは軽量なリソースで、クラスターのスケールに応じてノ
kubeletが`NodeStatus`とLeaseオブジェクトの作成および更新を担当します。
-- kubeletは、ステータスに変化があったり、設定した間隔の間に更新がない時に`NodeStatus`を更新します。`NodeStatus`更新のデフォルト間隔は5分です。(到達不能の場合のデフォルトタイムアウトである40秒よりもはるかに長いです)
+- kubeletは、ステータスに変化があったり、設定した間隔の間に更新がない時に`NodeStatus`を更新します。`NodeStatus`更新のデフォルト間隔は5分です。(到達不能の場合のデフォルトタイムアウトである40秒よりもはるかに長いです)
- kubeletは10秒間隔(デフォルトの更新間隔)でLeaseオブジェクトの生成と更新を実施します。Leaseの更新は`NodeStatus`の更新とは独立されて行われます。Leaseの更新が失敗した場合、kubeletは200ミリ秒から始まり7秒を上限とした指数バックオフでリトライします。
From dc5509d1078cb8c56b2bb3ceb9f51b2db70b3b82 Mon Sep 17 00:00:00 2001
From: Ryota Yamada <42636694+riita10069@users.noreply.github.com>
Date: Sun, 2 Jan 2022 18:30:09 +0900
Subject: [PATCH 0019/1077] Update
content/ja/docs/concepts/architecture/nodes.md
Co-authored-by: nasa9084
---
content/ja/docs/concepts/architecture/nodes.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ja/docs/concepts/architecture/nodes.md b/content/ja/docs/concepts/architecture/nodes.md
index b0ee7d3fad..cd07854eb6 100644
--- a/content/ja/docs/concepts/architecture/nodes.md
+++ b/content/ja/docs/concepts/architecture/nodes.md
@@ -252,7 +252,7 @@ kubeletはリソースの割当を決定する際にトポロジーのヒント
{{< feature-state state="beta" for_k8s_version="v1.21" >}}
-kubeletは、ノードのシステムシャットダウンを検出すると、ノード上で動作しているポッドを終了させます。
+kubeletは、ノードのシステムシャットダウンを検出すると、ノード上で動作しているPodを終了させます。
Kubelet は、ノードのシャットダウン時に、ポッドが通常の[通常のポッド終了プロセス](/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination)に従うようにします。
From db97e76b4137afed87a1be874e34c2b62d6e1e89 Mon Sep 17 00:00:00 2001
From: Ryota Yamada <42636694+riita10069@users.noreply.github.com>
Date: Sun, 2 Jan 2022 18:30:19 +0900
Subject: [PATCH 0020/1077] Update
content/ja/docs/concepts/architecture/nodes.md
Co-authored-by: nasa9084
---
content/ja/docs/concepts/architecture/nodes.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ja/docs/concepts/architecture/nodes.md b/content/ja/docs/concepts/architecture/nodes.md
index cd07854eb6..0d88aa8f78 100644
--- a/content/ja/docs/concepts/architecture/nodes.md
+++ b/content/ja/docs/concepts/architecture/nodes.md
@@ -263,7 +263,7 @@ Graceful Node Shutdownは、v1.21でデフォルトで有効になっている`G
なお、デフォルトでは、後述の設定オプション`ShutdownGracePeriod`および`ShutdownGracePeriodCriticalPods`の両方がゼロに設定されているため、Graceful node shutdownは有効になりません。この機能を有効にするには、この2つのkubeletの設定を適切に設定し、ゼロ以外の値を設定する必要があります。
-Graceful shutdownには, kubeletは以下の2段階でPodを終了させます。
+Graceful shutdownでは、kubeletは以下の2段階でPodを終了させます。
1. そのノード上で動作している通常のPodを終了させます。
2. そのノード上で動作している[critical pods](/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/#marking-pod-as-critical)を終了させます。
From 6cc732a81760601c7b72bf673a58f89d8b900d69 Mon Sep 17 00:00:00 2001
From: Ryota Yamada <42636694+riita10069@users.noreply.github.com>
Date: Sun, 2 Jan 2022 18:30:37 +0900
Subject: [PATCH 0021/1077] Update
content/ja/docs/concepts/architecture/nodes.md
Co-authored-by: nasa9084
---
content/ja/docs/concepts/architecture/nodes.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ja/docs/concepts/architecture/nodes.md b/content/ja/docs/concepts/architecture/nodes.md
index 0d88aa8f78..fec8de2a19 100644
--- a/content/ja/docs/concepts/architecture/nodes.md
+++ b/content/ja/docs/concepts/architecture/nodes.md
@@ -303,7 +303,7 @@ kubeletはデフォルトで起動に失敗していました。1.22以降では
-ノードでスワップを有効にするには、kubelet の `NodeSwap` [フィーチャーゲート](/ja/docs/reference/command-line-tools-reference/feature-gates/)を有効にし、
+ノードでスワップを有効にするには、kubeletの `NodeSwap` [フィーチャーゲート](/ja/docs/reference/command-line-tools-reference/feature-gates/)を有効にし、
`--fail-swap-on`コマンドラインフラグまたは`failSwapOn`[KubeletConfiguration](/docs/reference/config-api/kubelet-config.v1beta1/#kubelet-config-k8s-io-v1beta1-KubeletConfiguration)を false に設定する必要があります。
From a7e39dfeeaa4f926bbec78294c0362eca3311cc5 Mon Sep 17 00:00:00 2001
From: Ryota Yamada <42636694+riita10069@users.noreply.github.com>
Date: Sun, 2 Jan 2022 18:30:48 +0900
Subject: [PATCH 0022/1077] Update
content/ja/docs/concepts/architecture/nodes.md
Co-authored-by: nasa9084
---
content/ja/docs/concepts/architecture/nodes.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ja/docs/concepts/architecture/nodes.md b/content/ja/docs/concepts/architecture/nodes.md
index fec8de2a19..9d2102c72e 100644
--- a/content/ja/docs/concepts/architecture/nodes.md
+++ b/content/ja/docs/concepts/architecture/nodes.md
@@ -259,7 +259,7 @@ Kubelet は、ノードのシャットダウン時に、ポッドが通常の[
Graceful Node Shutdownはsystemdに依存しているため、[systemd inhibitor locks](https://www.freedesktop.org/wiki/Software/systemd/inhibit/)を
利用してノードのシャットダウンを一定時間遅らせることができます。
-Graceful Node Shutdownは、v1.21でデフォルトで有効になっている`GracefulNodeShutdown` [feature gate](/ja/docs/reference/command-line-tools-reference/feature-gates/)で制御されます。
+Graceful Node Shutdownは、v1.21でデフォルトで有効になっている`GracefulNodeShutdown` [フィーチャーゲート](/ja/docs/reference/command-line-tools-reference/feature-gates/)で制御されます。
なお、デフォルトでは、後述の設定オプション`ShutdownGracePeriod`および`ShutdownGracePeriodCriticalPods`の両方がゼロに設定されているため、Graceful node shutdownは有効になりません。この機能を有効にするには、この2つのkubeletの設定を適切に設定し、ゼロ以外の値を設定する必要があります。
From 5b8e9f968441b8851111c36306ad014f55657f4f Mon Sep 17 00:00:00 2001
From: Ryota Yamada <42636694+riita10069@users.noreply.github.com>
Date: Sun, 2 Jan 2022 18:30:57 +0900
Subject: [PATCH 0023/1077] Update
content/ja/docs/concepts/architecture/nodes.md
Co-authored-by: nasa9084
---
content/ja/docs/concepts/architecture/nodes.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ja/docs/concepts/architecture/nodes.md b/content/ja/docs/concepts/architecture/nodes.md
index 9d2102c72e..b8cb9d3edd 100644
--- a/content/ja/docs/concepts/architecture/nodes.md
+++ b/content/ja/docs/concepts/architecture/nodes.md
@@ -321,7 +321,7 @@ swapBehaviorで使用できる設定オプションは以下の通りです。:
`memorySwap`の設定が指定されておらず、[フィーチャーゲート](/ja/docs/reference/command-line-tools-reference/feature-gates/)が有効な場合、
デフォルトのkubeletは`LimitedSwap`の設定と同じ動作を適用します。
-`LimitedSwap`設定の動作は、ノードがコントロールグループ(「cgroups」とも呼ばれる)のv1とv2のどちらで動作しているかによって異なります。
+`LimitedSwap`設定の動作は、ノードがコントロールグループ(「cgroups」とも呼ばれる)のv1とv2のどちらで動作しているかによって異なります。
Kubernetesのワークロードでは、メモリとスワップを組み合わせて使用することができ、ポッドのメモリ制限が設定されている場合はその制限まで使用できます。
- **cgroupsv1:** Kubernetesのワークロードは、メモリとスワップを組み合わせて使用することができ、ポッドのメモリ制限が設定されている場合はその制限まで使用できます。
From 6530c8c1eef04b39afd1facb6a3eac33a6aac1a1 Mon Sep 17 00:00:00 2001
From: Ryota Yamada <42636694+riita10069@users.noreply.github.com>
Date: Sun, 2 Jan 2022 18:32:17 +0900
Subject: [PATCH 0024/1077] Update nodes.md
---
content/ja/docs/concepts/architecture/nodes.md | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/content/ja/docs/concepts/architecture/nodes.md b/content/ja/docs/concepts/architecture/nodes.md
index b8cb9d3edd..9db1841c3a 100644
--- a/content/ja/docs/concepts/architecture/nodes.md
+++ b/content/ja/docs/concepts/architecture/nodes.md
@@ -318,8 +318,7 @@ swapBehaviorで使用できる設定オプションは以下の通りです。:
- `LimitedSwap`: Kubernetesのワークロードが、使用できるスワップ量に制限を設けます。Kubernetesが管理していないノード上のワークロードは、依然としてスワップを使用できます。
- `UnlimitedSwap`: Kubernetesのワークロードが使用できるスワップ量に制限を設けません。システムの限界まで、要求されただけのスワップメモリを使用することができます。
-`memorySwap`の設定が指定されておらず、[フィーチャーゲート](/ja/docs/reference/command-line-tools-reference/feature-gates/)が有効な場合、
-デフォルトのkubeletは`LimitedSwap`の設定と同じ動作を適用します。
+`memorySwap`の設定が指定されておらず、[フィーチャーゲート](/ja/docs/reference/command-line-tools-reference/feature-gates/)が有効な場合、デフォルトのkubeletは`LimitedSwap`の設定と同じ動作を適用します。
`LimitedSwap`設定の動作は、ノードがコントロールグループ(「cgroups」とも呼ばれる)のv1とv2のどちらで動作しているかによって異なります。
@@ -328,8 +327,7 @@ Kubernetesのワークロードでは、メモリとスワップを組み合わ
- **cgroupsv2:** Kubernetesのワークロードは、スワップメモリを使用できません。
詳しくは、[KEP-2400](https://github.com/kubernetes/enhancements/issues/2400)と
-[design proposal](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/2400-node-swap/README.md)
-をご覧いただき、テストにご協力、ご意見をお聞かせください。
+[design proposal](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/2400-node-swap/README.md)をご覧いただき、テストにご協力、ご意見をお聞かせください。
## {{% heading "whatsnext" %}}
From 730b9b09e98b3febb2b39787cd7c85c3eeb48139 Mon Sep 17 00:00:00 2001
From: Josh Berkus
Date: Thu, 13 Jan 2022 17:45:04 -0800
Subject: [PATCH 0025/1077] Fix link to dev@kubernetes mailing list
Signed-off-by: Josh Berkus
---
content/ja/docs/setup/learning-environment/minikube.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ja/docs/setup/learning-environment/minikube.md b/content/ja/docs/setup/learning-environment/minikube.md
index 171d2b1b1e..58fce33a34 100644
--- a/content/ja/docs/setup/learning-environment/minikube.md
+++ b/content/ja/docs/setup/learning-environment/minikube.md
@@ -522,4 +522,4 @@ Minikubeの詳細については、[proposal](https://git.k8s.io/community/contr
## コミュニティ
-コントリビューションや質問、コメントは歓迎・奨励されています! Minikubeの開発者は[Slack](https://kubernetes.slack.com)の`#minikube`チャンネルにいます(Slackへの招待状は[こちら](http://slack.kubernetes.io/))。[kubernetes-dev Google Groupsメーリングリスト](https://groups.google.com/forum/#!forum/kubernetes-dev)もあります。メーリングリストに投稿する際は件名の最初に "minikube: " をつけてください。
+コントリビューションや質問、コメントは歓迎・奨励されています! Minikubeの開発者は[Slack](https://kubernetes.slack.com)の`#minikube`チャンネルにいます(Slackへの招待状は[こちら](http://slack.kubernetes.io/))。[dev@kubernetes Google Groupsメーリングリスト](https://groups.google.com/a/kubernetes.io/g/dev/)もあります。メーリングリストに投稿する際は件名の最初に "minikube: " をつけてください。
From 4b5c53fddf3d5ca27a2a4ad92b911b4eb41e8139 Mon Sep 17 00:00:00 2001
From: Josh Berkus
Date: Thu, 13 Jan 2022 17:45:40 -0800
Subject: [PATCH 0026/1077] Fix link to dev@kubernetes mailing list.
Signed-off-by: Josh Berkus
---
content/ru/docs/setup/learning-environment/minikube.md | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/content/ru/docs/setup/learning-environment/minikube.md b/content/ru/docs/setup/learning-environment/minikube.md
index 500d171abe..fea7e14252 100644
--- a/content/ru/docs/setup/learning-environment/minikube.md
+++ b/content/ru/docs/setup/learning-environment/minikube.md
@@ -525,6 +525,4 @@ Minikube использует [libmachine](https://github.com/docker/machine/tre
## Сообщество
-Помощь, вопросы и комментарии приветствуются и поощряются! Разработчики Minikube проводят время на [Slack](https://kubernetes.slack.com) в канале #minikube (получить приглашение можно [здесь](http://slack.kubernetes.io/)). У нас также есть [список рассылки kubernetes-dev на Google Groups](https://groups.google.com/forum/#!forum/kubernetes-dev). Если вы отправляете сообщение в список, пожалуйста, начните вашу тему с "minikube: ".
-
-
+Помощь, вопросы и комментарии приветствуются и поощряются! Разработчики Minikube проводят время на [Slack](https://kubernetes.slack.com) в канале #minikube (получить приглашение можно [здесь](http://slack.kubernetes.io/)). У нас также есть [список рассылки dev@kubernetes на Google Groups](https://groups.google.com/a/kubernetes.io/g/dev/). Если вы отправляете сообщение в список, пожалуйста, начните вашу тему с "minikube: ".
From f4905434dd605675ddc5fe55cd2a79fa32da4bd3 Mon Sep 17 00:00:00 2001
From: RayAsh37
Date: Fri, 14 Jan 2022 12:06:31 +0530
Subject: [PATCH 0027/1077] Removed docker logo
removed docker logo and created a svg for the same as requested in the issue #30948
---
static/images/docs/4c.png | Bin 21381 -> 49564 bytes
static/images/docs/4c.svg | 888 ++++++++++++++++++++++++++++++++++++++
2 files changed, 888 insertions(+)
create mode 100644 static/images/docs/4c.svg
diff --git a/static/images/docs/4c.png b/static/images/docs/4c.png
index 100a1567420fdb9b63aae09a8aaae22ff8730784..1f4d7127c22a70c25bd534b30fa03177c38d6e96 100644
GIT binary patch
literal 49564
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