在 NGINX Ingress Controller 中启动一个简单的 Nginx 容器
标的
我想要熟悉NGINX Ingress Controller!
环境
macOS
Mac 上的 Docker
以参考为目标进行行动。
安装指南 – NGINX Ingress 控制器
NGINX Ingress Controller是什么?
NGINX Ingress控制器是一个开源的Ingress控制器。
在Ingress功能生效的情况下,需要在集群中运行Ingress控制器。
Ingress控制器|Kubernetes
-
- 准备Deployment和Service等资源
-
- 安装NGINX Ingress Controller
-
- 准备Ingress资源
- 将Ingress资源部署到本地
預備
入口控制器 | Kubernetes
请仔细阅读以上内容。
设立工作空间
$ mkdir practice
$ cd practice
部署的编辑
$ vi nginx-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx-sample
spec:
replicas: 1
selector:
matchLabels:
app: nginx-sample
strategy:
type: Recreate
template:
metadata:
labels:
app: nginx-sample
spec:
containers:
- name: nginx-deployment
image: nginx:latest
ports:
- containerPort: 80
创建部署
$ kubectl apply -f nginx-deployment.yml
编辑服务
$ vi nginx-service.yml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
ports:
- port: 9999
targetPort: 80
selector:
app: nginx-sample
创建服务
$ kubectl apply -f nginx-service.yml
安装 NGINX Ingress Controller
参考:NGINX Ingress控制器安装指南
在Mac上使用Docker的情况?
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/cloud/deploy.yaml
确认安装成功了吗?
$ kubectl get pods -n ingress-nginx \
-l app.kubernetes.io/name=ingress-nginx --watch
Ingress的编辑
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
spec:
backend:
serviceName: nginx-service
servicePort: 9999
创建Ingress
$ kubectl apply -f nginx-ingress.yml
我试着访问一下

看看各种不同的东西
操作已创建的资源
资源名称的缩写形式
可能因为要触摸很多东西而需要写很多内容,所以记住缩写形式会很方便。
項目省略deploymentdeployservicesvcingressing
获取Pod的名称和复制品数量等信息。
$ kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 0/1 1 0 109m
通过指定资源名称和对象名称来显示 Pod 的详细信息。
$ kubectl describe deploy nginx-deployment
指定文件名以删除资源。
$ kubectl delete -f nginx-deployment.yml
将 “deploy” 一词替换为 “svc” 或 “ing” 等其他术语进行使用。
每个资源上的端口关系
在Ingress中,我们指定了服务名称和服务端口。
– spec.backend.serviceName
– spec.backend.servicePort
在Service中,您可以指定targetPort。
在Deployment中,使用containerPort来监听连接。
