如何使用K8S的Ingress

Ingress的好处与特点我就没有必要再说一次了,本文主要说明的是使用方法

准备条件

请先完成K8S的安装,安装ingress,它包括一个defaulebackend,与nginx-ingress-control,并pull下需要的docker image

注意

这里请注意一点,为了方便,我们希望在部署ingress的时候,将部署文件Ymal中的一个条目修改
修改yaml,在nginx-ingress-controller这个deployment下面的spec.template.spec下面添加,如下

#spec:
      hostNetwork: true
      #serviceAccountName: nginx-ingress-serviceaccount
      #containers:

开始

通过yaml创建ns,deployment,svc
deployment.yaml:

apiVersion: v1
kind: Namespace
metadata:
  name: web-test-ns
---
apiVersion: v1
kind: Service
metadata:
  name: web-svc-nodeport
  namespace: web-test-ns
spec:
  selector:
      app: nginx
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: 80
      #nodePort: 8000
  type: NodePort
  external-ip=192.168.250.200
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: web-test-ns
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
# 执行
kubectl apply -f deployment.yaml

#查看结果
kubectl get pods -A -o wide
kubectl get deployment -n web-test-ns
kubectl get ns
kubectl get svc -n web-test-ns

通过Yaml生成Ingress:
ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-web
  namespace: web-test-ns  
spec:
  rules:
  - host: test.com
    http:
      paths:
      - path:/    
        backend:
          serviceName: web-svc
          servicePort: 80
# 执行
kubectl apply -f ingress.yaml
#查看
kubectl get ingress -n web-test-ns
kubectl describe ingress ingress-web -n web-test-ns

Ingress control的入口地址是什么?怎么访问呢?

那么问题来了,我们怎么知道用哪个地址来访问Ingress的入口呢?执行以下命令查看

kubectl get pods -A -o wide
# 这里我们要找的就是类似以下的条目:
#ingress-nginx   nginx-ingress-controller-5d796786f6-lzfhc   1/1     Running   2          12h   192.168.250.101   node     <none>           <none>
#这个192.168.250.101就是它的真正入口
#修改/etc/hosts
echo '192.168.250.101 test.com' >>/etc/hosts
#测试
curl test.com
#成功!
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