k8s部署NGINX Controller
时间: 2023-06-30 22:23:15 浏览: 193
可以使用 Kubernetes 官方提供的 NGINX Ingress Controller 进行部署,具体步骤如下:
1. 创建一个名为 `nginx-ingress` 的命名空间:
```
kubectl create namespace nginx-ingress
```
2. 添加官方的 NGINX Ingress Controller Helm Chart 仓库:
```
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
```
3. 安装 NGINX Ingress Controller:
```
helm install nginx-ingress ingress-nginx/ingress-nginx \
--namespace nginx-ingress \
--set controller.replicaCount=2 \
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux
```
其中,`controller.replicaCount` 用于设置控制器的副本数量,`controller.nodeSelector."beta\.kubernetes\.io/os"=linux` 和 `defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux` 用于设置控制器和默认后端 Pod 的 NodeSelector,确保它们只会在 Linux 节点上运行。
4. 验证 NGINX Ingress Controller 是否已经成功运行:
```
kubectl get pods -n nginx-ingress
```
如果控制器和默认后端 Pod 的状态都显示为 Running,则表示已经成功部署 NGINX Ingress Controller。
5. 部署 NGINX Ingress:
```
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: example.com
http:
paths:
- path: /example(/|$)(.*)
pathType: Prefix
backend:
service:
name: example-service
port:
name: http
```
其中,`metadata.name` 用于设置 Ingress 的名称,`spec.rules.host` 用于设置 Ingress 的域名,`spec.rules.http.paths.path` 用于设置 Ingress 的路径,`spec.rules.http.paths.backend.service.name` 和 `spec.rules.http.paths.backend.service.port.name` 用于设置 Ingress 的后端服务和端口。
6. 验证 NGINX Ingress 是否已经成功部署:
```
kubectl get ingress example-ingress
```
如果 Ingress 的状态显示为 Running,则表示已经成功部署 NGINX Ingress。
阅读全文