동적으로 노드의 ip를 추출하는 방법을 구현해보자.
구현 아이디어
구현 아이디어는 다음과 같다.
- 노드의 ip와 추출한다.
- pod에 할당된 노드의 이름을 알아낸다.
- 노드의 이름에 해당하는 노드의 ip를 찾는다.
kubectl get nodes -o wide
위의 명령어를 입력했을 때, 나오는 EXTERNAL-IP와 실제 노드에 할당된 공인 ip가 동일한 것을 확인
코드 작성
[노드 IP 추출하기]
# node의 이름과 ip를 추출하기 위한 용도
def extractNodesInfo():
result = os.popen("kubectl get nodes -o wide --kubeconfig /root/kubeconfig.yml").read()
print("result:", result)
nodeInfoList = result.split('\\n')[1:-1]
print("nodeInfo: ", nodeInfoList)
for nodeInfo in nodeInfoList:
node = nodeInfo.split()
nodeName, nodeExternalIp = node[0], node[6]
extractNodeInfos[nodeName] = nodeExternalIp
print("extractN: ", extractNodeInfos)
return extractNodeInfos
[Pod의 노드 정보 추출]
# pod의 external ip를 알기 위한 함수
def extractNodeIpOfPod(nodeList):
result = os.popen("kubectl get pods -o wide --kubeconfig /root/kubeconfig.yml").read()
print("result:", result)
podInfoList = result.split('\\n')[1:-1]
print("podInfo: ", podInfoList)
for podInfo in podInfoList:
pod = podInfo.split()
podName, nodeName = pod[0], pod[6]
extractPodInfos[podName] = nodeName
print("extractP: ", extractPodInfos)
for podName, nodeName in extractPodInfos.items():
if nodeName in nodeList:
return extractNodeInfos[nodeName]
return "Not Found"
위의 노드 IP 추출 함수와 Pod의 노드 정보 추출 함수를 사용하여 pod에 해당하는 node IP를 할당하면 된다.
사용자가 가상환경을 실행하려고 할 때(즉, flask 코드 상에서 start가 실행될 때), external IP를 pod에 할당하면 동적으로 pod가 위치한 nodeIP를 찾을 수 있다.
'💻 개발 > 졸업과제' 카테고리의 다른 글
서비스 배포하기 (0) | 2023.10.19 |
---|---|
kubernetes server에서 flask 서버로 정보 전송 (0) | 2023.10.19 |
kubernetes 사용하기 (with nCloud) (0) | 2023.10.04 |
Kubernetes Service 사용해보기 (0) | 2023.09.10 |
Harbor 접속 문제 해결하기 .. (EBS 늘리기) (0) | 2023.09.09 |