K8S部署游戏

一、纯资源部署

1 编写deploy资源

[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird]$ cat > deployments.yaml <<'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
  name: oldboyedu-linux85-deploy-bird
spec:
  replicas: 3
  selector:
    matchExpressions:
    - key: apps
      operator: Exists
  template:
    metadata:
      labels:
        apps: bird
    spec:
      volumes:
      - name: nginx
        configMap:
          name: bird-conf
          items:
          - key: nginx.conf
            path: nginx.conf # 可以暂时理解为自定义的名称
      - name: code
        # nfs:
        #   server: 10.0.0.231
        #   path: /oldboyedu/data/kubernetes/homework/bird
        persistentVolumeClaim:
          claimName: oldboyedu-games-bird
      imagePullSecrets:
      - name: harbor-games
      containers:
      - name: bird
        image: harbor.oldboyedu.com/games/bird:v1
        volumeMounts:
        - name: nginx
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf
        - name: code
          mountPath: /usr/share/nginx/html
        lifecycle:
          postStart:
            exec:
              # 此处为了简单起见,直接从镜像中拷贝数据,生产环境中可以考虑去镜像仓库拉取镜像
              # 为了不污染业务镜像,对于复杂的操作,可以考虑使用初始化容器拉取代码,这样就不会对业务容器造成侵入性!
              command:
              - "/bin/sh"
              - "-c"
              - "cp -r /usr/local/nginx/html/bird/ /usr/share/nginx/html"
EOF
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird]$

2 编写configMap资源

[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird]$ cat > configMap.yaml <<'EOF'
apiVersion: v1
kind: ConfigMap
metadata:
  name: bird-conf
data:
  nginx.conf: |
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       80;
            # root        /usr/local/nginx/html/bird/;
            root          /usr/share/nginx/html/bird/;
            server_name   bird.oldboyedu.com;
        }
    }
EOF
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird]$

3 创建secret资源

注意,要先在harbor仓库新建用户,并将该用户在项目中授权。

[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird]$ kubectl create secret docker-registry --help # 查看响应式创建secret资源的帮助
...
Usage:
  kubectl create secret docker-registry NAME --docker-username=user --docker-password=password --docker-email=email
[--docker-server=string] [--from-file=[key=]source] [--dry-run=server|client|none] [options]

Use "kubectl options" for a list of global command-line options (applies to all commands).
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird]$
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird]$ kubectl create secret docker-registry harbor-games --docker-username=linux85 --docker-password=Linux@85 --docker-email=admin@163.com --docker-server=harbor.oldboyedu.com # docker-server必须写,不然会拉取失败
secret/harbor-games created
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird]$ kubectl get secrets | grep harbor
harbor-games                         kubernetes.io/dockerconfigjson        1      2m26s

4 编写svc资源

[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird]$ cat > services.yaml <<'EOF'
apiVersion: v1
kind: Service
metadata:
  name: oldboyedu-linux85-bird
spec:
  selector:
    apps: bird
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    nodePort: 30080
EOF
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird]$

5 编写pvc资源

[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird]$ cat > persistentvolumeclaims.yaml <<'EOF'
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: oldboyedu-games-bird
spec:
  storageClassName: managed-nfs-storage
  accessModes:
  - ReadWriteMany
  resources:
    limits:
       storage: 4Gi
    requests:
       storage: 3Gi
EOF
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird]$

6 运行测试

[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird]$ kubectl apply -f .
configmap/bird-conf created
deployment.apps/oldboyedu-linux85-deploy-bird created
persistentvolumeclaim/oldboyedu-games-bird created
service/oldboyedu-linux85-bird created
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird]$

测试成功
在这里插入图片描述

记录一波报错
加载完所有的资源文件,所有的资源也都运行成功,但是访问的时候,一直显示403。后来,清理了sc资源下创建的文件,才访问成功,猜测是因为存储空间不足,导致sc没能再次创建pv存储资源。

