一、Service介绍
Kubernetes 通过Deployment来创建一组Pod用来提供高可用性的服务,虽然每个Pod都会分配一个单独的Pod IP,然而却存在如下两个问题:
- Pod IP会随着Pod的重建产生变化。
- Pod IP仅仅是集群内可见的虚拟IP,外部无法访问。
因此,Kubernetes设计了Service来解决这个问题。
Service可以看作是一组同类Pod对外的访问接口,借助Service,应用可以方便地实现服务发现和负载均衡。
?二、Service的相关操作
1.创建集群内部可访问的Service
#暴露Service
[root@master ~]#kubectl expose deploy nginx --name=svc-nginx --type=ClusterIP --port=80 --target-port=80 -n dev
#查看Service
[root@master ~]#kubectl get svc svc-nginx -n dev -o wide
svc-nginx ClusterIP 10.109.206.152 <none> 80/TCP 65m run=nginx
? 这里产生了一个CLUSTER-IP,这就是Service的ip,在Service的整个生命周期中,这个地址是不会变动的,可以通过这个ip访问Service对应的Pod。
?2.创建集群外部可以访问的Service
#创建外部可以访问的Service
[root@master ~]# kubectl expose deploy nginx --name=svc-nginx2 --type=NodePort --port=80 --target-port=80 -n dev
#查看service信息
[root@master ~]# kubectl get svc svc-nginx2 -o wide -n dev
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
svc-nginx2 NodePort 10.109.114.76 <none> 80:30224/TCP 28s run=nginx
#在浏览器中输入当前集群的ip+80对应的端口30224即可访问
http://192.168.225.130:30224/
http://192.168.225.131:30224/
http://192.168.225.132:30224/
?
?3. 删除Service
kubectl delete svc svc-nginx -n dev
4.配置文件方式配置
apiVersion: v1
kind: Service
metadata:
name: svc-nginx
namespace: dev
spec:
clusterIP: 10.109.179.231
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: ClusterIP
#创建service
kubectl create -f svc-nginx.yaml
#删除service
kubectl delete -f svc-nginx.yaml
好了,kubernetes 的入门Service 就这么多了。快去学学吧。
|