k8s安装Ingress 控制器

1. 创建 Nginx Ingress 控制器 Deployment

首先,你需要创建一个 Deployment 来运行 Nginx Inginx 控制器。你可以使用下面的 YAML 配置文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-ingress-controller
  namespace: ingress-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-ingress
  template:
    metadata:
      labels:
        app: nginx-ingress
    spec:
      serviceAccountName: nginx-ingress-serviceaccount
      containers:
      - name: nginx-ingress-controller
        image: k8s.gcr.io/ingress-nginx/controller:v0.41.2  # 使用适合你集群的版本
        imagePullPolicy: IfNotPresent
        args:
          - /nginx-ingress-controller
          - --configmap=$(POD_NAMESPACE)/nginx-configuration
          - --default-backend-service=$(POD_NAMESPACE)/default-http-backend
        env:
          - name: POD_NAME
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
          - name: POD_NAMESPACE
            valueFrom:
              fieldRef:
                fieldPath: metadata.namespace
        ports:
        - name: http
          containerPort: 80
        - name: https
          containerPort: 443

  

2. 创建 Service 资源

接下来,创建一个 Service 来暴露 Nginx Ingress 控制器:

apiVersion: v1
kind: Service
metadata:
  name: nginx-ingress-service
  namespace: ingress-nginx
spec:
  type: LoadBalancer  # 或者 NodePort, ClusterIP 等,根据你的需求选择合适的类型
  selector:
    app: nginx-ingress
  ports:
    - name: http
      port: 80
      targetPort: 80
    - name: https
      port: 443
      targetPort: 443

  

3. 创建 ServiceAccount 和 RoleBinding(可选)

如果你需要为 Ingress 控制器配置 RBAC(Role-Based Access Control),可以创建 ServiceAccount 和 RoleBinding:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-ingress-serviceaccount
  namespace: ingress-nginx
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: nginx-ingress-rolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin  # 根据需要调整权限范围,不一定需要 cluster-admin 权限。通常只需要足够访问 Ingress 资源的权限。
subjects:
  - kind: ServiceAccount
    name: nginx-ingress-serviceaccount
    namespace: ingress-nginx

  

4. 应用配置到 Kubernetes 集群中

保存上述 YAML 文件,并使用 kubectl 应用到你的 Kubernetes 集群中:

kubectl apply -f <filename>.yaml -n ingress-nginx  # 将 <filename> 替换为你的 YAML 文件名,例如 nginx-deployment.yaml 和 nginx-service.yaml。确保你已经创建了 ingress-nginx 命名空间。如果没有,你可以通过 `kubectl create namespace ingress-nginx` 来创建。

  

5. 验证安装是否成功:

检查 Deployment 和 Service 是否正常运行:

kubectl get deployments,services -n ingress-nginx

  你也可以检查 Ingress 控制器的日志来确保它正在运行:

kubectl logs -n ingress-nginx -l app=nginx-ingress -f # 查看日志输出,并跟踪启动过程。

  

 

posted @ 2025-03-19 20:20  zhaoguanhao  阅读(31)  评论(0)    收藏  举报