yaml文件编写示例及解析
Service示例apiVersion: v1Kind: Servicemetadata:name: hello-servicespec:type:NodePortselector:app: hello-k8s-demoport:- protocol: TCPport: 80targetPort: 8080nodePor...
Service示例
apiVersion: v1
Kind: Service
metadata:
name: hello-service
spec:
type:NodePort
selector:
app: hello-k8s-demo
port:
- protocol: TCP
port: 80
targetPort: 8080
nodePort: 30008
apiVersion: 当前yaml使用的api版本。
kind:声明对象类型。
metadata中的name定义了service的名称。
spec:service的规则声明。
其中的type声明了service的类型。
NodePort类型表示在每个节点上暴露一个tcp port,将服务暴露在k8s的集群之外,集群外部也可以访问该服务。
selector:通过label匹配后端的pod的选项。pods是一组pod。
port是一个虚拟的service端口,并不是真实存在的。
targetport是后端容器监听的端口。
nodeport是每个节点监听的端口。
在describe查看service详情时,可以查看endpoint。如果endpoint对应的值是none,说明没有一个pod是为他服务的。这种情况发生在创建了service,但没有创建后端pod。
通过Deployment控制器进行后端pod的部署。
Deployment示例
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: hello-deployment
labels:
app: hello-k8s-demo
spec:
replicas: 2
template:
metadata:
labels:
app: hello-k8s-demo
spec:
containers:
- name: hello-k8s
image:###
imagePullPolicy: Always
ports:
- containerPort:8080
replicas:副本个数。Deployment部署后k8s集群里有两个pod在运行。
template:pod的模板配置。
每一个pod都会基于该模板进行创建。这里的labels很重要。因为service中的selector就是通过这个label来匹配pod 的。
spec:pod的规格信息,主要定义了容器的信息。定义了容器的名字,容器的镜像和镜像的拉取策略。containerPort是pod暴露在集群网络的端口。
服务请求的自动负载均衡:k8s会自动将服务的请求负载均衡到后端的pod上。
服务伸缩:业务有波峰波谷。在波谷的时候降低pod的数量以节省资源的消耗。在波峰的时候新增副本的数量,提交的服务请求也会被负载均衡到新的pod中。
更多推荐



所有评论(0)