下載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
docker push
harbor.edward.net/springboot/springboot-web:v1
編寫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 ~]#
測試成功!!!!
