Kubernetes的deploy、service、namespace模板

模板解释
deployment.yaml

apiVersion: apps/v1	#与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本
kind: Deployment	#该配置的类型,我们使用的是 Deployment
metadata:	        #译名为元数据,即 Deployment 的一些基本属性和信息
  name: nginx-deployment	#Deployment 的名称
  labels:	    #标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解
    app: nginx	#为该Deployment设置key为app,value为nginx的标签
spec:	        #这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用
  replicas: 1	#使用该Deployment创建一个应用程序实例
  selector:	    #标签选择器,与上面的标签共同作用,目前不需要理解
    matchLabels: #选择包含标签app:nginx的资源
      app: nginx
  template:	    #这是选择或创建的Pod的模板
    metadata:	#Pod的元数据
      labels:	#Pod的标签,上面的selector即选择包含标签app:nginx的Pod
        app: nginx
    spec:	    #期望Pod实现的功能(即在pod中部署)
      containers:	#生成container,与docker中的container是同一种
      - name: nginx	#container的名称
        image: nginx:1.7.9	#使用镜像nginx:1.7.9创建container,该container默认80端口可访问
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx-service	#Service 的名称
  labels:     	#Service 自己的标签
    app: nginx	#为该 Service 设置 key 为 app,value 为 nginx 的标签
spec:	    #这是关于该 Service 的定义,描述了 Service 如何选择 Pod,如何被访问
  selector:	    #标签选择器
    app: nginx	#选择包含标签 app:nginx 的 Pod
  ports:
  - name: nginx-port	#端口的名字
    protocol: TCP	    #协议类型 TCP/UDP
    port: 80	        #集群内的其他容器组可通过 80 端口访问 Service
    nodePort: 32600   #通过任意节点的 32600 端口访问 Service
    targetPort: 80	#将请求转发到匹配 Pod 的 80 端口
  type: NodePort	#Serive的类型,ClusterIP/NodePort/LoaderBalancer

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这些代理模型中,绑定到 Service 的 IP:Port 的流量被代理到适当的后端,而客户端不知道任何关于 Kubernetes 或 Services 或 Pod 的信息。
如果要确保来自特定客户端的连接每次都传递到同一个 Pod,可以通过设置service.spec.sessionAffinity为“ClientIP”(默认为“None”),根据客户端的 IP 地址选择会话亲和性。service.spec.sessionAffinityConfig.clientIP.timeoutSeconds您还可以通过适当设置来设置最大会话粘性时间 。(默认值为 10800,即 3 小时)。

以下为例子
deploy.yaml

#Deployment
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
    name: 003-paas-static-deploy
    namespace: paas-app-dev2
    labels:
        name: 003-paas-static-deploy
spec:
    replicas: 1
    template:
        metadata:
            labels:
                name: 003-paas-static-pod
        spec:
            terminationGracePeriodSeconds: 1  #k8s正确、优雅地关闭应用,等待时间30秒
            nodeSelector:
              dev2: "true"
            hostAliases:
            - ip: 10.111.181.127
              hostnames:
              - "config-server"
            containers:
            - name: "web"
              image: sinoeyes.io/dev2/paas-static:1.0.0
              ports:
              - containerPort: 20003
              env:
              - name: JavaOption
                value: -server -Xms128m -Xmx128m -XX:-UseGCOverheadLimit
              - name: "spring.cloud.config.uri"
                value: "http://config-server:31001/"
              - name: spring.cloud.config.profile
                value: dev2

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

service.yaml

#Service
apiVersion: v1
kind: Service
metadata:
    name: static
    namespace: paas-app-dev2
    labels:
        name: 003-paas-static
spec:
    selector:
        name: 003-paas-static-pod
    sessionAffinity: ClientIP
    type: NodePort
    ports:
    - name: "http"
      port: 20003
      targetPort: 20003

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

namespace.yaml

apiVersion: v1
kind: Namespace
metadata:
   name: paas-cloud-dev2
   labels:
     name: paas-cloud-dev2
---
apiVersion: v1
kind: Namespace
metadata:
   name: paas-app-dev2
   labels:
     name: paas-app-dev2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

参考kuboard官网