利用hostNetwork方式部署ingress controller

 

下载ingress controller的yaml文件

https://files.cnblogs.com/files/edward-han/mandatory.zip

下载mandatory.yaml文件中的镜像(所有要运行ingress的node都要下载安装以下这些镜像)
# docker tag registry.cn-hangzhou.aliyuncs.com/liuyi01/defaultbackend-amd64:1.5 k8s.gcr.io/defaultbackend-amd64:1.5
# docker pull quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.19.0
修改 mandatory.yaml,以hostnetwork方式部署ingress,并且添加一个节点选择器,可以控制在哪个节点上生成ingress
(给节点打标签:# kubectl label node node1 app=ingress)

执行yaml文件

# kubectl apply -f mandatory.yaml
 
查看
# kubectl get all -n ingress-nginx
NAME                                            READY   STATUS    RESTARTS   AGE
pod/default-http-backend-6bf4c44778-jvzw5       1/1     Running   0          38m
pod/nginx-ingress-controller-7c645c9879-hqpct   1/1     Running   0          21m
 
NAME                           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
service/default-http-backend   ClusterIP   10.97.51.114   <none>        80/TCP    38m
 
NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/default-http-backend       1/1     1            1           38m
deployment.apps/nginx-ingress-controller   1/1     1            1           21m
 
NAME                                                  DESIRED   CURRENT   READY   AGE
replicaset.apps/default-http-backend-6bf4c44778       1         1         1       38m
replicaset.apps/nginx-ingress-controller-7c645c9879   1         1         1       21m
 
 
测试:
 
提供了一份测试源码
 
在源码目录springboot-web-demo下给代码打包
 mvn package
 
将target目录下的springboot-web-demo-1.0-SNAPSHOT.jar文件拷贝至master
 
在master中编写dockerfile (基础镜像openjdk:8-jre-alpine可在docker hub上下载,并打好tag上传至harbor)
# vim dockerfile
FROM harbor.edward.net/baseimages/openjdk:8-jre-alpine
 
COPY springboot-web-demo-1.0-SNAPSHOT.jar /springboot-web.jar
 
ENTRYPOINT ["java","-jar","/springboot-web.jar"]
 
build镜像
# docker build -t springboot-web:v1 .
 
运行镜像测试
# docker run -it springboot-web:v1
 
给镜像打tag
# docker tag springboot-web:v1 harbor.edward.net/springboot/springboot-web:v1
 
将镜像push到harbor
 
编写yaml文件
# vim springboot-web.yaml
#deploy
apiVersion: apps/v1
kind: Deployment
metadata:
  name: springboot-web-demo
spec:
  selector:
    matchLabels:
      app: springboot-web-demo
  replicas: 1
  template:
    metadata:
      labels:
        app: springboot-web-demo
    spec:
      containers:
      - name: springboot-web-demo
        image: harbor.edward.net/springboot/springboot-web:v1
        ports:
        - containerPort: 8080
---
#service
apiVersion: v1
kind: Service
metadata:
  name: springboot-web-demo
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: springboot-web-demo
  type: ClusterIP
 
---
#ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: springboot-web-demo
spec:
  rules:
  - host: springboot.com
    http:
      paths:
      - path: /
        backend:
          serviceName: springboot-web-demo
          servicePort: 80
 
执行yaml文件
# kubectl apply -f springboot-web.yaml
 
查看pod
# kubectl get pods -o wide
 
在客户端电脑配置host文件(ip地址可以是任意一个可运行ingress的node节点的ip)
192.168.101.110 springboot.com
 
 
浏览器访问
Hello Edward! I'm springboot-web-demo controller![root@node1 ~]#
 
测试成功!!!!
 
 
posted @ 2020-10-29 20:38  Edward_han  阅读(829)  评论(0编辑  收藏  举报