Spring Cloud 使用 k8s 作为注册中心 开发环境 和 生产环境

这篇具有很好参考价值的文章主要介绍了Spring Cloud 使用 k8s 作为注册中心 开发环境 和 生产环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

因为 k8s 本身就有拥有注册中心,和配置中心的功能。如果还是用 Nacos、Eureka、Consul 之类的注册中心组件,就有点冗余了。当然这些组件还是可以继续用的。

所以,本教程,教授 Spring Cloud 使用 k8s 的注册中心。在开发环境和生产环境 的教程!

下面以一个最简单的 服务消费者 使用 OpenFeign 调用 服务提供者 的案例

源代码地址(我也不想用gitee,但是github太慢了):

https://gitee.com/thousmile/k8s-demo1

k8s-demo1 的 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>
    <packaging>pom</packaging>
    <groupId>com.xaaef.k8sdemo</groupId>
    <artifactId>k8s-demo1</artifactId>
    <version>1.1</version>
    <name>k8s-demo1</name>
    <description>k8s-demo1</description>

    <modules>
        <module>k8s-provider</module>
        <module>k8s-consumer</module>
    </modules>

    <properties>
        <java.version>17</java.version>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <maven-compiler.version>3.10.1</maven-compiler.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <hutool.version>5.8.9</hutool.version>
        <spring-boot.version>3.0.6</spring-boot.version>
        <spring-cloud.version>2022.0.2</spring-cloud.version>
    </properties>

    <dependencies>

        <!-- 生产环境用 kubernetes 注册中心 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-kubernetes-fabric8</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-core</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>


    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-bom</artifactId>
                <version>${hutool.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler.version}</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

服务提供者 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">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.xaaef.k8sdemo</groupId>
        <artifactId>k8s-demo1</artifactId>
        <version>1.1</version>
    </parent>

    <artifactId>k8s-provider</artifactId>
    <name>k8s-provider</name>

    <description>
        管理服务
    </description>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler.version}</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

服务提供者 application.yml

server:
  port: 18831

spring:
  application:
    name: k8s-provider
  profiles:
    active: dev

服务提供者 application-dev.yml

开发环境,禁用 k8s 的注册中心。就算启用,也没啥用,在本地idea中开发时,根本获取不到k8s注册中心的服务列表

spring:
  cloud:
    kubernetes:
      discovery:
        enabled: false

服务提供者 application-prod.yml

生产环境 启动k8s的注册中心,并且获取 “ sc ” 这个命名空间下所有的服务

spring:
  cloud:
    kubernetes:
      discovery:
        enabled: true
        namespaces:
          - "sc"

服务提供者 java代码


package com.xaaef.k8sdemo.provider;

import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.net.InetAddress;
import java.net.UnknownHostException;

@RequestMapping
@RestController
@EnableDiscoveryClient
@SpringBootApplication
public class ProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }

    @GetMapping()
    public String index() {
        return StrUtil.format("provider ===> : {}", IdUtil.fastSimpleUUID());
    }

    @GetMapping("hello")
    public String hello(@RequestParam("name") String name) throws UnknownHostException {
        var hostAddress = InetAddress.getLocalHost().getHostAddress();
        return StrUtil.format("provider -> {} : hello {}", hostAddress, name);
    }

}

服务提供者 Dockerfile (一定要根 src 同一个目录)

FROM eclipse-temurin:17-jre-alpine
MAINTAINER Wang Chen Chen<932560435@qq.com>
ENV VERSION 1.1
# 复制打包 完成后的jar文件,名字修改成 app.jar
COPY ./target/k8s-provider-1.1.jar app.jar
# 设置时区为上海
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
# 设置编码
ENV LANG C.UTF-8
# JVM参数
ENV JVM_OPTS="-server -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError"
# 服务暴露端口PORT
EXPOSE 18831
# 启动 Spring Boot App 命令
ENTRYPOINT java ${JVM_OPTS} -Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai -Djava.security.egd=file:/dev/./urandom -jar /app.jar

服务消费者 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">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.xaaef.k8sdemo</groupId>
        <artifactId>k8s-demo1</artifactId>
        <version>1.1</version>
    </parent>

    <artifactId>k8s-consumer</artifactId>
    <name>k8s-consumer</name>

    <description>
        管理服务
    </description>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
		
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-okhttp</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler.version}</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

消费者 application.yml

server:
  port: 18841

