简介 P121
pod 通常需要对来自集群内部其他 pod ,以及来自集群外部的客户端的 HTTP 请求作出响应,所以需要一种寻找其他 pod 的方法来使用其他 pod 提供的服务。 P121
在 Kubernetes 中通过服务 (service) 解决以下问题: P121
- pod 是短暂的: pod 随时启动和关闭
- Kubernetes 在 pod 启动前会给已经调度到节点上的 pod 分配 IP 地址:客户端不能提前知道 pod 的 IP 地址
- 水平伸缩意味着多个 pod 可能提供相同的服务:每个 pod 都有自己的 IP 地址
介绍服务 P122
Kubernetes 服务是一种为一组功能相同的 pod 提供但以不变的接入点的资源。当服务存在时,它的 IP 地址和端口不会改变。与服务建立的连接会被路由到提供该服务的任意一个 pod 上。 P122
创建服务 P123
服务使用标签选择器(03. pod: 运行于 Kubernetes 中的容器 中介绍过标签选择器及使用方式)来指定属于同一组的 pod 。 P123
通过 kubectl expose 创建服务 P124
创建服务的最简单的方法就是通过 kubectl expose
,在 02. 开始使用 Kubernetes 和 Docker 中就使用该方法创建服务来暴露 Deployment
。 P124
通过 YAML 描述文件来创建服务 P124
为了将创建服务,我们需要使用以下 kubia-svc.yaml
描述文件进创建。
# 遵循 v1 版本的 Kubernetes API
apiVersion: v1
# 资源类型为 Service
kind: Service
metadata:
# Service 的名称
name: kubia
spec:
# 该服务可用的端口
ports:
# 第一个可用端口的名字
- name: http
# 可用端口为 80
port: 80
# 服务将连接转发到容器的 8080 端口
targetPort: 8080
# 第二个可用端口的名字
- name: https
# 可用端口为 443
port: 443
# 服务将连接转发到容器的 8443 端口
targetPort: 8443
# 具有 app=kubia 标签的 pod 都属于该服务
selector:
app: kubia
kubectl create -f kubia-svc.yaml
: 创建服务
kubectl get services
: 查看当前所有服务
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 12d
kubia Clus