---
apiVersion: v1
kind: Service
metadata:
name: my-svc
namespace: apps
spec:
selector:
app: nginx-web
role: web
state: "true"
clusterIP: None
ports:
- name: http
port: 80
targetPort: 80
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nginx-web
namespace: apps
labels:
app: nginx
role: web
spec:
replicas: 2
serviceName: my-svc
selector:
matchLabels:
app: nginx-web
role: web
state: "true"
template:
metadata:
labels:
app: nginx-web
role: web
state: "true"
spec:
containers:
- name: nginx-web
image: linuxduduniao/nginx:v1.0.0
ports:
- name: http
containerPort: 80
readinessProbe:
httpGet:
port: 80
path: /health
volumeMounts:
- name: nginx-web
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: nginx-web
namespace: apps
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 2Gi
storageClassName: managed-nfs-storage # nfs classstorage,参考https://www.yuque.com/duduniao/k8s/vgms23#3W9oz
[root@duduniao local-k8s-yaml]# kubectl -n apps get sts -o wide # 当前sts 状态
NAME READY AGE CONTAINERS IMAGES
nginx-web 2/2 19s nginx-web linuxduduniao/nginx:v1.0.0
[root@duduniao local-k8s-yaml]# kubectl -n apps get pod -o wide # 注意Pod名称
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-web-0 1/1 Running 0 86s 172.16.4.158 centos-7-55 <none> <none>
nginx-web-1 1/1 Running 0 77s 172.16.3.98 centos-7-54 <none> <none>
[root@duduniao local-k8s-yaml]# kubectl -n apps get pvc -o wide # 注意pvc名称
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE VOLUMEMODE
nginx-web-nginx-web-0 Bound pvc-b36b90f1-a268-4815-b55b-6f7fda587193 2Gi RWX managed-nfs-storage 93s Filesystem
nginx-web-nginx-web-1 Bound pvc-1461c537-e784-41fd-9e78-b1e6b212912c 2Gi RWX managed-nfs-storage 84s Filesystem
[root@duduniao local-k8s-yaml]# kubectl -n apps get pv -o wide # 注意pv名称
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE VOLUMEMODE
pvc-1461c537-e784-41fd-9e78-b1e6b212912c 2Gi RWX Delete Bound apps/nginx-web-nginx-web-1 managed-nfs-storage 88s Filesystem
pvc-b36b90f1-a268-4815-b55b-6f7fda587193 2Gi RWX Delete Bound apps/nginx-web-nginx-web-0 managed-nfs-storage 97s Filesystem
[root@duduniao local-k8s-yaml]# kubectl -n apps describe svc my-svc
Name: my-svc
Namespace: apps
Labels: <none>
Annotations: Selector: app=nginx-web,role=web,state=true
Type: ClusterIP
IP: None
Port: http 80/TCP
TargetPort: 80/TCP
Endpoints: 172.16.3.98:80,172.16.4.158:80
Session Affinity: None
Events: <none>
[root@centos-7-51 ~]# dig -t A my-svc.apps.svc.cluster.local @10.96.0.10 +short # 无头服务特性,用于服务发现
172.16.4.216
172.16.3.105
[root@centos-7-51 ~]# dig -t A nginx-web-0.my-svc.apps.svc.cluster.local @10.96.0.10 +short # statefulset 特性,可以用pod名称解析到Pod的地址
172.16.4.216
[root@centos-7-51 ~]# dig -t A nginx-web-1.my-svc.apps.svc.cluster.local @10.96.0.10 +short
172.16.3.105