【云原生学习笔记】对k8s的Deployment和Service的基础配置介绍
文章目录前言一、Deployment部分二、Service部分前言上一部分编写了一个yaml配置文件来部署应用,这节内容将补充介绍下该yaml中用到且之前没提过的字段。一、Deployment部分Deployment是k8s用来对pod进行自动管理的逻辑意义上的资源类型。对与pod一般不会直接进行创建使用,而是通过和Deployment类似的ReplicationController(RC)进行管
前言
上一部分编写了一个yaml配置文件来部署应用,这节内容将补充介绍下该yaml中用到且之前没提过的字段。
一、Deployment部分
Deployment
是k8s用来对pod进行自动管理的逻辑意义上的资源类型。对与pod一般不会直接进行创建使用,而是通过和Deployment类似的ReplicationController(RC)进行管理,包括创建、更新、维护等。很常用。
yaml如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: bootcamp-deploy
labels:
app: my-bootcamp
spec:
selector:
matchLabels:
app: my-bootcamp
replicas: 2
template:
metadata:
labels:
app: my-bootcamp
spec:
containers:
- name: test-bootcamp
image: jocatalin/kubernetes-bootcamp:v1
ports:
- containerPort: 8080
-
spec.selector.matchLabels
:
该字段必须写上,否则会报错,提示missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec;
该字段的作用是将此Deployment与后面的spec.template.metadata.lables
相互匹配。labels字段的作用就是打上键值对类型的标签,用于与其他部分关联。 -
spec.replicas
该字段表示副本数,即要创建的pod数量。通过改变该字段的值,可以很方便的提现服务伸缩的特性。 -
spec.template
该字段是要创建pod的模板。 -
spec.template.spec.containers
该字段用于配置pod需要的容器信息。
二、Service部分
Service
主要是提供服务自动发现和负载均衡。服务自动发现是为一组具有相同功能的容器应用提供一个统一的入口地址,如上面的Deployment创建的容器。负载均衡是将请求进行负载分发到后端的各个容器应用上。
yaml如下:
apiVersion: v1
kind: Service
metadata:
name: hello-bootcamp
spec:
type: NodePort
selector:
app: my-bootcamp
ports:
- protocol: TCP
port: 80
targetPort: 8080
nodePort: 30008
-
spec.type
该字段是指服务类型,类型有4种:ClusterIP, NodePort, LoadBalancer和ExternalName, 。最常用的是ClusterIP和NodePort。
ClusterIP
是默认模式,提供一个集群内部的虚拟IP以供Pod访问,仅用于集群内通信,在集群外是无法访问应用的。通过ClusterIP就可以访问到pod.
NodePort:在每个Node上打开一个端口以供外部访问,会将外部访问的流量转发到集群内部。流程大概如下:
客户端 ->NodeIP:NodePort ->ClusterIP:ServicePort-> PodIP:containerPort
(另外两个没用过,不了解…)
LoadBalancer
:需要通过外部的负载均衡器来访问,在NodePort的基础上,借助Cloud Provider创建一个外部负载均衡器,并将请求转发到NodePort。
ExternalName
:将服务映射到 DNS 名称
建议看看这篇文章,了解更具体说明。 -
spec.selector
该字段用于将service和pod关联起来,会用到pod和podIP信息组合生成一个endpoint。 -
spec.ports
该字段指明service的端口信息:- port:service的端口,和ClusterIP联合使用的端口。
- targetPort:容器暴露的端口,和PodIP联合使用的端口。
- nodePort:Node对外暴露的端口,和NodeIP联合使用的端口。
更多推荐
所有评论(0)