k8s发布eureka集群,创建微服务项目

这篇具有很好参考价值的文章主要介绍了k8s发布eureka集群,创建微服务项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.创建eureka服务

1.1创建父级项目,父级项目pom.xml文件中的打包类型为pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.digua</groupId>
    <artifactId>cloud</artifactId>
    <version>release</version>
    <packaging>pom</packaging>
    <modules>
        <module>eureka</module>
        <module>order</module>
        <module>monitor</module>
        <module>common</module>
        <module>zuul</module>
    </modules>
    <properties>
        <java.version>1.8</java.version>
        <mybatis.plus.version>3.4.2</mybatis.plus.version>
        <mysql.connect.java.version>8.0.27</mysql.connect.java.version>
        <druid.version>1.2.8</druid.version>
        <spring-boot-dependencies.version>2.3.7.RELEASE</spring-boot-dependencies.version>
        <spring-cloud-dependencies.version>Hoxton.SR12</spring-cloud-dependencies.version>
    </properties>
</project>

1.2创建eureka服务
1.1.2配置pom.xml依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.digua</groupId>
		<artifactId>cloud</artifactId>
		<version>release</version>
	</parent>
	<groupId>com</groupId>
	<artifactId>eureka</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>eureka</name>
	<packaging>jar</packaging>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud-dependencies.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<!--springboot依赖-->
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-dependencies</artifactId>
				<version>${spring-boot-dependencies.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
			<version>2.2.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<version>2.3.7.RELEASE</version>
		</dependency>
	</dependencies>
	<build>
		<finalName>eureka</finalName>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<includeSystemScope>true</includeSystemScope>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<skipTests>true</skipTests>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

1.1.3创建eureka的application.yml文件

server:
  port: 8001
spring:
  application:
    name: eureka01
eureka:
  client:
    service-url:
      defaultZone: ${EUREKA_URL:http://127.0.0.1:8001/eureka/}

1.2构建项目推送到docke仓库
此步骤省略可参考以下连接
1.2.1-docker安装配置
1.2.2-Dockerfile 文件编写
1.2.3 -jenkins构建项目
1.2.4-Harbor仓库搭建

2.创建k8s对应的yaml文件

2.1 由于eureka是集群形式存在,可以有一个也可以有N个,对于eureka的相互注册要保持有序,所以使用k8s中的StatefulSets来进行
2.1.1- StatefulSet是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为无状态服务而设计),配合Headless Service(无头服务) 进行服务的扩缩容

##格式会程这种样式
statefulSet的名称-0(从0开始每增加一个pod就递增).Headless (无头服务名称).命名空间.svc.cluster.local
statefulSetName-{0...N-1}.serviceName.namespace.svc.cluster.local

2.2 创建 Headless Service 无头服务

apiVersion: v1
kind: Service
metadata:
  name: eureka-hl  ##服务名称
  namespace: test  ##命名空间
spec:
  clusterIP: None  ##无头服务
  ports:
  - name: eureka
    port: 8001
    protocol: TCP
    targetPort: 8001
  selector:
    workload.user.cattle.io/workloadselector: apps.statefulset-test-eureka
  sessionAffinity: None
  type: ClusterIP

2.3 创建 StatefulSet 有状态服务

apiVersion: apps/v1
kind: StatefulSet   ##资源类型
metadata:
  labels:
    workload.user.cattle.io/workloadselector: apps.statefulset-test-eureka
  name: eureka      ##服务名称
  namespace: test   ##命名空间
spec:
  podManagementPolicy: OrderedReady
  replicas: 2        ##副本数目
  revisionHistoryLimit: 10    ##历史最大保留数目
  selector:
    matchLabels:
      workload.user.cattle.io/workloadselector: apps.statefulset-test-eureka
  serviceName: eureka-hl  ## Headless Service 无头服务名称
  template:
    metadata:
      labels:
        workload.user.cattle.io/workloadselector: apps.statefulset-test-eureka
    spec:
      containers:    ##容器信息
      - env:
        - name: EUREKA_URL
        - ##相同的服务内可以简写,如下
          value: http://eureka-0.eureka-hl:8001/eureka/,http://eureka-1.eureka-hl:8001/eureka/
        image: 192.168.34.8:85/hhd/eureka:1   ##镜像
        imagePullPolicy: Always    ##拉取策略
        name: eureka
      restartPolicy: Always        ##重启策略
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
  updateStrategy:
    rollingUpdate:
      partition: 0
    type: RollingUpdate

3.部署查看eureka服务

3.1使用命令部署两个服务

kubectl create -f 文件名称.yaml

3.2.查看服务

kubectl get sts eureka -n test

k8s发布eureka集群,创建微服务项目
3.3 通过浏览器查看eureka的dashboard页面
3.3.1 首先暴露eureka的NodePort端口

apiVersion: v1
kind: Service
metadata:
  name: eureka-np
  namespace: test
spec:
  clusterIP: 10.108.244.16
  externalTrafficPolicy: Cluster
  ports:
  - name: eureka
    nodePort: 30001
    port: 8001
    protocol: TCP
    targetPort: 8001
  selector:
    workload.user.cattle.io/workloadselector: apps.statefulset-test-eureka
  sessionAffinity: None
  type: NodePort

k8s发布eureka集群,创建微服务项目

4.k8s中部署微服务的其他模块

4.1创建服务对应的pom.xml依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cloud</artifactId>
        <groupId>com.digua</groupId>
        <version>release</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com</groupId>
    <artifactId>order</artifactId>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud-dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--springboot依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot-dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>
    <build>
        <finalName>order</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

4.2 配置application.yml文件

server:
  port: 8011
spring:
  application:
    name: order-server01
eureka:
  client:
    service-url:
      defaultZone: ${EUREKA_URL:http://127.0.0.1:8001/eureka/}

4.3 构建发布harbor过程忽略,当前发布的是一个无状态服务,所以用到Deployment无状态服务
请注意,因为是同一个命名空间下,可以直接通过Headless的服务名称访问pod

上边2.2部分创建的Headless,通过 eureka-hl 既可以轮询访问下边的pod
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    workload.user.cattle.io/workloadselector: apps.deployment-test-order
  name: order
  namespace: test
spec:
  progressDeadlineSeconds: 600
  replicas: 0
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      workload.user.cattle.io/workloadselector: apps.deployment-test-order
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        workload.user.cattle.io/workloadselector: apps.deployment-test-order
    spec:
      containers:
      - env:
        - name: EUREKA_URL
           ##可以通过Headless 的服务名称直接访问
          value: http://eureka-hl:8001/eureka/
        image: 192.168.34.8:85/hhd/order:1
        imagePullPolicy: Always
        name: order
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler

4.4 发布项目,并在eureka的dashboard页面查看

kubectl apply -f 文件名称.yaml

k8s发布eureka集群,创建微服务项目文章来源地址https://www.toymoban.com/news/detail-431426.html

到了这里,关于k8s发布eureka集群,创建微服务项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 原生K8S部署pig微服务项目

    项目地址:码云 Pig微服务项目 基于 Spring Cloud 2021 、Spring Boot 2.7、 OAuth2 的 RBAC 权限管理系统 基于数据驱动视图的理念封装 element-plus,即使没有 vue 的使用经验也能快速上手 提供对常见容器化支持 Docker、Kubernetes、Rancher2 支持 提供 lambda 、stream api 、webflux 的生产实践 pig-ui –

    2024年02月03日
    浏览(33)
  • 云原生之深入解析K8s中的微服务项目设计与实现

    ① 微服务设计的思想 一个单片应用程序将被构建、测试并顺利地通过这些环境。事实证明,一旦投资于将生产路径自动化,那么部署更多的应用程序似乎就不再那么可怕了。请记住,CD的目标之一就是让部署变得无聊,所以无论是一个应用程序还是三个应用程序,只要它仍然

    2024年02月03日
    浏览(34)
  • 【kubernetes】关于k8s集群的资源发布方式(灰度/滚动发布)

    目录 一、常见的发布方式 二、详解kubectl陈述式方式做灰度发布(金丝雀发布) 步骤一:先基于deployment控制器创建pod,然后发布 步骤二:基于命令行灰度发布 步骤三:测试等到版本稳定以后,再完成继续发布 三、滚动发布详解 蓝绿发布:两套环境交替升级,旧版本保留一定

    2024年04月23日
    浏览(38)
  • kubeadm创建k8s集群

    kubeadm来快速的搭建一个k8s集群: 二进制搭建适合大集群,50台以上。 kubeadm更适合中下企业的业务集群。 master 192.168.10.10 dockerkubelet kubeadm kubectl flannel node1 192.168.10.20 dockerkubelet kubeadm kubectl flannel node2 192.168.10.30 dockerkubelet kubeadm kubectl flannel harbor 192.168.10.40 docker-compose hargordock

    2024年02月03日
    浏览(27)
  • jenkins发布Kubernetes(K8s)集群(基于containerd)

    上一篇文章 Jenkins入门与安装 1、k8s环境 版本 v1.26.5 ,容器为containerd 二进制安装Kubernetes(K8s)集群(基于containerd)—从零安装教程(带证书) 主机名 IP 系统版本 安装服务 master01 10.10.10.21 rhel7.5 nginx、etcd、api-server、scheduler、controller-manager、kubelet、proxy master02 10.10.10.22 rhel7.5 ngin

    2024年02月09日
    浏览(82)
  • 使用 Terraform 创建K8S集群

    Terraform 是一个开源的基础设施即代码 (Infrastructure as Code, IaC) 工具,由 HashiCorp 公司开发和维护。它用于自动化和管理云基础设施、服务和资源的创建、配置和部署。Terraform 允许开发人员和运维团队以声明性的语言描述基础设施,并使用代码的方式来管理基础设施,从而提高

    2024年02月08日
    浏览(28)
  • 通过 kk 创建 k8s 集群和 kubesphere

    官方文档:多节点安装 确保从正确的区域下载 KubeKey 下载 KubeKey 为 kk 添加可执行权限: 创建 config 文件 KubeSphere 版本:v3.3 支持的 Kubernetes 版本:v1.20.x、v1.21.x、* v1.22.x、* v1.23.x 和 * v1.24.x 修改 config 文件中 hosts 的 ip 和账号密码 执行 config 开始部署 k8s 集群和 kubesphere 创建成

    2024年02月12日
    浏览(24)
  • Rancher创建arm架构的下游k8s集群

    费了些时间在成功在华为云arm架构的服务器上搭建了k8s集群,期间问题不断,以下是三个关键点: 确保网络能正常拉取所需镜像 拉取的镜像需支持arm架构 否则报错:exec /pause: exec format error 集群网络驱动要选择flannel Rancher版本:v2.5.15 Rancher上的具体操作就不细说了,不懂的参

    2024年02月10日
    浏览(32)
  • K8S系列文章之 Kind 部署K8S的 服务发布

    下载  https://github.com/kubernetes-sigs/kind/releases/download/0.17.0/kind-linux-amd64 执行以下命令:  之前需要先在本地主机安装好docker  kubectl是Kubernetes的命令行工具,可以让我们通过命令访问、操作、管理Kubernetes集群。brew安装方法如下 安装完毕后,查看kubectl版本信息,确认安装成功

    2024年02月14日
    浏览(30)
  • 解密Kubernetes(K8s)集群的创建过程和关键步骤

    🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:云计算 ✨文章内容:Kubernetes集群 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗 创建Kubernetes集群是在云原生环境中托管和管理容器化应

    2024年02月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包