在 NGINX Ingress Controller 中启动一个简单的 Nginx 容器

标的

我想要熟悉NGINX Ingress Controller!

环境

macOS
Mac 上的 Docker

以参考为目标进行行动。

安装指南 – NGINX Ingress 控制器

NGINX Ingress Controller是什么?

NGINX Ingress控制器是一个开源的Ingress控制器。

在Ingress功能生效的情况下,需要在集群中运行Ingress控制器。
Ingress控制器|Kubernetes

    1. 准备Deployment和Service等资源

 

    1. 安装NGINX Ingress Controller

 

    1. 准备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

我试着访问一下

スクリーンショット 2020-06-27 19.31.36.png

看看各种不同的东西

操作已创建的资源

资源名称的缩写形式

可能因为要触摸很多东西而需要写很多内容,所以记住缩写形式会很方便。

項目省略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来监听连接。

Untitled Diagram (1).png
bannerAds