前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes 1.20.5 实现一个服务注册与发现到Nacos

Kubernetes 1.20.5 实现一个服务注册与发现到Nacos

原创
作者头像
对你无可奈何
修改2021-04-15 17:45:31
2.4K0
修改2021-04-15 17:45:31
举报
文章被收录于专栏:运维专栏

背景:

参照 Kubernetes 1.20.5搭建nacos,在kubernetes集群中集成了nacos服务。想体验下服务的注册与发现功能。当然了 也想体验下sentinel各种的集成,反正就是spring cloud alibaba全家桶的完整体验啊......一步一步来吧哈哈哈。先来一下服务的注册与发现。

特别鸣谢https://blog.didispace.com/spring-cloud-alibaba-1/,程序猿DD的系列文章昨天无意间看到的,很不错,已经收藏。

一. maven打包构建应用IMAGE镜像

注意:以下maven打包构建流程基本copy自https://blog.didispace.com/spring-cloud-alibaba-1/。所以就不做代码的搬运工了。项目演示的代码都可以去程序猿DD大佬的github去下载。

关 于服务提供者与服务消费者alibaba-nacos-discovery-server为服务提供者 alibaba-nacos-discovery-client-common为服务消费者强调一下。

1. 构建alibaba-nacos-discovery-server image

嗯 还的强调一下服务提供者!这个是......

由于我个人打包测试是要在kubernets集群中使用,并且跟nacos服务在同一命名空间。连接nacos这里我就使用了内部服务名。package 打包 target目录下生成alibaba-nacos-discovery-server-0.0.1-SNAPSHOT.jar jar包。

上传包到服务器改名app.jar ,复用Dockerfile

代码语言:txt
复制
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD app.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

打包镜像,将镜像上传到镜像仓库(个人使用了腾讯云的私有仓库,当然了也可以自己安装harbor做仓库)。

代码语言:txt
复制
mv alibaba-nacos-discovery-server-0.0.1-SNAPSHOT.jar app.jar
docker build -t ccr.ccs.tencentyun.com/XXXX/alibaba-nacos-discovery-server:0.1 .
docker push  ccr.ccs.tencentyun.com/XXXX/alibaba-nacos-discovery-server:0.1 

2 . 构建libaba-nacos-discovery-client-common image

基本步骤与上一步一样:

二. Kubernetes集群部署服务

1. 部署alibaba-nacos-discovery-server

cat alibaba-nacos-discovery-server.yaml

代码语言:txt
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: alibaba-nacos-discovery-server
spec:
  replicas: 1
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  selector:
    matchLabels:
      app: alibaba-nacos-discovery-server
  template:
    metadata:
      labels:
        app: alibaba-nacos-discovery-server
    spec:
      containers:
        - name: talibaba-nacos-discovery-server
          image: ccr.ccs.tencentyun.com/XXXX/alibaba-nacos-discovery-server:0.1
          ports:
            - containerPort: 8001
          resources:
            requests:
              memory: "256M"
              cpu: "250m"
            limits:
              memory: "512M"
              cpu: "500m" 
      imagePullSecrets:                                              
        - name: tencent
---

apiVersion: v1
kind: Service
metadata:
  name: alibaba-nacos-discovery-server
  labels:
    app: alibaba-nacos-discovery-server
spec:
  ports:
  - port: 8001
    protocol: TCP
    targetPort: 8001
  selector:
    app: alibaba-nacos-discovery-server
代码语言:txt
复制
kubectl apply -f alibaba-nacos-discovery-server.yaml -n nacos

kubectl get pods -n nacos

登陆nacos管理地址可以发现服务管理-服务列表有alibaba-nacos-discovery-server注册

2. 部署alibaba-nacos-discovery-client-common

消费者 消费者 消费者。自己老记不住

cat alibaba-nacos-discovery-client-common.yaml

代码语言:txt
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: alibaba-nacos-discovery-common
spec:
  replicas: 1
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  selector:
    matchLabels:
      app: alibaba-nacos-discovery-common
  template:
    metadata:
      labels:
        app: alibaba-nacos-discovery-common
    spec:
      containers:
        - name: talibaba-nacos-discovery-common
          image: ccr.ccs.tencentyun.com/XXXX/alibaba-nacos-discovery-client-common:0.1
          ports:
            - containerPort: 9000
          resources:
            requests:
              memory: "256M"
              cpu: "250m"
            limits:
              memory: "512M"
              cpu: "500m" 
      imagePullSecrets:                                              
        - name: tencent
---

apiVersion: v1
kind: Service
metadata:
  name: alibaba-nacos-discovery-common
  labels:
    app: alibaba-nacos-discovery-common
spec:
  ports:
  - port: 9000
    protocol: TCP
    targetPort: 9000
  selector:
    app: alibaba-nacos-discovery-common
代码语言:txt
复制
kubectl apply -f alibaba-nacos-discovery-client-common.yaml -n nacos

这个时候登陆nacos管理页面应该是有alibaba-nacos-discovery-client-common服务注册了。

3. 更改alibaba-nacos-discovery-server副本数验证服务

仔细看了下https://blog.didispace.com/spring-cloud-alibaba-1/ 他启动了两个alibaba-nacos-discovery-server实例,嗯 两个服务提供者。好验证一下nacos将服务上线下线的基础功能。正好我也扩容一下顺便补习一下scale命令

代码语言:txt
复制
kubectl scale deployment/alibaba-nacos-discovery-server --replicas=2 -n nacos

前面访问alibaba-nacos-discovery-server服务都是只有10.0.5.120一个ip,deployment扩容完成后访问alibaba-nacos-discovery-client-common(消费者)放回了两个服务提供者轮训方式的两个ip。

观察nacos管理web页面,服务列表alibaba-nacos-discovery-server实例数量,健康实例都已经变成2:

点开alibaba-nacos-discovery-server服务详情。嗯集群下出现了两个实例的具体信息。

看到集群实例配置这里有个下线的功能想体验一下:

下线了10.5.208的实例 再访问一下。发现确实只有10.0.5.120节点了:

恢复实例访问服务提供者10.5.208。点击上线,不做其他设置。继续访问消费者应用应该是两个ip的轮询权重一样的:

简单记录 简单记录。积少成多........

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景:
    • 一. maven打包构建应用IMAGE镜像
      • 1. 构建alibaba-nacos-discovery-server image
        • 2 . 构建libaba-nacos-discovery-client-common image
        • 二. Kubernetes集群部署服务
          • 1. 部署alibaba-nacos-discovery-server
            • 2. 部署alibaba-nacos-discovery-client-common
              • 3. 更改alibaba-nacos-discovery-server副本数验证服务
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档