Ver código fonte

Update metallb and nodeport doc

Kyle Zhang 5 meses atrás
pai
commit
f9076b878b
2 arquivos alterados com 25 adições e 14 exclusões
  1. 22 13
      expose/expose-via-kubelet-nodeport.md
  2. 3 1
      expose/expose-via-metallb.md

+ 22 - 13
expose/expose-via-kubelet-nodeport.md

@@ -4,31 +4,36 @@
 
 ## **步骤:**
 
-### 1. **修改 Kubelet 配置**:
+### 1. **修改 kube-apiserver 启动参数**:
 
-   在每个节点上,修改 Kubelet 启动参数,将 `--service-node-port-range` 参数设置为 `1-32767`。
+   在 controlplane(master)节点,修改 kube-apiserver 启动参数,将 `--service-node-port-range` 参数设置为 `1-32767`。
 
-   - 在 `kubeadm` 部署中,编辑 `/var/lib/kubelet/config.yaml` 文件:
+   - 在 `kubeadm` 部署中,编辑 `/etc/kubernetes/manifests/kube-apiserver.yaml`。更新文件,添加`--service-node-port-range=1-32767`。
 
      ```yaml
-     serviceNodePortRange: 1-32767
+     ......
+         - --service-cluster-ip-range=10.96.0.0/16
+         - --service-node-port-range=1-32767
+     ......
      ```
      
-   - 或者在启动文件中添加:
+   - 在手动以服务部署 kube-apiserver 时,通常文件在 `/etc/systemd/system/kube-apiserver.service`
 
-     在多数系统中,Kubelet 的启动参数可以在 `/etc/default/kubelet` 或 `/etc/systemd/system/kubelet.service.d/10-kubeadm.conf` 中找到。如果你使用的是 systemd 管理 Kubelet,请编辑 `/etc/systemd/system/kubelet.service.d/10-kubeadm.conf` 文件。
-     
      ```sh
-     KUBELET_EXTRA_ARGS="--service-node-port-range=1-32767"
+     ......
+       --service-cluster-ip-range=10.96.0.0/16
+       --service-node-port-range=30000-32767 \
+     ......
      ```
 
-### 2. **重启 Kubelet**:
+### 2. **重启 kube-apiserver**:
+
+在 `kubeadm` 部署中,修改了`/etc/kubernetes/manifests/kube-apiserver.yaml` 。Kubelet 会自动重启 kube-apiserver Pod。
 
-   重新启动 Kubelet 以使更改生效。
+在手动以服务部署 kube-apiserver 时,运行如下命令重启:
 
    ```sh
-   sudo systemctl daemon-reload
-   sudo systemctl restart kubelet
+   sudo systemctl restart kube-apiserver
    ```
 
 ### 3. **部署 Nginx Ingress Controller**:
@@ -37,6 +42,8 @@
 
 为了确保客户端的真实 IP 地址能够在 NodePort 类型的服务中正确传递,你需要将 `externalTrafficPolicy` 设置为 `Local`。这将确保源地址转换(source IP preservation)在负载均衡到具体的节点上时得到应用。
 
+还需要将 `controller.kind` 设置成 `DaemonSet` 。这样设置才能保证 `externalTrafficPolicy` 设置为 `Local` 时,每个节点都可以转发80,443 端口。
+
    ```sh
 helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
 kubectl create namespace ingress-nginx
@@ -53,7 +60,9 @@ helm install ingress-nginx ingress-nginx/ingress-nginx \
 
 ### 4. 配置 Ingress Controller 以支持 Proxy Protocol
 
-如果还有上游反向代理并开启了Proxy Protocol,可以配置 Nginx Ingress Controller 支持 Proxy Protocol,以便正确处理客户端的真实 IP 地址。
+如果还有反向代理并开启了Proxy Protocol,可以配置 Nginx Ingress Controller 支持 Proxy Protocol,以便正确处理客户端的真实 IP 地址。
+
+**!!如果没有反向代理,或者没有开启 Proxy Protocol,请勿配置Nginx Ingress Controller 支持 Proxy Protocol,这会导致异常。**
 
 **步骤 1:检查 Nginx Ingress Controller 配置**
 

+ 3 - 1
expose/expose-via-metallb.md

@@ -116,6 +116,8 @@ MetalLB 提供两种主要的地址发布模式:
 
 为了确保客户端的真实 IP 地址能够在 NodePort 类型的服务中正确传递,你需要将 `externalTrafficPolicy` 设置为 `Local`。这将保留客户端源地址(source IP preservation)。
 
+使用 `Layer 2` 模式时,MetalLB 将会感知 ingress-nginx-controller Pod的所在节点,并让所在节点响应EXTERNAL-IP ARP/NDP 请求,确保请求不发送到不存在ingress-nginx-controller Pod的节点。
+
 ```sh
 helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
 kubectl create namespace ingress-nginx
@@ -142,7 +144,7 @@ helm install ingress-nginx ingress-nginx/ingress-nginx \
    ingress-nginx-controller             LoadBalancer   10.96.122.1   192.168.11.64   80:30820/TCP,443:31867/TCP   2m
    ```
 
-使用 `Layer 2` 模式时,MetalLB 将会感知 ingress-nginx-controller Pod的所在节点,并让所在节点响应EXTERNAL-IP ARP/NDP 请求,确保请求不发送到不存在ingress-nginx-controller Pod的节点。
+
 
 ## 5. **DNS 配置**: