Kubernetes 集群中部署 Nginx 并观察端口映射

在 Kubernetes 集群中部署 Nginx 并观察其端口映射是理解服务暴露和网络配置的基础操作。以下步骤详细说明了如何完成这一过程。

部署 Nginx Deployment

使用以下 YAML 文件创建一个 Deployment,确保 Nginx 实例在集群中运行:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

通过命令 kubectl apply -f nginx-deployment.yaml 应用配置。

创建 Service 暴露 Nginx

通过 Service 将 Nginx 暴露给集群内部或外部访问。以下示例使用 NodePort 类型:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30080

应用配置后,可以通过 kubectl get svc nginx-service 查看分配的 NodePort。

观察端口映射

使用以下命令检查 Pod 和 Service 的端口映射关系:

kubectl get pods -o wide
kubectl describe svc nginx-service

输出将显示 Pod 的 IP 和 Service 的端口绑定情况。

Work 节点上使用 kubectl 配置

在 Work 节点上正确配置 kubectl 是管理集群的关键。以下是配置步骤。

安装 kubectl

在 Work 节点上安装 kubectl 工具:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

配置 kubeconfig

将主节点的 ~/.kube/config 文件复制到 Work 节点的相同路径下:

scp user@master-node:~/.kube/config ~/.kube/config

确保配置文件权限正确:

chmod 600 ~/.kube/config

验证配置

运行以下命令验证配置是否生效:

kubectl get nodes
kubectl get pods -A

如果返回节点和 Pod 列表,说明配置成功。

常见问题排查

Service 无法访问

检查 Service 的 selector 是否与 Pod 的标签匹配:

kubectl get pods --show-labels
kubectl describe svc nginx-service

NodePort 未开放

确保 Work 节点的防火墙允许 NodePort 端口(如 30080)的流量:

sudo ufw allow 30080/tcp

kubectl 连接失败

检查 kubeconfig 文件中的服务器地址是否为 Master 节点的正确 IP:

grep server ~/.kube/config

通过以上步骤,可以在 Kubernetes 集群中成功部署 Nginx 并验证端口映射,同时在 Work 节点上配置 kubectl 进行管理。

更多推荐