ubuntu从0搭建k8s

224 阅读1分钟

为了从0到1搭建一个能够部署Spring Boot项目到Kubernetes (k8s) 的环境,你需要完成以下步骤:

安装和配置Docker。 安装和配置kubectl。 安装Minikube或其他k8s集群。 创建Spring Boot项目并打包为Docker镜像。 编写k8s部署配置文件。 部署到k8s集群。

以下是具体的操作步骤和示例代码:

安装Docker: bash

在Ubuntu上

sudo apt-get update sudo apt-get install docker-ce

安装kubectl: bash

在Ubuntu上

curl -LO https://storage.googleapis.com/kubernetes/release/$(curl -s https://storage.googleapis.com/kubernetes/release/stable.txt)/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl 安装Minikube: bash

在Ubuntu上

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 chmod +x minikube sudo mv minikube /usr/local/bin/

启动Minikube:

bash minikube start 创建Spring Boot项目并编写一个简单的Controller:

java
@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello from Spring Boot on Kubernetes!";
    }
}

在项目的pom.xml中添加Docker插件配置: xml

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.0.0</version>
    <configuration>
        <imageName>your-docker-id/springboot-k8s</imageName>
        <dockerDirectory>src/main/docker</dockerDirectory>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

在src/main/docker目录下创建一个名为Dockerfile的文件:

dockerfile
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD springboot-k8s.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

创建k8s部署配置文件deployment.yaml: yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: springboot-k8s-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: springboot-k8s
  template:
    metadata:
      labels:
        app: springboot-k8s
    spec:
      containers:
      - name: springboot-k8s
        image: your-docker-id/springboot-k8s
        ports:
        - containerPort: 8080
        

创建服务配置文件service.yaml: yaml

apiVersion: v1
kind: Service
metadata:
  name: springboot-k8s-service
spec:
  selector:
    app: springboot-k8s
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: LoadBalancer

使用以下命令部署到k8s: bash 构