spring cloud kubernetes 学习记录(2):使用yaml配置

在上篇文章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):使用yaml配置)