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 # 查看日志输出,并跟踪启动过程。
浙公网安备 33010602011771号