12、k8s-资源-server-pod里面的服务

注意:pod在建立的时候会、每一个pod都会分配一个单独的pod IP 、然而却存在如下问题:

  ·pod IP 会随着新的pod的重建而发生变化

  ·pod IP 仅仅是集群内可见的虚拟IP,外部无法去访问

这样对于访问pod里的服务就备隔离开了、因此、kubernetes设计了service来解决这个问题

Service可以看作是一组同类Pod对外的访问接口、借助Service、应用可以方便的实现服务发现和负载均衡

 

创建集群内部可以访问的service

创建集群内部可以访问的service
1、先创建一个deployment控制器:kubectl create deployment nginx --image=nginx:1.17.1 -ndev  (或者使用yaml文件创建)

2、再创建service:kubectl expose deploy nginx --name=nginx-server --type=ClusterIP --port=80 --target-port=80 -n dev

#ClusterIP 是默认的类型(内部集群可访问)   在创建服务的时候会产生一个cluster-ip ,这个就是service的ip 、在service的生命周期中这个ip是不会发生变化的、且可以通过这个ip可以访问当前service对应的pod和应用
#--port=80 指定将应用程序端口暴露给集群内其他服务访问的端口号
#--target-port=80  指定容器中正在运行的应用程序实际监听的端口号
3、查看service:kubectl get service -ndev

4、访问:curl 10.104.181.216:80

 

创建集群外部可以访问的service

1、创建service、ip类型指定为NodePort:kubectl expose deploy nginx --name=nginx2-server --type=NodePort --port=80 --target-port=80 -ndev

#
--type=NodePort  将集群内的应用分配一个端口给外部访问
2、查看服务分配给外部访问的端口:kubectl get service -ndev -o wide

 

3、外部浏览器访问:http://192.168.177.160:30387/

 

4、内部集群访问(虚拟机内)只能使用分配好的ip和自定义的--port 端口号:curl 10.96.45.153:80  去访问

 

5、删除service:kubectl delete service nginx-server -ndev

 

 

使用yaml文件创建service

1、创建yaml文件:vim service-nginx.yaml
================================== apiVersion: v1 kind: Service metadata: name: server-nginx0 namespace: dev spec: #ClusterIP: 10.109.179.231 #这一行不要也行、pod会默认分配ip ports: - port: 8080 protocol: TCP targetPort: 80 selector: #标签选择器、最好和deployment的一致 run: nginx type: NodePort #网络类型 ==================================

2、执行yaml文件: kubectl create -f service-nginx.yaml

3、查看service:kubectl get svc -ndev --show-labels

 

 

4、删除:kubectl delete -f service-nginx.yaml

 

posted @ 2024-07-01 00:10  little小新  阅读(2)  评论(0编辑  收藏  举报