kubernetes
1. statefulset通过headless service维持pod的拓扑状态
1.1 通过headless service(无头服务)确保网络标识是一致
创建无头服务
[kubeadm@server2 statefulset]$ cat service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
开启一个nginx服务
[kubeadm@server2 statefulset]$ kubectl apply -f service.yaml
service/nginx created
[kubeadm@server2 statefulset]$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 15d
nginx ClusterIP None <none> 80/TCP 7s
1.2 StatefulSet控制器
[kubeadm@server2 statefulset]$ cat deployment.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
serviceName: "nginx"
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
name: web
[kubeadm@server2 statefulset]$ kubectl apply -f deployment.yaml
statefulset.apps/web created
[kubeadm@server2 statefulset]$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nfs-client-provisioner-55d87b5996-pjcg8 1/1 Running 1 6h13m
web-0 1/1 Running 0 6m1s
web-1 1/1 Running 0 5m49s
[kubeadm@server2 statefulset]$ kubectl describe service nginx
Name: nginx
Namespace: default
Labels: app=nginx
Annotations: Selector: app=nginx
Type: ClusterIP
IP: None
Port: web 80/TCP
TargetPort: 80/TCP
Endpoints: 10.244.1.108:80,10.244.2.97:80
Session Affinity: None