How to get Public IP and set symmetrical port mapping on Pod via Python SDK

I have created a pod with python in the following way
runpod.api_key = os.getenv("RUNPOD_API_KEY")
bot_name = 'Testing Pod Public IP 1'

pod = runpod.create_pod(
name=bot_name,
image_name="runpod/pytorch:2.2.0-py3.10-cuda12.1.1-devel-ubuntu22.04",
gpu_count=1,
gpu_type_id='NVIDIA A40',
network_volume_id="8y",
volume_mount_path="/workspace",
ports= "8888/http,22/tcp,70001/tcp",
env={
"PUBLIC_KEY": "ssh-ed25519 ",
"JUPYTER_PASSWORD": "h7xw7gxh407nxshza6f3",
"RUNPOD_PUBLIC_IP": "10.2.25.69",
"RUNPOD_TCP_PORT_70001": 5000
},
support_public_ip=True,
docker_args="/workspace/start_finetune.sh",
container_disk_in_gb=20
)

print(pod)
runpod.api_key = os.getenv("RUNPOD_API_KEY")
bot_name = 'Testing Pod Public IP 1'

pod = runpod.create_pod(
name=bot_name,
image_name="runpod/pytorch:2.2.0-py3.10-cuda12.1.1-devel-ubuntu22.04",
gpu_count=1,
gpu_type_id='NVIDIA A40',
network_volume_id="8y",
volume_mount_path="/workspace",
ports= "8888/http,22/tcp,70001/tcp",
env={
"PUBLIC_KEY": "ssh-ed25519 ",
"JUPYTER_PASSWORD": "h7xw7gxh407nxshza6f3",
"RUNPOD_PUBLIC_IP": "10.2.25.69",
"RUNPOD_TCP_PORT_70001": 5000
},
support_public_ip=True,
docker_args="/workspace/start_finetune.sh",
container_disk_in_gb=20
)

print(pod)
I also tried to use the console for clarity, but even when I put 70001 in TCP it wont map 5000:5000 but instead it assigns a port itself. Even when it does, how do I know which port it is via python?
No description
No description
23 Replies
nerdylive
nerdylive•2mo ago
Yes, sometimes you may get symetricall port mapping, but sometimes you don't *even if you have added port number more than (? howmuch i forgot) So to get the external port number you mapped you can get it from these env varibles inside the pod: * TCP port 22: RUNPOD_TCP_PORT_22 * Public ip: RUNPOD_PUBLIC_IP
Asad Jamal Cognify
Asad Jamal Cognify•2mo ago
How do I get these? What is the command in python? Port number more than 70000
nerdylive
nerdylive•2mo ago
os.environ contains an list of environment variable i guess so os.environ['RUNPOD_PUBLIC_IP'] like that, or if it doesn't work please search google 🙂
Asad Jamal Cognify
Asad Jamal Cognify•2mo ago
When I create a pod I dont see it in the printed variable
{'id': 'dfg', 'desiredStatus': 'RUNNING', 'imageName': 'runpod/pytorch:2.2.0-py3.10-cuda12.1.1-devel-ubuntu22.04', 'env': ['PUBLIC_KEY=ssh-ed25519 m', 'JUPYTER_PASSWORD=h7xw7gxh407nxshza6f3', 'RUNPOD_PUBLIC_IP=10.2.25.69', 'RUNPOD_TCP_PORT_70000=5000'], 'machineId': 'gp8l45q218uu', 'machine': {'podHostId': '85f0xhj08uxndo-644112f0'}}
{'id': 'dfg', 'desiredStatus': 'RUNNING', 'imageName': 'runpod/pytorch:2.2.0-py3.10-cuda12.1.1-devel-ubuntu22.04', 'env': ['PUBLIC_KEY=ssh-ed25519 m', 'JUPYTER_PASSWORD=h7xw7gxh407nxshza6f3', 'RUNPOD_PUBLIC_IP=10.2.25.69', 'RUNPOD_TCP_PORT_70000=5000'], 'machineId': 'gp8l45q218uu', 'machine': {'podHostId': '85f0xhj08uxndo-644112f0'}}
nerdylive
nerdylive•2mo ago
I still see your public ip 'RUNPOD_PUBLIC_IP=10.2.25.69', if you don't have the port number there, its not exposed.
Asad Jamal Cognify
Asad Jamal Cognify•2mo ago
Yeah But I passed that env variable myself. The actual assigned publib ip is something else
nerdylive
nerdylive•2mo ago
keep in mind normal tcp port range:
No description
nerdylive
nerdylive•2mo ago
No i think thats not the way you expose an tcp port
Asad Jamal Cognify
Asad Jamal Cognify•2mo ago
Expose ports | RunPod Documentation
Exposing ports on your pod to the outside world: Learn how to expose ports via RunPod's Proxy or TCP Public IP, and discover the benefits and limitations of each method, including symmetrical port mapping requests.
nerdylive
nerdylive•2mo ago
ports= "8888/http,22/tcp,70001/tcp", this is how you expose ports please describe what are you having trouble with, what are you expecting, and what have you tried
Asad Jamal Cognify
Asad Jamal Cognify•2mo ago
I created them like this
pod = runpod.create_pod(
name=bot_name,
image_name="runpod/pytorch:2.2.0-py3.10-cuda12.1.1-devel-ubuntu22.04",
gpu_count=1,
gpu_type_id='NVIDIA A40',
network_volume_id="8y",
volume_mount_path="/workspace",
ports= "8888/http,22/tcp,70001/tcp",
env={
"PUBLIC_KEY": "ssh-ed25519 ",
"JUPYTER_PASSWORD": "h7xw7gxh407nxshza6f3",
"RUNPOD_PUBLIC_IP": "10.2.25.69",
"RUNPOD_TCP_PORT_70001": 5000
},
support_public_ip=True,
docker_args="/workspace/start_finetune.sh",
container_disk_in_gb=20
)
pod = runpod.create_pod(
name=bot_name,
image_name="runpod/pytorch:2.2.0-py3.10-cuda12.1.1-devel-ubuntu22.04",
gpu_count=1,
gpu_type_id='NVIDIA A40',
network_volume_id="8y",
volume_mount_path="/workspace",
ports= "8888/http,22/tcp,70001/tcp",
env={
"PUBLIC_KEY": "ssh-ed25519 ",
"JUPYTER_PASSWORD": "h7xw7gxh407nxshza6f3",
"RUNPOD_PUBLIC_IP": "10.2.25.69",
"RUNPOD_TCP_PORT_70001": 5000
},
support_public_ip=True,
docker_args="/workspace/start_finetune.sh",
container_disk_in_gb=20
)
Okay
nerdylive
nerdylive•2mo ago
"RUNPOD_TCP_PORT_70001": 5000 < this is unecessary btw okay
Asad Jamal Cognify
Asad Jamal Cognify•2mo ago
I created a new pod I want to know its public ip I exposed port 5000 in ports parameter, but the mapping is asymetrical, how can I make it symetrical to 5000 Via python using runpod library
nerdylive
nerdylive•2mo ago
Im not sure how to get the public ip via runpod's library but you can access it inside the pod using env variables
I exposed port 5000 in ports parameter, but the mapping is asymetrical, how can I make it symetrical to 5000
Thats random,there is a chance you can get it and may not get it all clear?
Madiator2011 (Work)
Madiator2011 (Work)•2mo ago
RUNPOD_TCP_PORT_70001 wont work like this you will need to set port to something like 70001 + then from inside pod you would need to reed env variable RUNPOD_TCP_PORT_70001 to see what symetric port got assigned for you
Want results from more Discord servers?
Add your server