美文网首页spring cloud Kubernetes 学习记录
spring cloud kubernetes 学习记录(2):

spring cloud kubernetes 学习记录(2):

作者: hero_zh | 来源:发表于2018-12-06 16:08 被阅读0次

    在上篇文章spring cloud kubernetes 学习记录(1):hello world 中,建立了hello-world项目,并用命令得方式在kubernetes中进行启动。
    但命令得方式,还是太过于简单,这次,我们对 hello-world 项目进行 kubernetes 得yaml得配置。
    首先,我们需要对上次生成得 deployment 与 service 进行清除,使用以下命令:

    kubectl delete deployment hello-world
    kubectl delete service hello-world
    

    在清除之后,使用 get 命令进行查看,是否存在,不存在则为清除成功。
    Docker镜像没有改动,所以不需要改动,下面开始编写yaml配置文件。

    ymal

    创建 hello-world.ymal 文件后,写入以下内容:

    kind: Service
    apiVersion: v1
    metadata:
      name: hello-world
    spec:
      selector:
        app: hello-world
      ports:
      - protocol: TCP
        port: 8080
        nodePort: 30001
      type: NodePort
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-world
    spec:
      selector:
        matchLabels:
          app: hello-world
      replicas: 3
      template:
        metadata:
          labels:
            app: hello-world
        spec:
          containers:
            - name: hello-world
              image: hello_world:latest
              imagePullPolicy: Never
              ports:
                - containerPort: 8080
    

    该配置文件内容,分为两个部分,--- 以上得为定义 service , --- 以下得为定义 deployment。

    service

    1、metadata.name:定义了 service 得名称。
    2、selector.app: 定义了pod得名称
    3、ports.protocol && ports.port :定义了pod得端口
    4、ports.nodePort:定义了对外得端口,type 为 NodePort 需要在 30000-32767 中。
    5、spec.type:定义了 service 得网络类型,NodePort 表示可以被外访问。

    deployment

    1、metadata.name:定义了 deployment 得名称。
    2、spec.selector:定义了管理得pods,这里定义了匹配得app 为 hello-world (matchLabels.app: hello-world)
    3、spec.replicas:定义了pod得服务数量,这里为开启3个pod服务
    4、template:定义实际得pod
    5、metadata.labels.app:定义pod得名称
    6、spec.containers:定义pod得容器
    7 、image :定义容器得镜像名称与版本
    8、imagePullPolicy:定义拉取image得方式,这里为从本地拉取
    9、ports.containerPort:定义pod打开得端口

    yaml 格式参考: 使用YAML创建一个 Kubernetes Depolyment

    定义好之后,执行以下命令进行部署

    kubectl create -f hello-world.yaml
    

    执行后,查看下部署得状态

    deployment.png pods.png service.png

    可以看到,pod 开启了3个,进行了负载均衡,并且service得端口为30001,不再是之前得随机数。

    我们用上文得接口进行访问测试一下。


    /.png
    /services/.png

    接口访问成功,yaml配置部署,就已经完成了。

    kubernetes 负载均衡

    这是扩展学习,上面我们开启了3个hello-world得pod,下面我们使用 kubernetes 得命令对 hello-world进行动态缩减与扩充。

    使用下面得命令,将hello-world得服务缩减为0个:

    kubectl scale --replicas=0 deployment/hello-world
    

    执行完成之后,查看一下 deployment 和 pod 得状态:

    deployment.png pods.png

    可以看到,hello-world得pod已经全部被关闭,尝试调用接口:


    /.png

    接口也无法调用,接下来我们将pod设置为1个:

    kubectl scale --replicas=1 deployment/hello-world
    

    等待一会,查看pod状态:


    pod.png

    可以看到启动了一个pod,尝试调用接口:


    /.png

    接口调用成功。

    相关文章

      网友评论

        本文标题:spring cloud kubernetes 学习记录(2):

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