k8s部署springboot应用

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

k8s部署springboot应用

1.前置条件

已经搭建好kubernetes1.25.4集群

Kubernetes 1.25.4版本安装_V胡桃夹子的博客-CSDN博客

kubeasz安装kubernetes1.25.5_V胡桃夹子的博客-CSDN博客

本文介绍的springboot应用部署自定义k8s namespacee部署单节点。

从docker转到containerd命令行工具ctr和crictl不怎么好用或者说不怎么熟悉所有产生nerdctl。
nerdctl是一个较新的containerd工具兼容docker命令行工具而且比ctr覆盖更全面另外还支持docker-compose(不包括swarm)以及一些可选的高级特性。
从使用体验上来说nerdctl和docker一致的。

安装nerdctl

mkdir -p nerdctl
cd nerdctl
wget https://github.com/containerd/nerdctl/releases/download/v1.0.0/nerdctl-1.0.0-linux-amd64.tar.gz
tar -xf nerdctl-1.0.0-linux-amd64.tar.gz
cp nerdctl /usr/local/bin/

查看k8s.io工作空间镜像:

nerdctl -n k8s.io image ls

导入本地镜像至k8s.io工作空间
前置条件已经安装nerdctl

nerdctl load  -i fast-testing.tar.gz --namespace k8s.io

2. 创建springboot部署yaml文件

注意这里 docker.xxx.io/fast-testing 镜像已提前导入K8s工作空间。
创建springboot应用部署文件 fast-testing-k8s-deployment.yaml

cat > fast-testing-k8s-deployment.yaml<<EOF
---
# namespace
apiVersion: v1    # kubectl api-versions 可看版本信息
kind: Namespace   # k8s资源类型Namespace资源
metadata:         # 必选元数据
  name: develop   # 声明工作空间名称
  labels:         # 自定义标签列表
    name: develop # 设置namespace的label标签
---
apiVersion: v1            # kubectl api-versions 可看版本信息
kind: Service             # k8s资源类型Namespace资源
metadata:                 # 必选元数据
  namespace: develop      # Pod所属的命名空间不指定则默认为"default"
  name: fast-testing-app  # 声明名称
  labels:                 # 自定义标签列表
    app: fast-testing-app # 标签名称
spec:
  type: NodePort          # 对外访问的类型
  ports:
  - port: 8888            # 即容器间服务调用的端口这里的端口和clusterIP对应
    protocol: TCP       
    nodePort: 8888        # 容器所在宿机端口默认30000-32767之间除非有改nodepord端口范围外网IP映射就是将端口映射出去
    targetPort: 8888      # 容器暴露的端口即当前容器内应用的服务端口例如Tomcat 8080
  selector:
    app: fast-testing-app # 选中上面的 Deployment
---
apiVersion: apps/v1           # kubectl api-versions 可看版本信息
kind: Deployment              # 部署
metadata:
  namespace: develop          # Pod所属的命名空间不指定则默认为"default"
  name: fast-testing-app      # 部署的pod名称
  labels:
    app: fast-testing-app     # 标签
spec:
  replicas: 1                 # Pod 副本的期待数量
  selector:
    matchLabels:
      app: fast-testing-app   # 满足标签为这个的时候相关的pod才能被调度到
  template:
    metadata:
      labels:
        app: fast-testing-app # Pod副本拥有的标签对应Selector
    spec:
      hostAliases:            # 映射容器内的host地址
      - ip: 10.6.1.166
        hostnames:
        - "redis"
      - ip: 10.4.19.105
        hostnames:
        - "zookeeper"
      containers:             # 必选Pod中容器列表
      - name: fast-testing    # 给容器取的名称
        image: docker.xxx.io/fast-testing # 镜像地址
        # Always:总是拉取IfNotPresent:默认值,本地有则不拉取Never:只用本地镜像从不拉取
        imagePullPolicy: Never
EOF

3. 部署

一键部署命令

kubectl apply -f fast-testing-k8s-deployment.yaml

一键回收命令

kubectl delete -f fast-testing-k8s-deployment.yaml

4. k8s相关学习

Kubernetes 1.25.4版本安装_V胡桃夹子的CSDN博客
kubeasz安装kubernetes1.25.5_V胡桃夹子的CSDN博客
CentOS8搭建nfs服务_V胡桃夹子的CSDN博客
k8s一键安装redis单机版_V胡桃夹子的CSDN博客
k8s一键安装mysql8单机版_V胡桃夹子的CSDN博客
Docker制作springboot运行应用镜像_V胡桃夹子的CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Springk8s