美文网首页
kubernetes 简单操作deployment,servic

kubernetes 简单操作deployment,servic

作者: TryCatch菌 | 来源:发表于2020-04-30 09:48 被阅读0次

    搭建的基础

    • Linux: CentOS-7-x86_64-DVD-1810.iso
    • Docker: docker-ce-18.03.1.ce
    • kubernetes: kubernetes v1.16.7

    搭建k8s的博文:
    CentOS7安装kubernetesv1.16.7
    docker镜像博文
    CentOS7 从零开始搭建一个jdk+tomcat的docker环境


    创建pod

    首先通过deployment 创建pod,使用如下yaml文件用于设定Deployment,需要注意docker镜像必须在本地dokcer仓库中有或者能从镜像仓库拉取到,注意不要有空行,table的缩进。这里的docker镜像是上面博文步骤自己先的一个简单的镜像
    准备deployment.yaml文件

    apiVersion: apps/v1 #apiVersion是当前配置格式的版本
    kind: Deployment #kind是要创建的资源类型
    metadata:  #metadata是该资源的元数据,name是必须的元数据项
      #指定deployment的名称
      name: demo-deployment
      labels:
        app: ecs-demo  #标签
    spec:
      #期望创建3个实例(3个pod)
      replicas: 3
      selector: # .spec.selector 必须匹配 .spec.template.metadata.labels,否则它将被API拒绝。如果 .spec.selector 没有被指定, .spec.selector.matchLabels 默认是 .spec.template.metadata.labels
        #选择label:app=ecs-demo的pod来创建实例
        matchLabels:   #metadata定义Pod的元数据,至少要顶一个label,label的key和value可以任意指定
          app: ecs-demo
      template:
        metadata:
          labels:
            app: ecs-demo
        spec:
          containers:
          - name: ecs-demo
            image: wangzhh/login_demo:20200429   # docker imange地址  REPOSITORY:TAG
            ports:
            - containerPort: 8080 #暴露给service的地址
            readinessProbe: #就绪探针
              httpGet:
                port: 8080
                path: /
              initialDelaySeconds: 50 # initialDelaySeconds这个参数 机器新能不好调大
              periodSeconds: 10
            livenessProbe:
              httpGet:
                path: /
                port: 8080
                scheme: HTTP
              initialDelaySeconds: 50 # initialDelaySeconds这个参数 机器新能不好调大
              periodSeconds: 10
    

    在master节点执行命令

    kubectl create -f deployment.yaml
    

    如图所示为创建成功


    image.png

    查看一下创建的deployment

    kubectl get deployment -o wide
    

    看到运行的pod数量也在期望的范围内


    image.png

    查看pod运行在哪个node上

    kubectl get pod -o wide
    
    image.png

    如果要删除pod,直接删除pod是不行的,因为我们是通过deployment创建的pod,里面定义了pod的数量,删除了会自动创建,所以我们要删除deployment,删除后查看可以发现

    kubectl delete deployment <deploymentName>
    

    或者

    kubectl delete -f deployment.yaml 
    
    image.png

    创建service

    一样通过yaml创建

    apiVersion: v1 #apiVersion是当前配置格式的版本
    kind: Service #kind是要创建的资源类型
    metadata: #metadata是该资源的元数据,name是必须的元数据项
      name: demo-service
    spec:
      selector: # selector 指明挑选那些 label 为 run: xx 的 Pod 作为 Service 的后端。
        app: ecs-demo
      ports:  #将Service 的 8080 端口映射到 Pod 的 8080 端口,使用 TCP 协议
      - protocol: TCP
        port: 8080
        targetPort: 8080
        nodePort: 30036  # nodePort,它指定节点上开放的端口值 端口范围只能是 30000-32767,如果不指定这个端口,系统将选择一个随机端口
      sessionAffinity: ClientIP # service内部实现session保持
      sessionAffinityConfig:
        clientIP:
            timeoutSeconds: 10800 # timeoutSeconds指的是session保持的时间,这个时间默认是10800秒,也就是三个小时
      type: NodePort # 暴露service的三种方式 NodePort,LoadBalancer 和 Ingress 
    

    在master节点执行命令

    kubectl create -f service.yaml
    

    如下创建成功


    image.png

    浏览器访问一下


    image.png

    基础的k8s集群应用搭建完成了,后续再完善滚动升级,热扩容和nginx代理这些

    相关文章

      网友评论

          本文标题:kubernetes 简单操作deployment,servic

          本文链接:https://www.haomeiwen.com/subject/lenawhtx.html