apiVersion: v1 kind: Service metadata: name: ray-head spec: ports: - name: redis-primary port: 6379 targetPort: 6379 - name: redis-shard-0 port: 6380 targetPort: 6380 - name: redis-shard-1 port: 6381 targetPort: 6381 - name: object-manager port: 12345 targetPort: 12345 - name: node-manager port: 12346 targetPort: 12346 selector: component: ray-head --- apiVersion: apps/v1 kind: Deployment metadata: name: ray-head spec: replicas: 1 selector: matchLabels: component: ray-head type: ray template: metadata: labels: component: ray-head type: ray spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: type: ray topologyKey: kubernetes.io/hostname containers: - name: ray-head image: rayproject/examples command: [ "/bin/bash", "-c", "--" ] args: - "wget https://raw.githubusercontent.com/ray-project/ray/master/kubernetes/example.py && ray start --head --redis-port=6379 --redis-shard-ports=6380,6381 --object-manager-port=12345 --node-manager-port=12346 --node-ip-address=$MY_POD_IP && python example.py" ports: - containerPort: 6379 - containerPort: 6380 - containerPort: 6381 - containerPort: 12345 - containerPort: 12346 env: - name: MY_POD_IP valueFrom: fieldRef: fieldPath: status.podIP resources: requests: cpu: 2 --- apiVersion: apps/v1 kind: Deployment metadata: name: ray-worker spec: replicas: 3 selector: matchLabels: component: ray-worker type: ray template: metadata: labels: component: ray-worker type: ray spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: type: ray topologyKey: kubernetes.io/hostname containers: - name: ray-worker image: rayproject/examples command: ["/bin/bash", "-c", "--"] args: ["ray start --node-ip-address=$MY_POD_IP --redis-address=$(python -c 'import socket;import sys; sys.stdout.write(socket.gethostbyname(\"ray-head\"));sys.stdout.flush()'):6379 --object-manager-port=12345 --node-manager-port=12346 --block"] ports: - containerPort: 12345 - containerPort: 12346 env: - name: MY_POD_IP valueFrom: fieldRef: fieldPath: status.podIP resources: requests: cpu: 2