目录
一、纯资源部署
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 思路
- 查看Ingress的插件traefik
- 编写Ingress规则
- 访问测试
- 查看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文件哟~
基于域名访问的测试结果