Ingress Nginx 试用

安装ingress-nginx

[root@bogon:~/k8s/ingress/ingress-nginx# kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml]
[namespace "ingress-nginx" created](interm)

[deployment "default-http-backend" created](interm)

[service "default-http-backend" created](interm)

[configmap "nginx-configuration" created](interm)

[configmap "tcp-services" created](interm)

[configmap "udp-services" created](interm)

[serviceaccount "nginx-ingress-serviceaccount" created](interm)

[clusterrole "nginx-ingress-clusterrole" created](interm)

[role "nginx-ingress-role" created](interm)

[rolebinding "nginx-ingress-role-nisa-binding" created](interm)

[clusterrolebinding "nginx-ingress-clusterrole-nisa-binding" created](interm)

[deployment "nginx-ingress-controller" created](interm)

[root@bogon:~/k8s/ingress/ingress-nginx# kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/baremetal/service-nodeport.yaml

安装完成后,查看一下ingress-nginx相关的组件的创建情况:

root@bogon:~/k8s/ingress/ingress-nginx# kubectl get pods -n ingress-nginx 
NAME                                        READY     STATUS              RESTARTS   AGE
default-http-backend-55c6c69b88-rfq4n       0/1       ContainerCreating   0          29s
nginx-ingress-controller-7cc74ccd44-h827j   0/1       ContainerCreating   0          28s

从上图中看出nginx-ingress-controller和default-http-backend两个组件都正在创建,间隔一段时间,继续观察,知道Pod处于运行状态

root@bogon:~/k8s/ingress# kubectl get pods -n ingress-nginx 
NAME                                        READY     STATUS    RESTARTS   AGE
default-http-backend-55c6c69b88-rfq4n       1/1       Running   1          6d
nginx-ingress-controller-7cc74ccd44-h827j   1/1       Running   1          6d

到现在为止,说明整个ingress-nginx的组件已经全部启动,查看相应的组件:

root@bogon:~/k8s/ingress# kubectl get service -n ingress-nginx                    
NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
default-http-backend   ClusterIP   10.111.66.202            80/TCP                       6d
ingress-nginx          NodePort    10.98.149.237            80:31230/TCP,443:30458/TCP   6d

验证服务安装的服务的可用性,系统自动安装了一个default-http-backend,这是一个缺省的http后端服务,用于返回404结果,如下所示:

default backend - 404root@bogon:~/k8s/ingress# kubectl get service ingress-nginx -n ingress-nginx   
NAME            TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx   NodePort   10.98.149.237           80:31230/TCP,443:30458/TCP   6d
root@bogon:~/k8s/ingress# curl http://10.98.149.237:80
default backend - 404root@bogon:~/k8s/ingress# 
root@bogon:~/k8s/ingress# 
root@bogon:~/k8s/ingress# curl http://127.0.0.1:31230
default backend - 404root@bogon:~/k8s/ingress# 
root@bogon:~/k8s/ingress# 

从上文中,可以看出ingress-nginx是一个NodePort Servide,它除了向集群内部暴漏ClusterIP:Port为10.98.149.237:80 ,同时还会向集群外部在每个节点上暴漏31230端口。

创建一个应用以及相应服务

准备好Pod和Service的配置文件 nginx.yaml

---

apiVersion: v1
kind: Pod
metadata:
 name: nginx
 namespace: ingress-nginx
 labels:
   app: web
spec:
 hostNetwork: false
 containers:
   - name: nginx
     image: nginx

---

kind: Service
apiVersion: v1
metadata:
  name: my-service
  namespace: ingress-nginx
spec:
  selector:
    app: web
  ports:
  - protocol: TCP
    port: 1005
    targetPort: 80

创建nginx pod以及my-service服务:

kubectl apply -f nginx.yaml
root@bogon:~/k8s/ingress# kubectl get service my-service -n ingress-nginx
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
my-service   ClusterIP   10.111.173.60           1005/TCP   2m
nginx-ingress-controller-7cc74ccd44-h827j   1/1       Running   1          6d
root@bogon:~/k8s/ingress# kubectl get pod nginx -n ingress-nginx  
NAME      READY     STATUS    RESTARTS   AGE
nginx     1/1       Running   0          2m

验证服务是否可用:

root@bogon:~/k8s/ingress# curl http://10.111.173.60:1005



Welcome to nginx!



Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

创建ingress服务

准备好test-ingress.yaml文件

root@bogon:~/k8s/ingress# cat test-ingress.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    ingress.kubernetes.io/rewrite-target: /
  namespace: ingress-nginx
spec:
  rules:
  -  host: foo.bar.com
     http:
      paths:
      - path: /
        backend:
          serviceName: my-service
          servicePort: 1005

验证ingress反向代理服务:

root@bogon:~/k8s/ingress# curl http://127.0.0.1:31230 
default backend - 404root@bogon:~/k8s/ingress# 
root@bogon:~/k8s/ingress# 
root@bogon:~/k8s/ingress# 
root@bogon:~/k8s/ingress# curl -H "Host: foo.bar.com" http://127.0.0.1:31230/



Welcome to nginx!



Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

你可能感兴趣的:(Ingress Nginx 试用)