对外发布服务
可以让集群外访问集群内部的服务,服务可能来自第三方或者其他团队,无法把所有服务都放入集群内部,这时候我们就需要集群内部和集群外部的服务能够实现互访
-对外提供服务:nodePort
-对外提供服务:ingress
nodePort发布服务
语法格式:
kubectl expose 资源类型 资源名称 --type=NodePort --port=80 --target-port=80 --name=服务名称
[root@kubemaseter ~]# vim t6.yaml
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-apache
spec:
replicas: 1
template:
metadata:
labels:
app: my-apache
spec:
containers:
- image: 192.168.1.100:5000/myos:httpd
name: my-apache
volumeMounts:
- mountPath: /etc/httpd/conf/httpd.conf
name: config
subPath: httpd.conf
- mountPath: /var/www/html
name: site-data
volumes:
- name: config
configMap:
name: my-httpd
- name: site-data
persistentVolumeClaim:
claimName: pvc-nfs
---
apiVersion: v1
kind: Service
metadata:
name: apche
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: my-apache
type: NodePort
[root@kubemaseter ~]# kubectl create -f t6.yaml
deployment.extensions "my-apache" created
service "apche" created
[root@kubemaseter ~]# kubectl get service #查看服务可以看出80端口转到了32587端口,我们可以访问32578端口
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
apche NodePort 10.254.0.197 <none> 80:32587/TCP 9m
[root@kubemaseter ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE
my-apache-75644bd6d9-t9v7m 1/1 Running 0 5m 10.254.95.5 kubenode1
[root@nfs ~]# curl http://192.168.1.21:31245 #注意pod阶段开在那个阶段就使用那个节点的ip访问,端口访问的是32578端口
<pre>
hello world
hello world
hello world
Ingress介绍
ingress公开了从集群外部到集群内service路由,可以将Ingress配置为提供服务外部可访问的URL,负载均衡流量
Ingress控制器通常由负载均衡器来实现,必须具有Ingress控制器才能满足Ingress的要求,仅创建资源无效
Ingress安装
安装控制器:把镜像导入到私有仓库
[root@registry ~]# curl http://192.168.1.100:5000/v2/_catalog
{"repositories":["defaultbackend","k8s-dns-dnsmasq-nanny-amd64","k8s-dns-kube-dns-amd64","k8s-dns-sidecar-amd64","kubernetes-dashboard-amd64","myos","nginx-ingress-controller","pod-infrastructure"]}
"defaultbackend" 默认后端服务:backend.tar
&#