k8s中yaml配置文件剖析

1.Deployment.yaml 配置文件剖析

apiVersion: extensions/v1beta1 # 指定api的版本,此值必须在kubectl api-versions中,以“组/版本”的格式
kind: Deployment # 指定创建资源的角色/类型
metadata: # 资源的元数据
  annotations: # 资源带上注解
    deployment.kubernetes.io/revision: 1
  labels: # 指定资源的标签
    app: blackbox-exporter
  name: blackbox-exporter # 资源的名字
  namespace: kube-system # 资源的名称空间
spec: # Deployemnt的规格说明
  replicas: 1 # 声明副本数量,默认是1
  selector: # 选择器
    matchLabels: # 标签选择器,匹配标签
      app: blackbox-exporter
  template: #  定义pod的模板
    metadata: # 定义pod的元数据,至少要定义一个label
      labels:
        app: blackbox-exporter
    spec: # 描述pod的规格
      volumes: # 定义数据卷
      - name: config
        configMap: # 此种卷的类型是configMap
          name: blackbox-exporter # configMap的名字是blackbox-exporter
          defaultMode: 420
      containers:
      - name: blackbox-exporter
        image: harbor.od.com/public/blackbox-exporter:v0.15.1
        imagePullPolicy: Always # 拉取镜像的策略
        args: # 启动参数
        - --config.file=/etc/blackbox_exporter/blackbox.yaml
        - --log.level=info
        - --web.listen-address=:9115
        ports:
        - containerPort: 9115 # 容器里面的起的端口
          name: blackbox-port
          protocol: TCP
        resources: # 资源闲置
          limits: # 限制,当容器的cpu或者内存达到限制,就容器oom
            cpu: 200m # cpu是0.2核
            memory: 256Mi # 内存是256Mi
          requests: 
            cpu: 100m # 容器起来的时候要求的cpu核数,1000m是1核,100m是0.1核
            memory: 50Mi # 50Mi是内存
        volumeMounts: # 数据卷的挂在
        - name: config # 引用上面volumes提到的configMap类型的卷
          mountPath: /etc/blackbox_exporter      # 挂载到容器内的路径   
        readinessProbe: # 就绪性探针,里面的条件满足了才会认为pod被拉起来了
          tcpSocket:
            port: 9115
          initialDelaySeconds: 5
          timeoutSeconds: 5
          periodSeconds: 10
          successThreshold: 1
          failureThreshold: 3  

2. ApiVersion说明

ApiVersion: 代表选择使用的是哪个版本的api
常见的有

extensions/v1beta1 # 在ingress,deployment资源用的比较多,偶尔daemonSet也可以用
v1 # 在rbac,configMap,service的时候用的比较多
apps/v1 # 在使用daemonSet的时候用的比较多

3.Service.yaml配置文件浅析

kind: Service 
apiVersion: v1 # 使用v1版本的api
metadata: # 元数据
  name: grafana #service的名称
  namespace: infra
spec: 
  selector:
    app: grafana # 指定app名为grafana的应用,为自己的下一层
  ports:
    - protocol: TCP
      port: 3000 # 服务端口
      targetPort: 3000 # 容器里面的端口

4.Ingress.yaml配置文件浅析

apiVersion: extensions/v1beta1 # 指定api的版本
kind: Ingress
metadata:
  name: grafana # ingress资源的名字指定
  namespace: infra
spec: # 描述
  rules:
  - host: grafana.od.com # 识别grafana.od.com域名
    http:
      paths:
      - path: /
        backend: # 后端
          serviceName: grafana # 转发给后端名为grafana的service
          servicePort: 3000 # service的端口是3000
posted @ 2022-04-19 17:10  SpecialSpeculator  阅读(392)  评论(0编辑  收藏  举报