对外发布服务的意义
对外提供服务: nodePort
对外提供服务:Ingress
1. nodePort:发布服务
kubectl expose 资源类型 资源名称 –type=NodePort –port=80 –target-port=80 –name=服务名称
[root@master ~]# vim appache.yaml
……
selector: #标签选择器
app: apache #后端服务资源
type: NodePort #对照持续化存储,资源类型用NodePort
[root@master ~]# kubectl delete -f appache.yaml
[root@master ~]# kubectl create -f appache.yaml //删除+创建
[root@master ~]# kubectl get service //映射到任意一节点的30121端口
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
apache-service NodePort 10.254.254.110 <none> 80:30121/TCP 3s
[root@ecs-proxy ~]# curl http://192.168.1.20:30121/info.php //验证
<pre>
nginx_host: 10.254.1.2
2.Ingress对外服务
概念:公开了从集群外部到集群内services路由,可以将ingress配置为提供服务外部可访问URL,负债均衡流量;ingress控制器通常由负债均衡器来实现。
a.部署
上传2镜像到仓库(backend.tar,nginx-ingress-controller.tar)
b.修改配置文件(mandatory.yaml)
[root@master ~]# vim mandatory.yaml
34行:image: repo1:5000/defaultbackend:1.4
295行:image: repo1:5000/nginx-ingress-controller:0.19.0
298行: – –apiserver-host=http://192.168.1.25:8080
[root@master ~]# kubectl create -f mandatory.yaml //创建ingress
[root@master ~]#kubectl -n ingress-nginx get pod //查看2个都运行起来
[root@master ~]#kubectl -n ingress-nginx get service //查看nginx的80和443端口
c.运行服务
[root@master ~]#vim ingress-app.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-app
namespace: default
annotations:
kubernetes.io/ingress.class: “nginx”
spec:
backend:
serviceName: apache-service //需要对外的服务名
servicePort: 80
[root@master ~]# kubectl create -f ingress-app.yaml //创建服务,大约1分钟
[root@master ~]# kubectl get ingress //查看ingress,192.168.1.22对外端口
NAME HOSTS ADDRESS PORTS AGE
my-app * 192.168.1.22 80 38s
[root@ecs-proxy ~]# watch -n 5 curl 192.168.1.22/info.php
<pre>
nginx_host: 10.254.3.2