zoukankan      html  css  js  c++  java
  • 吾八哥学k8s(三):kubernetes里创建资源的方法

    上一篇里已经成功的将一个golang的demo服务部署到k8s环境里了,部署的时候我们用到了yaml配置文件,今天这里简单的介绍下如何使用创建kubernetes里的资源。在kubernetes里,一切对象皆为资源,可以通过命令或配置文件来创建。

    命令行创建资源

    通过命令行可以创建namespace、deployment、service、ingress、configmap、secret等很多资源类型

    这里通过命令创建一个名为k8s-test的namespace,命令如下:

    kubectl create namespace k8s-test

    执行后通过:kubectl get namespace命令可以查到刚刚创建的namespace,如下图:

    1586611076295.jpg

    其他的资源创建方法,可以查看kubernetes中文文档:http://docs.kubernetes.org.cn/490.html

    通过配置文件创建资源

    上一篇里我们部署k8s-demo服务的时候就是使用配置文件来创建kubernetes资源的,因为使用配置文件可以定义多种资源类型来同时创建,比手工一条条命令去创建确实是方便很多。这里同样通过创建一个k8s-test2的namespace来测试效果,定义yaml配置文件k8s-test2.yaml如下:

    apiVersion: v1
    kind: Namespace
    metadata:
       name: k8s-test2
       labels:
         name: k8s-test2

    上面的配置文件里定义了k8s-test2的namespace名称,同时还指定了一个label。执行命令"kubectl apply -f k8s-test2.yaml"后查询namespace列表如下图:

    image.png

    yaml配置文件里还可以定义很多其他的资源对象,根据创建的资源类型而定。

    Deployment配置文件说明

    这里将上一篇里k8s-demo.yaml文件的配置文件做个简单的说明,补充了若干常用的定义类型:

    ---
        apiVersion: apps/v1  #必须 指定api版本,此值必须在kubectl api-versions里
        kind: Deployment  #必须 指定资源类型
        metadata:  #必须 元数据
          name: k8s-demo  #必须 符合RFC1035规范的名称
          namespace: default  #可选 指定命名空间,默认为default
          labels:  #可选 标签选择器,一般用于selector
            app: k8s-demo  #label定义
        spec:  #必须 资源详细
          selector:  #可选 选择器
            matchLabels: 
              app: k8s-demo
          replicas: 4  #可选 创建pod的副本数量
          revisionHistoryLimit: 10  #可选 历史版本最多保留的版本数量
          minReadySeconds: 5 #可选 Pod对象启动后多长时间认为就绪,单位秒
          strategy:  # 更新策略
            type: RollingUpdate # 滚动更新
            rollingUpdate:
              maxSurge: 1  #可选 可以超过期望值的最大pod数 默认为25%,maxSurge、maxUnavailable不能同时为0,都可以设置为数字或百分比
              maxUnavailable: 1  #可选 在更新时最大不可用的pod数量 默认为25% 
          template:
            metadata:
              labels:
                app: k8s-demo
            spec:
              restartPolicy: Always  #表示自动重启
              containers:
              - image: www.5bug.wang/docker/k8s-demo:1.0  #容器使用的镜像地址
                imagePullPolicy: IfNotPresent  #镜像拉取策略Always、Never、IfNotPresent
                command: ["/bin/bash","-c","./k8s-demo"]  #启动命令,需要前台运行命令
                # env:  #指定环境变量
                #   - name: app_env
                #     value: qa
                name: k8s-demo
                ports:
                - containerPort: 8080  #容器端口
                  protocol: TCP
                resources:  #定义资源数据
                  limits:
                    cpu: 100m
                    memory: 100Mi
                  requests:
                    cpu: 50m
                    memory: 50Mi
                livenessProbe:  #健康检查设置
                  tcpSocket:
                    port: 8080  #服务端口
                  initialDelaySeconds: 10  #第一次检测在容器启动后多长时间后开始
                  timeoutSeconds: 3  #检测的超时时间 
                readinessProbe:  #探针
                  httpGet:
                    path: /ping  #健康检查接口定义
                    port: 8080  #健康检查端口
                  initialDelaySeconds: 10
                  timeoutSeconds: 2
                volumeMounts:  #挂载配置
                  - name: logs  #挂载设备的名字,与volumes[*].name 需要对应    
                    mountPath: /data/logs  #挂载到容器的/data/logs下
                    readOnly: false  
              volumes:  #定义一组挂载设备  
                - name: logs  #定义一个挂载设备的名字  
                  hostPath:
                    path: /data/logs  #挂载设备类型为hostPath,路径为宿主机下的/data/logs

    ---
        apiVersion: v1
        kind: Service  #定义Service
        metadata:
          name: k8s-demo-svc
          namespace: default
          labels:
            app: k8s-demo
        spec:
          ports:
            - name: api
              port: 8080
              protocol: TCP
              targetPort: 8080
          selector:
            app: k8s-demo
        
    ---
        apiVersion: extensions/v1beta1
        kind: Ingress  #定义ingress
        metadata:
          name: k8s-demo-ingress
          namespace: default
        spec:
          rules:
          - host: k8s-demo.local  #ingress名称
            http:
              paths:
              - path: /
                backend:
                  serviceName: k8s-demo-svc
                  servicePort: api
  • 相关阅读:
    界面版按键精灵的使用【包含内置浏览器、打开程序的方法】
    按键精灵【找图片,并打开该图或打开且关闭两段代码】
    tomcat零碎知识点
    windows server 2008运维
    上传文件与读取文件列表以及创建文件
    Tomcat和win2008运维常识及方法
    Linux权限问题
    Summary
    iOS 高阶
    iOS
  • 原文地址:https://www.cnblogs.com/5bug/p/12733863.html
Copyright © 2011-2022 走看看