每个pod元控制器的Kubernetes服务



我试图用元控制器在有状态集中设置每个Pod的服务:https://github.com/metacontroller/metacontroller/tree/master/examples/service-per-pod

我按照链接的指示,我在玩各种组合,但我仍然没有达到所描述的效果。服务不是与pod一起创建的。

在这个例子中,我试图将服务放在每个吊舱的标签上:;web";对照吊舱的名称。

apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nginx
annotations:
service-per-pod-label: "statefulset.kubernetes.io/pod-name"
service-per-pod-ports: "80:80"
spec:
selector:
matchLabels:
app: nginx
serviceName: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
terminationGracePeriodSeconds: 1
containers:
- name: nginx
image: gcr.io/google_containers/nginx-slim:0.8
ports:
- containerPort: 80
name: web

我的元控制器启动并运行

NAME                                   READY   STATUS    RESTARTS   AGE
metacontroller-metacontroller-helm-0   1/1     Running   0          23m

来自元控制器的日志:kubectl日志元控制器-元控制器-helm-0

{"level":"info","ts":1660492483.489682,"msg":"Configuration information","discovery-interval":20,"cache-flush-interval":1800,"metrics-address":":9999","client-go-qps":5,"client-go-burst":10,"workers":5,"events-qps":0.0033333333333333335,"events-burst":25,"pprofAddr":"0","leader-election":false,"leader-election-resource-lock":"leases","leader-election-namespace":"","leader-election-id":"metacontroller","version":"4.3.4"}
{"level":"info","ts":1660492483.5292923,"msg":"Communication with K8s API server successful"}
{"level":"info","ts":1660492484.7299764,"msg":"Waited for 1.19273971s due to client-side throttling, not priority and fairness, request: GET:https://10.3.0.1:443/apis/authorization.k8s.io/v1?timeout=32sn"}
{"level":"info","ts":1660492489.1358352,"logger":"controller-runtime.metrics","msg":"Metrics server is starting to listen","addr":":9999"}
{"level":"info","ts":1660492489.1373081,"msg":"Starting EventSource","controller":"composite-metacontroller","source":"kind source: *v1alpha1.CompositeController"}
{"level":"info","ts":1660492489.1373482,"msg":"Starting Controller","controller":"composite-metacontroller"}
{"level":"info","ts":1660492489.1376293,"msg":"Starting EventSource","controller":"decorator-metacontroller","source":"kind source: *v1alpha1.DecoratorController"}
{"level":"info","ts":1660492489.1376536,"msg":"Starting Controller","controller":"decorator-metacontroller"}
{"level":"info","ts":1660492489.1371636,"msg":"Starting server","path":"/metrics","kind":"metrics","addr":"[::]:9999"}
{"level":"info","ts":1660492489.2376945,"msg":"Starting workers","controller":"composite-metacontroller","worker count":1}
{"level":"info","ts":1660492489.2379737,"msg":"Starting workers","controller":"decorator-metacontroller","worker count":1}
{"level":"info","ts":1660492494.7370083,"msg":"Waited for 5.587625994s due to client-side throttling, not priority and fairness, request: GET:https://10.3.0.1:443/apis/networking.k8s.io/v1?timeout=32sn"}
{"level":"info","ts":1660492510.3382494,"msg":"Waited for 1.165526209s due to client-side throttling, not priority and fairness, request: GET:https://10.3.0.1:443/apis/flowcontrol.apiserver.k8s.io/v1beta2?timeout=32sn"}

如文档中所述,对于Kubernetes 1.9+,您的service-per-pod-label应具有"statefulset.kubernetes.io/pod-name"作为值:

apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nginx
annotations:
service-per-pod-label: "statefulset.kubernetes.io/pod-name"
service-per-pod-ports: "80:80"
spec:
selector:
matchLabels:
app: nginx
serviceName: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
terminationGracePeriodSeconds: 1
containers:
- name: nginx
image: gcr.io/google_containers/nginx-slim:0.8
ports:
- containerPort: 80
name: web

对于早期版本,您应该为您的pod添加注释pod-name-label: "pod-name"`:

apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nginx
annotations:
service-per-pod-label: "pod-name"
service-per-pod-ports: "80:80"
spec:
selector:
matchLabels:
app: nginx
serviceName: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
annotations:
pod-name-label: "pod-name"
spec:
terminationGracePeriodSeconds: 1
containers:
- name: nginx
image: gcr.io/google_containers/nginx-slim:0.8
ports:
- containerPort: 80
name: web

在这两种情况下,应该使用术语pod-name,而不是其他值。他们使用它来知道他们应该为创建的服务使用的名称。

最新更新