spring:
  application:
    name: k8s-consumer
  profiles:
    active: dev
  cloud:
    openfeign:
      client:
        config:
          default:
            connect-timeout: 1000
            read-timeout: 1000
            logger-level: full
      compression:
        request:
          enabled: true
        response:
          enabled: true
      circuitbreaker:
        enabled: true
        alphanumeric-ids:
          enabled: true
      okhttp:
        enabled: true

消费者 application-dev.yml

在本地idea 开发环境中,无法获取k8s注册中心的服务,所以需要自定义的服务实例信息。

原理请看 SimpleDiscoveryClient 和 SimpleDiscoveryProperties 配置类

spring:
  cloud:
    kubernetes:
      discovery:
        enabled: false
    discovery:
      client:
        simple:
          instances:
            k8s-provider:
              - instanceId: k8s-provider-${random.int}
                serviceId: k8s-provider
                host: localhost
                port: 18831

消费者 application-prod.yml

生产环境 启动k8s的注册中心,并且获取 “ sc ” 这个命名空间下所有的服务

spring:
  cloud:
    kubernetes:
      discovery:
        enabled: true
        namespaces:
          - "sc"

服务消费者 java 代码 ConsumerApplication.java

package com.xaaef.k8sdemo.consumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class ConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }

}

服务消费者 java 代码 RpcProviderService.java

package com.xaaef.k8sdemo.consumer;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient(name = "k8s-provider")
public interface RpcProviderService {

    @GetMapping("hello")
    String hello(@RequestParam("name") String name);
    
}

服务消费者 java 代码 IndexController.java

package com.xaaef.k8sdemo.consumer;

import lombok.AllArgsConstructor;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RequestMapping
@RestController
@AllArgsConstructor
public class IndexController {

    private final RpcProviderService providerService;

    private final DiscoveryClient discoveryClient;

	// 获取 注册中心 中所有的 服务ID
    @GetMapping("services")
    public List<String> services() {
        return discoveryClient.getServices();
    }
	
	// 根据 服务ID 获取服务实例
    @GetMapping("instances")
    public List<ServiceInstance> getInstances(@RequestParam String serviceId) {
        return discoveryClient.getInstances(serviceId);
    }

	// 调用 消费者服务
    @GetMapping("hello")
    public String hello() {
        return providerService.hello("consumer");
    }

}

服务消费者 Dockerfile (一定要根 src 同一个目录)

FROM eclipse-temurin:17-jre-alpine
MAINTAINER Wang Chen Chen<932560435@qq.com>
ENV VERSION 1.1
# 复制打包 完成后的jar文件,名字修改成 app.jar
COPY ./target/k8s-consumer-1.1.jar app.jar
# 设置时区为上海
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
# 设置编码
ENV LANG C.UTF-8
# JVM参数
ENV JVM_OPTS="-server -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError"
# 服务暴露端口PORT
EXPOSE 18841
# 启动 Spring Boot App 命令
ENTRYPOINT java ${JVM_OPTS} -Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai -Djava.security.egd=file:/dev/./urandom -jar /app.jar

test.http 测试

### 消费者  获取所有服务名
GET http://localhost:18841/services

### 消费者  根据服务名获取详情
GET http://localhost:18841/instances?serviceId=k8s-provider

### 消费者  调用提供者。
GET http://localhost:18841/hello

## 结果 provider -> 192.168.0.167 : hello consumer

项目打包成 docker 镜像

k8s 注册中心,spring cloud,kubernetes,java

服务提供者 docker 构建镜像

docker build -t k8s-provider:1.1 ./

k8s 注册中心,spring cloud,kubernetes,java

服务消费者 docker 构建镜像

docker build -t k8s-consumer:1.1 ./

k8s 注册中心,spring cloud,kubernetes,java

到这里有两个选择,1.将镜像推送到 阿里云docker仓库中,然后在k8s集群中再拉下来、

2.将 镜像导出成 .tar 文件。然后手动上传到 k8s 集群的容器中。在这里使用第二种,我的网络不太好

## 将 消费者和提供者 保存到 k8s-demo1.tar 文件中。
docker save -o k8s-demo1.tar k8s-consumer:1.1 k8s-provider:1.1

## k8s 的容器如果是 docker 。切记集群有几个工作节点,就要导入几次。
docker load -i k8s-demo1.tar

## k8s 的容器如果是 containerd
ctr -n k8s.io image import k8s-demo1.tar

k8s 服务 yaml

