016规范后的K8sYaml
参考 007 节进行改造
namespace
yaml
apiVersion: v1
kind: Namespace
metadata:
name: dailystatefulset
yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: pod-daily-cutejava-tiny-service
namespace: daily
spec:
# 用于创建一个Headless服务,这个服务将提供每个Pod的稳定网络标识符
serviceName: endpoint-daily-cutejava-tiny-service
replicas: 2
selector:
matchLabels:
app: pod-daily-cutejava-tiny-service
template:
metadata:
labels:
app: pod-daily-cutejava-tiny-service
spec:
containers:
- name: pod-daily-cutejava-tiny-service
image: easzlab.io.local:5000/cutejava-starter:version_20240521195715
ports:
- containerPort: 12800service(四层负载)
yaml
apiVersion: v1
kind: Service
metadata:
name: endpoint-daily-cutejava-tiny-service
namespace: daily
spec:
selector:
app: pod-daily-cutejava-tiny-service
ports:
- protocol: TCP
port: 80
targetPort: 12800
type: ClusterIPingress(七层负载,这里演示的是集群内部域名)
yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-cutejava-tiny-service
namespace: daily
spec:
# 指定实现规则的应用类型,controller会将以上的规则转变为适合该应用的配置写入应用的配置文件中
ingressClassName: nginx
# 配置代理规则
rules:
# 配置反向代理的域名
- host: cutejava-tiny-service.daily.vpc.odboy.com
http:
paths:
# 匹配路径,相当于nginx location,以下的pathType用于配置匹配规则
- path: /
# 用于指定 Ingress 路由规则中的路径类型,pathType 字段有三个可选值,Exact表示 Ingress 规则中的路径必须与请求的路径完全匹配,Prefix表示 Ingress 规则中的路径必须是请求路径的前缀,ImplementationSpecific表示 Ingress 控制器可以自行决定路径类型
pathType: Prefix
# 配置需要代理服务的参数
backend:
service:
# 配置需要代理的sevice服务的名称。即service的 metadata.name
name: endpoint-daily-cutejava-tiny-service
port:
# 配置需要代理的service监听端口
number: 12800合三为一 cutejava-tiny-service.daily.yaml
yaml
apiVersion: v1
kind: Namespace
metadata:
name: daily
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: pod-daily-cutejava-tiny-service
namespace: daily
spec:
serviceName: endpoint-daily-cutejava-tiny-service
replicas: 2
selector:
matchLabels:
app: pod-daily-cutejava-tiny-service
template:
metadata:
labels:
app: pod-daily-cutejava-tiny-service
spec:
containers:
- name: pod-daily-cutejava-tiny-service
image: easzlab.io.local:5000/cutejava-starter:version_20240521195715
ports:
- containerPort: 12800
---
apiVersion: v1
kind: Service
metadata:
name: endpoint-daily-cutejava-tiny-service
namespace: daily
spec:
selector:
app: pod-daily-cutejava-tiny-service
ports:
- protocol: TCP
port: 80
targetPort: 12800
type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-cutejava-tiny-service
namespace: daily
spec:
ingressClassName: nginx
rules:
- host: cutejava-tiny-service.daily.vpc.odboy.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: endpoint-daily-cutejava-tiny-service
port:
number: 12800执行脚本
删除原服务,这里我们只要删除namespace,其他和namespace有关的都会删除
shell
kubectl delete -f namespace.yaml
部署新服务

shell
kubectl apply -f cutejava-tiny-service.daily.yaml
配置CoreDNS
shell
kubectl edit configmaps -n kube-system coredns
重建CoreDNS

进入pod内测试
shell
kubectl exec -it pod-daily-cutejava-tiny-service-1 -n daily bash
curl http://cutejava-tiny-service.daily.vpc.odboy.com

