The following content uses as example the image consol/rocky-xfce-vnc of the Dockerfile Dockerfile.rocky-xfce-vnc.
On an already logged in Kubernetes cluster just use the predefined deployment with service config kubernetes.headless-vnc.example.deployment.yaml:
kubectl apply -f kubernetes/kubernetes.headless-vnc.example.deployment.yaml
Now a new pod with corresponding service should spin up with ContainerCreating:
kubectl get pods --output=wide
NAME READY STATUS RESTARTS AGE IP NODE
headless-vnc-7f6bc46c84-hrhc2 0/1 ContainerCreating 0 28s <none> kubermatic-s9g9frstlk-n7tw6After a while the kublet will have downloaded the imaged and started - shown as Running:
kubectl get pods --output=wide
NAME READY STATUS RESTARTS AGE IP NODE
headless-vnc-7f6bc46c84-hrhc2 1/1 Running 0 3m 172.25.2.3 kubermatic-s9g9frstlk-n7tw6ATTENTION: the above shown IP the cluster INTERNAL one!
Due to the following service configuration, the service will be exposed as type NodePort, this means that the service will accessible through the IP of the Kubernetes node and the exposed nodePort.
apiVersion: v1
kind: Service
metadata:
labels:
application: headless-vnc
name: headless-vnc
spec:
externalName: headless-vnc
ports:
- name: http-port-tcp
protocol: TCP
port: 6901
targetPort: 6901
nodePort: 32001
#...
selector:
application: headless-vnc
type: NodePort
In this case you have to determine the EXTERNAL IP of the node kubermatic-s9g9frstlk-n7tw6. The you can connect to the pod via http://:32001/?password=vncpassword.
Execute the command:
kubectl delete -f kubernetes/kubernetes.headless-vnc.example.deployment.yaml