二、helm部署

1. 思路

  • 单服务部署
    · 创建chart
    · 运行
  • 多服务部署(使用变量)
    · 定义变量
    · 将各个资源的值更换为变量

2. 单服务部署

[root@k8s231.oldboyedu.com ~/dockerfile/homework]$ helm create bird-chart
Creating bird-chart
[root@k8s231.oldboyedu.com ~/dockerfile/homework]$ rm -rf bird-chart/templates/*
[root@k8s231.oldboyedu.com ~/dockerfile/homework]$ > bird-chart/values.yaml
[root@k8s231.oldboyedu.com ~/dockerfile/homework]$ cp -r bird/* bird-chart/templates/
[root@k8s231.oldboyedu.com ~/dockerfile/homework]$ tree -F bird-chart/
bird-chart/
├── charts/
├── Chart.yaml
├── templates/
│   ├── configMap.yaml
│   ├── deployments.yaml
│   ├── persistentvolumeclaims.yaml
│   └── services.yaml
└── values.yaml

2 directories, 6 files
[root@k8s231.oldboyedu.com ~/dockerfile/homework]$

[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart]$

3. 多服务部署(使用变量)

3.1 使用变量部署单个服务

3.1.1 定义变量
[root@k8s231.oldboyedu.com ~/dockerfile/homework]$ cd bird-chart/
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart]$
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart]$ cat > values.yaml <<'EOF'
replicas: 2

secret:
  name: harbor-games

apps:
  name: oldboyedu-linux85-deploy-bird
  label: bird
  image: harbor.oldboyedu.com/games/bird
  tag: v1
  cmname: bird-conf
  pvcname: oldboyedu-games-bird
  containername: bird


code:
  srcpath: /usr/local/nginx/html/bird/
  destpath: /usr/share/nginx/html/bird/

cm:
  name: bird-conf
  servername: bird.oldboyedu.com

pvc:
  name: oldboyedu-games-bird
  sc: managed-nfs-storage


svc:
  name: oldboyedu-linux85-bird
  port: 80
  targetport: 80
  nodeport: 30080
  type: NodePort
EOF
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart]$
3.1.2 修改Chart.yaml
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart]$ cat > Chart.yaml <<'EOF'
apiVersion: v2
name: bird-chart
description: A Helm chart for Kubernetes

# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application

# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: v1

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "v1"
EOF
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart]$
3.1.3 修改资源
  • 3.1.3.1 修改deploy资源
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart]$ cd templates/
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart/templates]$
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart/templates]$ cat > deployments.yaml <<'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Values.apps.name }}
spec:
  replicas: {{ .Values.replicas }}
  selector:
    matchExpressions:
    - key: apps
      operator: Exists
  template:
    metadata:
      labels:
        apps: {{ .Values.apps.label }}
    spec:
      volumes:
      - name: nginx
        configMap:
          name: {{ .Values.apps.cmname }}
          items:
          - key: nginx.conf
            path: nginx.conf
      - name: code
        # nfs:
        #   server: 10.0.0.231
        #   path: /oldboyedu/data/kubernetes/homework/bird
        persistentVolumeClaim:
          claimName: {{ .Values.apps.pvcname }}
      imagePullSecrets:
      - name: {{ .Values.secret.name }}
      containers:
      - name: {{ .Values.apps.containername }}
        image: {{ .Values.apps.image }}:{{ .Values.apps.tag }}
        volumeMounts:
        - name: nginx
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf
        - name: code
          mountPath: /usr/share/nginx/html
        lifecycle:
          postStart:
            exec:
              # 此处为了简单起见,直接从镜像中拷贝数据,生产环境中可以考虑去镜像仓库拉取镜像
              # 为了不污染业务镜像,对于复杂的操作,可以考虑使用初始化容器拉取代码,这样就不会对业务容器造成侵入性!
              command:
              - "/bin/sh"
              - "-c"
              - "cp -r {{ .Values.code.srcpath }} {{ .Values.code.destpath }}"
EOF
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart/templates]$
  • 3.1.3.2 修改svc资源
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart/templates]$ cat > services.yaml << 'EOF'
apiVersion: v1
kind: Service
metadata:
  name: {{ .Values.svc.name }}
spec:
  selector:
    apps: {{ .Values.apps.label }}
  type: {{ .Values.svc.type }}
  ports:
  - port: {{ .Values.svc.port }}
    targetPort: {{ .Values.svc.targetport }}
    nodePort: {{ .Values.svc.nodeport }}
EOF
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart/templates]$

  • 3.1.3.3 修改cm资源
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart/templates]$ cat > configMap.yaml <<'EOF'
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Values.cm.name }}
data:
  nginx.conf: |
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       80;
            # root        /usr/local/nginx/html/bird/;
            # root          /usr/share/nginx/html/bird;
            root          {{ .Values.code.destpath }};
            # server_name   brid.oldboyedu.com;
            server_name   {{ .Values.cm.servername }};
        }
    }
EOF
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart/templates]$

  • 3.1.3.4 修改pvc资源
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart/templates]$ cat > persistentvolumeclaims.yaml <<'EOF'
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: {{ .Values.pvc.name }}
spec:
  storageClassName: {{ .Values.pvc.sc }}
  accessModes:
  - ReadWriteMany
  resources:
    limits:
       storage: 4Gi
    requests:
       storage: 3Gi
EOF
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart/templates]$

3.1.4 运行测试
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart]$ helm install bird /root/dockerfile/homework/bird-chart/
NAME: bird
LAST DEPLOYED: Sat May 11 09:10:08 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
恭喜您,"harbor.oldboyedu.com/games/bird:v1"服务部署成功。
[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart]$ curl -I 10.0.0.231:30080
HTTP/1.1 200 OK
Server: nginx/1.26.0
Date: Sat, 11 May 2024 01:10:46 GMT
Content-Type: text/html
Content-Length: 3049
Last-Modified: Sat, 11 May 2024 01:10:11 GMT
Connection: keep-alive
ETag: "663ec573-be9"
Accept-Ranges: bytes

[root@k8s231.oldboyedu.com ~/dockerfile/homework/bird-chart]$

3.2 使用变量部署多个服务

3.2.1 复制bird-chart
[root@k8s231.oldboyedu.com ~]$ cd /root/dockerfile/homework/
[root@k8s231.oldboyedu.com ~/dockerfile/homework]$ mkdir charts
[root@k8s231.oldboyedu.com ~/dockerfile/homework]$ cd charts
[root@k8s231.oldboyedu.com ~/dockerfile/homework/charts]$ for i in `ls ../softwares/ | awk -F[-.] '{print $2}'`; do cp -r ../bird-chart/ $i-chart; done
[root@k8s231.oldboyedu.com ~/dockerfile/homework/charts]$ ls
bird-chart  chengbao-chart  pingtai-chart  pinshu-chart  tanke-chart
3.2.2 sed修改values.yaml
[root@k8s231.oldboyedu.com ~/dockerfile/homework/charts]$ for i in `ls . | awk -F- '{print $1}'`; do sed -i.bak "s#bird#$i#g" $i-chart/values.yaml; done # 一个for循环轻松修改,酷不酷,兄弟们!
[root@k8s231.oldboyedu.com ~/dockerfile/homework/charts]$ for i in `ls .`; do echo -------; cat $i/values.yaml ; done # 同理,一个for循环轻松查看修改结构😎
-------
replicas: 2

secret:
  name: harbor-games

apps:
  name: oldboyedu-linux85-deploy-bird-chart
  label: bird-chart
  image: harbor.oldboyedu.com/games/bird-chart
  tag: v1
  cmname: bird-chart-conf
  pvcname: oldboyedu-games-bird-chart
  containername: bird-chart


code:
  srcpath: /usr/local/nginx/html/bird-chart/
  destpath: /usr/share/nginx/html/bird-chart/

cm:
  name: bird-chart-conf
  servername: bird-chart.oldboyedu.com

pvc:
  name: oldboyedu-games-bird-chart
  sc: managed-nfs-storage


svc:
  name: oldboyedu-linux85-bird-chart
  port: 80
  targetport: 80
  nodeport: 30080
  type: NodePort
-------
...
-------
replicas: 2

secret:
  name: harbor-games

apps:
  name: oldboyedu-linux85-deploy-tanke-chart
  label: tanke-chart
  image: harbor.oldboyedu.com/games/tanke-chart
  tag: v1
  cmname: tanke-chart-conf
  pvcname: oldboyedu-games-tanke-chart
  containername: tanke-chart


code:
  srcpath: /usr/local/nginx/html/tanke-chart/
  destpath: /usr/share/nginx/html/tanke-chart/

cm:
  name: tanke-chart-conf
  servername: tanke-chart.oldboyedu.com

pvc:
  name: oldboyedu-games-tanke-chart
  sc: managed-nfs-storage


svc:
  name: oldboyedu-linux85-tanke-chart
  port: 80
  targetport: 80
  nodeport: 30080
  type: NodePort
[root@k8s231.oldboyedu.com ~/dockerfile/homework/charts]$
3.2.3 运行测试

运行单个

[root@k8s231.oldboyedu.com ~/dockerfile/homework/charts]$ helm install bird bird-chart/
NAME: bird
LAST DEPLOYED: Sat May 11 10:32:00 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

访问测试
在这里插入图片描述
同时运行多个

[root@k8s231.oldboyedu.com ~/dockerfile/homework/charts]$ helm install bird bird-chart/
NAME: bird
LAST DEPLOYED: Sat May 11 10:32:00 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
[root@k8s231.oldboyedu.com ~/dockerfile/homework/charts]$ helm install chengbao chengbao-chart/
Error: INSTALLATION FAILED: Service "oldboyedu-linux85-chengbao" is invalid: spec.ports[0].nodePort: Invalid value: 30080: provided port is already allocated 

# 报端口占用的错误,因为svc是基于四层的代理,也就是IP:Port的模式,尽管我们配了不同的域名,但它无法识别。

# 解决办法一,修改不同服务的端口
# 这个修改也可以用for循环,大家可以试一试
[root@k8s231.oldboyedu.com ~/dockerfile/homework/charts]$ sed -i 's#30080#30081#' chengbao-chart/values.yaml
[root@k8s231.oldboyedu.com ~/dockerfile/homework/charts]$ sed -i 's#30080#30082#' pingtai-chart/charts/
[root@k8s231.oldboyedu.com ~/dockerfile/homework/charts]$ sed -i 's#30080#30083#' pinshu-chart/values.yaml
[root@k8s231.oldboyedu.com ~/dockerfile/homework/charts]$ sed -i 's#30080#30084#' tanke-chart/values.yaml

# 启动多个服务也可以用for循环实现,但不建议
[root@k8s231.oldboyedu.com ~/dockerfile/homework/charts]$ helm install chengbao chengbao-chart/
NAME: chengbao
LAST DEPLOYED: Sat May 11 10:34:51 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
[root@k8s231.oldboyedu.com ~/dockerfile/homework/charts]$ helm install pingtai pingtai-chart/
NAME: pingtai
LAST DEPLOYED: Sat May 11 10:35:20 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
[root@k8s231.oldboyedu.com ~/dockerfile/homework/charts]$ helm install pinshu pinshu-chart/
NAME: pinshu
LAST DEPLOYED: Sat May 11 10:35:45 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
[root@k8s231.oldboyedu.com ~/dockerfile/homework/charts]$ helm install tanke tanke-chart/
NAME: tanke
LAST DEPLOYED: Sat May 11 10:36:27 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

访问测试

访问测试

3.3 使用Ingress优化访问方式

上面的访问测试可以看出,访问多个服务的时候,是用的IP:Port的方式,现在希望,可以直接通过各自对应的域名进行访问

3.3.1 思路
  1. 查看Ingress的插件traefik
  2. 编写Ingress规则
  3. 访问测试
  • 查看traefik插件
[root@k8s231.oldboyedu.com /manifests]$ kubectl get all | grep traefik
pod/traefik-5664d49897-n6bfp                            1/1     Running   0               89m
service/traefik                      NodePort    10.200.120.112   <none>        80:31469/TCP,443:32740/TCP   47h
deployment.apps/traefik                             1/1     1            1           47h
replicaset.apps/traefik-5664d49897                            1         1         1       47h
  • 编写Ingress规则
[root@k8s231.oldboyedu.com /manifests]$ mkdir adds-on
[root@k8s231.oldboyedu.com /manifests]$ cd adds-on/
[root@k8s231.oldboyedu.com /manifests/adds-on]$ mkdir ingress && cd ingress
[root@k8s231.oldboyedu.com /manifests/adds-on/ingress]$ cat > 01-ingress-games.yaml <<'EOF'
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: oldboyedu-games-ingresses
  annotations:
    kubernetes.io/ingress.class: traefik  # 指定Ingress 控制器为"traefik"
spec:
  # 定义Ingress规则
  rules:
    # 访问的主机名
  - host: bird.oldboyedu.com
    # 定义http的相关规则
    http:
      paths:
      - backend:
          service:
            name: oldboyedu-linux85-bird
            port:
              number: 80
        path: "/"
        pathType: "Prefix"
  - host: chengbao.oldboyedu.com
    http:
      paths:
      - backend:
          service:
            name: oldboyedu-linux85-chengbao
            port:
              number: 80
        path: "/"
        pathType: "Prefix"
  - host: tanke.oldboyedu.com
    http:
      paths:
      - backend:
          service:
            name: oldboyedu-linux85-tanke
            port:
              number: 80
        path: "/"
        pathType: "Prefix"
  - host: pinshu.oldboyedu.com
    http:
      paths:
      - backend:
          service:
            name: oldboyedu-linux85-pinshu
            port:
              number: 80
        path: "/"
        pathType: "Prefix"
  - host: pingtai.oldboyedu.com
    http:
      paths:
      - backend:
          service:
            name: oldboyedu-linux85-pingtai
            port:
              number: 80
        path: "/"
        pathType: "Prefix"
EOF
[root@k8s231.oldboyedu.com /manifests/adds-on/ingress]$
[root@k8s231.oldboyedu.com /manifests/adds-on/ingress]$ kubectl apply -f 01-ingress-games.yaml
[root@k8s231.oldboyedu.com /manifests/adds-on/ingress]$ kubectl get ing oldboyedu-games-ingresses
NAME                        CLASS    HOSTS                                                                       ADDRESS   PORTS   AGE
oldboyedu-games-ingresses   <none>   bird.oldboyedu.com,chengbao.oldboyedu.com,tanke.oldboyedu.com + 2 more...             80      84m
[root@k8s231.oldboyedu.com /manifests/adds-on/ingress]$ kubectl describe ing oldboyedu-games-ingresses
Name:             oldboyedu-games-ingresses
Labels:           <none>
Namespace:        default
Address:
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host                    Path  Backends
  ----                    ----  --------
  bird.oldboyedu.com
                          /   oldboyedu-linux85-bird:80 (10.100.1.239:80,10.100.1.240:80)
  chengbao.oldboyedu.com
                          /   oldboyedu-linux85-chengbao:80 (10.100.1.241:80,10.100.1.242:80)
  tanke.oldboyedu.com
                          /   oldboyedu-linux85-tanke:80 (10.100.1.247:80,10.100.1.248:80)
  pinshu.oldboyedu.com
                          /   oldboyedu-linux85-pinshu:80 (10.100.1.245:80,10.100.1.246:80)
  pingtai.oldboyedu.com
                          /   oldboyedu-linux85-pingtai:80 (10.100.1.243:80,10.100.1.244:80)
Annotations:              kubernetes.io/ingress.class: traefik
Events:                   <none>
[root@k8s231.oldboyedu.com /manifests/adds-on/ingress]$

# 当访问上述域名时,traefik组件就会转发到各自对应的svc资源中,然后各自的svc再转发给对应的pod进行处理。
# 上述域名要解析到的IP是traefik组件所生成的svc的IP。

  • 访问测试
[root@k8s231.oldboyedu.com /manifests/adds-on/ingress]$ kubectl get svc | grep traefik
traefik                      NodePort    10.200.120.112   <none>        80:31469/TCP,443:32740/TCP   47h
[root@k8s231.oldboyedu.com /manifests/adds-on/ingress]$ cat /etc/hosts | grep 10.200.120.112
10.200.120.112 bird.oldboyedu.com chengbao.oldboyedu.com tanke.oldboyedu.com pinshu.oldboyedu.com pingtai.oldboyedu.com
[root@k8s231.oldboyedu.com /manifests/adds-on/ingress]$
[root@k8s231.oldboyedu.com /manifests/adds-on/ingress]$ curl -I bird.oldboyedu.com
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 3049
Content-Type: text/html
Date: Sat, 11 May 2024 09:04:19 GMT
Etag: "663f268a-be9"
Last-Modified: Sat, 11 May 2024 08:04:26 GMT
Server: nginx/1.26.0

[root@k8s231.oldboyedu.com /manifests/adds-on/ingress]$ curl -I chengbao.oldboyedu.com
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 1056
Content-Type: text/html
Date: Sat, 11 May 2024 09:04:42 GMT
Etag: "663f29ae-420"
Last-Modified: Sat, 11 May 2024 08:17:50 GMT
Server: nginx/1.26.0

[root@k8s231.oldboyedu.com /manifests/adds-on/ingress]$ curl -I pingtai.oldboyedu.com
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 6395
Content-Type: text/html
Date: Sat, 11 May 2024 09:05:04 GMT
Etag: "663f29c2-18fb"
Last-Modified: Sat, 11 May 2024 08:18:10 GMT
Server: nginx/1.26.0

[root@k8s231.oldboyedu.com /manifests/adds-on/ingress]$

# 如果要在Windows中测试访问,要修改hosts文件哟~

基于域名访问的测试结果

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
k8s是一个用于容器编排和管理的开源平台,而Spring Boot是一个用于构建独立的、基于Spring的Java应用程序的框架。使用k8s部署Spring Boot应用程序可以提供更好的可伸缩性、高可用性和容错性。 引用中提到了使用k8s来快速部署一个Spring Boot项目,并体验k8s和实际项目的结合。这意味着通过k8s,你可以轻松地将你的Spring Boot应用程序部署到一个分布式系统中。 引用指出,尽管已经了解了如何通过其他方式部署Spring Boot应用程序,但是了解如何通过k8s部署仍然是必要的。因为k8s提供了许多功能和特性,例如自动扩展、负载均衡和故障恢复等,这些功能可以大大简化和改善应用程序的部署和管理。 引用提到了k8s部署Spring Boot项目的过程是相对简单的,目前可能只是半手动部署,但后续可以引入CICD(持续集成和持续部署)实现真正的自动化部署。这意味着你可以使用k8s和CICD工具来自动化构建、测试和部署Spring Boot应用程序,从而提高开发和部署的效率。 综上所述,通过k8s部署Spring Boot应用程序可以提供更好的可伸缩性、高可用性和容错性,并且可以使用CICD工具实现自动化部署。这将简化和改善应用程序的部署和管理,并提高开发和部署的效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [k8s部署springboot项目](https://blog.csdn.net/qq_34285557/article/details/124460872)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [教你使用k8s部署springboot服务](https://blog.csdn.net/ww2651071028/article/details/129636489)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值