apiVersion: v1
kind: Namespace
metadata:
  name: sc
  labels:
    name: spring-cloud-k8s
---
### 创建一个账号 然后关联集群管理员的权限。否则 消费者 无法获取到 “sc” 命名空间中的 服务
apiVersion: v1
kind: ServiceAccount
metadata:
  name: k8s-demo1
  namespace: sc
  labels:
    app: sc-k8s-demo1
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: k8s-demo1
  namespace: sc
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: k8s-demo1
    namespace: sc

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: k8s-consumer
  namespace: sc
  labels:
    app: k8s-consumer
spec:
  replicas: 3
  template:
    metadata:
      name: k8s-consumer
      labels:
        app: k8s-consumer
    spec:
      serviceAccountName: k8s-demo1
      containers:
        - name: k8s-consumer
          image: k8s-consumer:1.1
          imagePullPolicy: IfNotPresent
          env:
            - name: SPRING_PROFILES_ACTIVE
              value: prod
      restartPolicy: Always
  selector:
    matchLabels:
      app: k8s-consumer

---
apiVersion: v1
kind: Service
metadata:
  name: k8s-consumer
  namespace: sc
  labels:
    app: k8s-consumer
spec:
  type: ClusterIP
  selector:
    app: k8s-consumer
  ports:
    - port: 18841
      targetPort: 18841

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: k8s-provider
  namespace: sc
  labels:
    app: k8s-provider
spec:
  replicas: 3
  template:
    metadata:
      name: k8s-provider
      labels:
        app: k8s-provider
    spec:
      serviceAccountName: k8s-demo1
      containers:
        - name: k8s-provider
          image: k8s-provider:1.1
          imagePullPolicy: IfNotPresent
          env:
            - name: SPRING_PROFILES_ACTIVE
              value: prod
      restartPolicy: Always
  selector:
    matchLabels:
      app: k8s-provider

---
apiVersion: v1
kind: Service
metadata:
  name: k8s-provider
  namespace: sc
  labels:
    app: k8s-provider
spec:
  type: ClusterIP
  selector:
    app: k8s-provider
  ports:
    - port: 18831
      targetPort: 18831

---
################## ingress myapp ##################
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: k8s-demo1
  namespace: sc
  labels:
    app: k8s-demo1
spec:
  ingressClassName: nginx
  rules:
    - host: consumer.example.com
      http:
        paths:
          - path: "/"
            pathType: Prefix
            backend:
              service:
                name: k8s-consumer
                port:
                  number: 18841

    - host: provider.example.com
      http:
        paths:
          - path: "/"
            pathType: Prefix
            backend:
              service:
                name: k8s-provider
                port:
                  number: 18831

启动 消费者 和 提供者 服务

kubectl apply -f k8s-demo1.yaml

1.编辑 C:\Windows\System32\drivers\etc\hosts

### 192.168.2.33 即是k8s集群中 ingress 的 ip
192.168.2.33 provider.example.com
192.168.2.33 consumer.example.com

test.http 测试

### 消费者  获取所有服务名
GET http://consumer.example.com/services

### 消费者  根据服务名获取详情
GET http://consumer.example.com/instances?serviceId=k8s-provider

### 消费者  调用提供者。
GET http://consumer.example.com/hello

## 结果 provider -> 10.233.76.8 : hello consumer

2.使用 kt-connect 的VPN能力,直接访问k8s集群内部的 service

官方文档 https://alibaba.github.io/kt-connect/#/文章来源地址https://www.toymoban.com/news/detail-609438.html

ktctl connect

test.http 测试

### 消费者  获取所有服务名
GET http://k8s-consumer.sc.svc:18841/services

### 消费者  根据服务名获取详情
GET http://k8s-consumer.sc.svc:18841/instances?serviceId=k8s-provider

### 消费者  调用提供者。
GET http://k8s-consumer.sc.svc:18841/hello

## 结果 provider -> 10.233.76.8 : hello consumer

至此,开发环境使用配置的服务列表。生产环境k8s的注册中心。不需要修改任何代码。只需要切换spring.profiles.active 的环境接口。如果有人知道更方便的方式,可以留言给我!

spring boot 、mybatis-plus、mysql 的 schema 多租户 项目 请大家去点个赞

https://github.com/thousmile/molly-multi-tenant

