k8s记录-k8s常用对象(Object)类型

3. k8s常用对象(Object)类型

3.1. deployment

主要用于部署pod,支持滚动升级。

 
复制代码
apiVersion: apps/v1
#对象类型
kind: Deployment
metadata:
  name: nginx-deployment  #deployment名字
  labels:
    app: nginx   #deployment标签,可以自由定义
spec:
  replicas: 3   #pod 副本数量
  selector:     #pod选择器定义,主要用于定义根据什么标签搜索需要管理的pod
    matchLabels:
      app: nginx  #pod标签
  template:  #pod模版定义
    metadata:
      labels:   #pod 标签定义
        app: nginx
    spec: 
      containers: #容器数组定义
      - name: nginx  #容器名
        image: nginx:1.7.9  #镜像地址
        command: #容器启动命令,【可选】
            - /alidata/www/scripts/start.sh
        ports:  #定义容器需要暴露的端口
            - containerPort: 80
        env: #环境变量定义【可选】
            - name: CONSOLE_URL #变量名
              value: https://www.xxx.com #变量值   
复制代码

3.2. service

服务定义,主要用于暴露pods容器中的服务。

 
复制代码
apiVersion: v1
#对象类型
kind: Service
metadata:
  name: my-service #服务名
spec:
  selector: #pod选择器定义,由这里决定请求转发给那些pod处理
    app: nginx #pod 标签
  ports: #服务端口定义
  - protocol: TCP  #协议类型,主要就是TCP和UDP
    port: 80 # 服务端口
    targetPort: 80 #pod 容器暴露的端口
复制代码

3.3. ingress

http路由规则定义,主要用于将service暴露到外网中

复制代码
apiVersion: extensions/v1beta1
#对象类型
kind: Ingress
metadata:
  name: my-ingress #ingress应用名
spec:
  rules: #路由规则
    - host: www.xxx.com  #域名
      http:
        paths:  #访问路径定义
          - path: /   #代表所有请求路径
            backend:  #将请求转发至什么服务,什么端口
              serviceName: my-service #服务名
              servicePort: 80 #服务端口
复制代码

3.4. ConfigMap

主要用于容器配置管理。

复制代码
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config #配置项名字
data:
    key1: value1
    key2: value2
复制代码

定义完配置后,可以通过以下方式在容器中应用配置:

复制代码
#通过环境变量注入配置
apiVersion: v1
kind: Pod
metadata:
   name: config-pod-1
spec:
   containers:
     - name: test-container
       image: busybox
       command: [ "/bin/sh", "-c", "env" ]
       env:
         - name: SPECIAL_LEVEL_KEY                ## 环境变量
           valueFrom:                             ##使用valueFrom来指定env引用配置项的value值
             configMapKeyRef:
               name: my-config           ##引用的配置文件名称
               key: key1                 ##引用的配置项key
   restartPolicy: Never
复制代码
复制代码
#通过数据卷注入配置
apiVersion: v1
kind: Pod
metadata:
   name: config-pod-4
spec:
   containers:
     - name: test-container
       image: busybox
       command: [ "/bin/sh", "-c", "ls /etc/config/" ]   ##列出该目录下的文件名
       volumeMounts:
       - name: config-volume    #配置项名字
         mountPath: /etc/config #容器中的挂载目录
   volumes:         #数据卷定义
     - name: config-volume  #数据卷名
       configMap:           #数据卷类型
         name: my-config    #配置项名字
   restartPolicy: Never
posted @ 2020-05-19 12:15  信方  阅读(2493)  评论(0编辑  收藏  举报