[5.1]
## headless service
cd /labfile
mkdir ./statefile && cd ./statefile
vim headless-service.yaml
apiVersion: v1
kind: Service
metadata:
name: headless
spec:
ports:
- name: tomcat-service-port
port: 80
targetPort: 8080
clusterIP: None
selector:
app: tomcat
# 关键点 clusterIP: None
kubectl create -f headless-service.yaml
kubectl get svc
[5.2]
## StatefulSet of Tomcat
CCE Storage UI:
# ① 存储卷声明类型:极速文件存储
# ② PVC名称:cce-efs-import-sts
# ③ 创建方式:新建存储卷 , 选择 sfs-turbo-k8s
# ④ 极速文件存储:选择默认
# ⑤ PV名称:cce-efs-import-sts
vim tomcat-statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: tomcat-statefulset
spec:
serviceName: tomcat-headless
replicas: 3
selector:
matchLabels:
app: tomcat
template:
metadata:
labels:
app: tomcat
spec:
containers:
- name: tomcat
image: tomcat
ports:
- containerPort: 8080
volumeMounts:
- mountPath: /webapps
name: www-storage
volumes:
- name: www-storage
persistentVolumeClaim:
claimName: cce-efs-import-sts
kubectl apply -f tomcat-statefulset.yaml
kubectl get pod
kubectl get sts
[5.3]
## show DNS of Pod
kubectl get pod -o wide
kubectl run dnsutils --image=tutum/dnsutils --command -- sleep infinity
kubectl exec dnsutils nslookup headless
[5.4]
## Operate StatefulSet
kubectl get statefulset
kubectl exec -it tomcat-statefulset-0 /bin/sh
cd /webapps
echo "hello sts" > hello.txt
exit
kubectl delete pod tomcat-statefulset-0
kubectl get pod
kubectl exec -it tomcat-statefulset-0 /bin/bash
cd /webapps
ls && cat hello.txt
exit
# hello.txt has exists.