93 lines
2.4 KiB
YAML
93 lines
2.4 KiB
YAML
apiVersion: apps/v1
|
|
kind: DaemonSet
|
|
metadata:
|
|
name: iperf3-server
|
|
spec:
|
|
selector:
|
|
matchLabels:
|
|
app: iperf3-server
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: iperf3-server
|
|
spec:
|
|
serviceAccountName: iperf3-server
|
|
subdomain: iperf3
|
|
initContainers:
|
|
- name: create-service
|
|
image: bitnami/kubectl:latest
|
|
env:
|
|
- name: NODE_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: spec.nodeName
|
|
- name: POD_IP
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: status.podIP
|
|
command:
|
|
- /bin/bash
|
|
- -c
|
|
- |
|
|
# Clean node name for service name
|
|
NODE_CLEAN=$(echo "$NODE_NAME" | cut -d'.' -f1 | tr '[:upper:]' '[:lower:]' | tr '_' '-')
|
|
SERVICE_NAME="iperf3-${NODE_CLEAN}"
|
|
|
|
# Create service for this pod
|
|
kubectl apply -f - <<EOF
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: ${SERVICE_NAME}
|
|
namespace: iperf3
|
|
labels:
|
|
app: iperf3-node-service
|
|
target-node: "${NODE_NAME}"
|
|
spec:
|
|
type: ClusterIP
|
|
ports:
|
|
- name: iperf3
|
|
port: 5201
|
|
protocol: TCP
|
|
---
|
|
apiVersion: v1
|
|
kind: Endpoints
|
|
metadata:
|
|
name: ${SERVICE_NAME}
|
|
namespace: iperf3
|
|
labels:
|
|
app: iperf3-node-service
|
|
target-node: "${NODE_NAME}"
|
|
subsets:
|
|
- addresses:
|
|
- ip: ${POD_IP}
|
|
ports:
|
|
- name: iperf3
|
|
port: 5201
|
|
protocol: TCP
|
|
EOF
|
|
containers:
|
|
- name: iperf3-server
|
|
image: networkstatic/iperf3:latest
|
|
args: ["-s"]
|
|
ports:
|
|
- containerPort: 5201
|
|
protocol: TCP
|
|
env:
|
|
- name: NODE_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: spec.nodeName
|
|
resources:
|
|
requests:
|
|
memory: "64Mi"
|
|
cpu: "100m"
|
|
limits:
|
|
memory: "256Mi"
|
|
cpu: "750m"
|
|
tolerations:
|
|
- effect: NoSchedule
|
|
operator: Exists
|
|
- effect: NoExecute
|
|
operator: Exists
|