到了这里,关于Spring Cloud 使用 k8s 作为注册中心 开发环境 和 生产环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Spring Cloud微服务在Windows本地开发时禁用Nacos注册中心注册

    码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 本文将介绍如何在Spring Cloud微服务架构中,实现在Windows本地开发环境下禁用服务自动注册到Nacos注册中心,而在Linux服务器环境下则自动启用注册功能。这样的配置有助于开发者在本

    2024年03月18日
    浏览(118)
  • spring cloud gateway k8s优雅启停

    通过配置readiness探针和preStop hook,实现优雅启动和停止(滚动部署) 1. k8s工作负载配置 2. 网关改造 经过测试发现,可以实现请求0失败

    2024年03月22日
    浏览(50)
  • K8s使用Ceph作为后端存储

    Ceph概述 部署Ceph集群 Ceph存储使用 Pod使用Ceph持久化数据 Ceph监控 Rook部署Ceph Ceph介绍 Ceph架构 Ceph核心概念 Ceph是一个开源的分布式存储系统,具有高扩展性、高性能、高可靠性等特点,提 供良好的性能、可靠性和可扩展性。支持对象存储、块存储和文件系统。 是目前为云平台

    2024年02月15日
    浏览(41)
  • 【Kubernetes】k8s使用minio作为对象存储

    k8s version:v1.20.15 minio version :v4.4.16 (1)安装kubectl-minio插件 自选minio-operaterd的版本下载包 minio-operater plugin 访问地址:http://ip:9090 1、sc-minio.yaml 创建 2、 创建所需的永久卷 序号 路径 容量 (G) 说明 所在节点 1 /data/1 5 租户使用 3个节点各1个 2 /data/log1 5 租户使用 3个节点各1个

    2024年04月09日
    浏览(51)
  • 使用Spring Cloud实现分布式系统的注册中心——nacos详解

    Nacos是一个全新的分布式系统服务框架,它能够提供服务发现、配置管理、动态DNS、流量管理等多种功能。其中最为重要的功能之一就是服务发现,可以使得开发者更加方便地管理和维护分布式系统的各个服务。 在Spring Cloud中,我们可以使用Nacos作为注册中心,实现服务的注

    2024年02月05日
    浏览(53)
  • spring cloud使用git作为配置中心,git开启了双因子认证,如何写本地配置文件

    spring cloud使用git作为配置中心,git开启了双因子认证,死活认证不成功!!!!! 报错 org.eclipse.jgit.api.errors.TransportException: https://git.qualink.com/zhaoxin15/sc-config.git: not authorized 或者就是 java.net.ConnectException: Connection refused: connect 如果你的git也开启了双因子认证,那么配置

    2024年02月11日
    浏览(44)
  • 搭建NFS服务器,部署k8s集群,并在k8s中使用NFS作为持久化储存

    🐇明明跟你说过:个人主页 🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、k8s概述 2、NFS简介 二、NFS服务器搭建 1、准备NFS 服务器 2、搭建NFS服务 三、安装k8s集群 1、环境准备 2、禁用防火墙和SELinux 3、设置时间同步

    2024年04月13日
    浏览(39)
  • ​k8s 1.24 1.25 集群使用docker作为容器

    背景 在新版本Kubernetes环境(1.24以及以上版本)下官方不在支持docker作为容器运行时了,若要继续使用docker 需要对docker进行配置一番。需要安装cri-docker作为Kubernetes容器 查看当前容器运行时 安装docker 安装cri-docker 为kubelet配置容器运行时 关于 https://www.oiox.cn/ https://www.oiox.cn

    2024年02月12日
    浏览(70)
  • Spring Cloud集成Nacos作为配置中心

    Nacos的安装与配置 Spring Cloud集成Nacos作为注册中心 LoadBalacer集成Nacos实现负载均衡 常见的负载均衡策略分析 Spring Cloud集成Dubbo实现RPC调用 前面我们已经介绍了 Nacos 的安装与配置, Spring Cloud 集成 Nacos 作为服务的注册中心,集成 Nacos 实现服务的负载均衡和一些常见的负载均衡

    2024年02月15日
    浏览(57)
  • 在k8s中,使用DirectPV CSI作为分布式存储的优缺点

    DirectPV 提供了一种直接将物理卷(Physical Volumes)与 Kubernetes 集群中的 Pod 绑定的机制。 利用 DirectPV,你可以将相应的 PV 直接与节点上的物理存储设备(如磁盘)进行绑定,而无需通过网络存储服务(如 NFS 或 Ceph)来提供存储。这种直接访问物理卷的方式,有助于提高性能和

    2024年02月19日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包