Kubernetes equivalent of 'docker run -it'

5/30/2019

I have one docker image and I am using following command to run it.

docker run -it -p 1976:1976 --name demo demo.docker.cloud.com/demo/runtime:latest

I want to run the same in Kubernetes. This is my current yaml file.

apiVersion: v1
kind: Deployment
metadata:
  name: demo-deployment
  labels:
    app: demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo
  template:
    metadata:
      labels:
        app: demo
    spec:
      containers:
      - name: demo
        image: demo.docker.cloud.com/demo/runtime:latest
        ports:
        - containerPort: 1976
        imagePullPolicy: Never

This yaml file covers everything except flag "-it". I am not able to find its Kubernetes equivalent. Please help me out with this. Thanks

-- Akash Kumar
docker
kubectl
kubernetes

2 Answers

5/30/2019

I assume you are trying to connect a shell to your running container. Following the guide at https://kubernetes.io/docs/tasks/debug-application-cluster/get-shell-running-container/ - You would need the following commands. To apply your above configuration:

Create the pod: kubectl apply -f ./demo-deployment.yaml

Verify the Container is running: kubectl get pod demo-deployment

Get a shell to the running Container: kubectl exec -it demo-deployment -- /bin/bash

-- Cinderhaze
Source: StackOverflow

5/30/2019

Looking at the Container definition in the API reference, the equivalent options are stdin: true and tty: true.

(None of the applications I work on have ever needed this; the documentation for stdin: talks about "reads from stdin in the container" and the typical sort of server-type processes you'd run in a Deployment don't read from stdin at all.)

-- David Maze
Source: StackOverflow