关于Kubernetes-v1.23.6-资源调度-StatefulSet-定义一个有状态服务
Posted on 2023-09-23 17:49 520_1351 阅读(13) 评论(0) 编辑 收藏 举报先创建一个 StatefulSet 类型的资源,这个也即是管理有状态的资源,另外也还得先创建Service类型的资源
本来,还需要创建其他,如持久卷相关的等,这里只是方便说明StatefulSet-定义一个有状态服务,于是进行了简化,web.yaml配置文件
[root@k8s-master qq-5201351]# cat web.yaml --- apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet # Statefulset 类型的资源 metadata: name: web # Statefulset 对象的名称 spec: serviceName: "nginx" # 使用哪个 service 来管理 dns replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: # 容器内部要暴露的端口 - containerPort: 80 # 具体暴露的端口号 name: web # 该端口配置的名称
接下来就是创建,和相关的信息查看
[root@k8s-master ~]# kubectl create -f web.yaml service/nginx created statefulset.apps/web created [root@k8s-master ~]# kubectl get sts NAME READY AGE web 2/2 7s [root@k8s-master ~]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 28d nginx ClusterIP None <none> 80/TCP 30s [root@k8s-master ~]# [root@k8s-master ~]# kubectl get po NAME READY STATUS RESTARTS AGE web-0 1/1 Running 0 62s web-1 1/1 Running 0 59s [root@k8s-master ~]# kubectl run -it --image busybox:1.28.4 dns-test /bin/sh If you don't see a command prompt, try pressing enter. / # nslookup web-0.nginx Server: 10.96.0.10 Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local Name: web-0.nginx Address 1: 10.224.169.180 web-0.nginx.default.svc.cluster.local / # exit Session ended, resume using 'kubectl attach dns-test -c dns-test -i -t' command when the pod is running [root@k8s-master ~]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES dns-test 1/1 Running 1 (13s ago) 2m3s 10.224.169.181 k8s-node2 <none> <none> web-0 1/1 Running 0 9m57s 10.224.169.180 k8s-node2 <none> <none> web-1 1/1 Running 0 9m54s 10.224.36.120 k8s-node1 <none> <none> [root@k8s-master ~]#
上面的 web-0.nginx, 其中 nginx 代表的是 service的名称
StatefulSet 中每个 Pod 的 DNS 格式为 statefulSetName-{0..N-1}.serviceName.namespace.svc.cluster.local
- serviceName 为 Headless Service 的名字
- 0..N-1 为 Pod 所在的序号,从 0 开始到 N-1
- statefulSetName 为 StatefulSet 的名字
- namespace 为服务所在的 namespace,Headless Servic 和 StatefulSet 必须在相同的 namespace
- .cluster.local 为 Cluster Domain
尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17724823.html
作者:一名卑微的IT民工
出处:https://www.cnblogs.com/5201351
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
由于博主的水平不高,文章没有高度、深度和广度,只是凑字数,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用读书、参考、引用、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个卑微的IT民工!