이것은 초보자가하는 질문입니다. 나는 IBM Cloud의 kubernetes 클러스터에 간단한 Hello World Python 플라스크 애플리케이션을 배치하려고 시도하고있다. 응용 프로그램 (main.py
) :IBM Cloud Kubernetes 배치 용 URL
import os
from flask import Flask
app = Flask(__name__)
@app.route('/')
def welcomeToMyapp():
return 'Ciao'
port = os.getenv('PORT', '5000')
if __name__ == "__main__":
app.run(host='0.0.0.0', port=int(port))
나는 docker build --rm -t kube-hw .
과 Dockerfile
내 도커 이미지를 구축 :
FROM ubuntu:latest
WORKDIR /app
ADD requirements.txt /app
RUN apt-get -y update
RUN apt-get -y install python3-pip
RUN pip3 install --upgrade pip
RUN pip3 install -r requirements.txt
ADD main.py /app
EXPOSE 80
CMD ["python3", "main.py"]
내가 docker run --rm -p 5000:5000 kube-hw
로컬로 실행합니다. 그건 잘 작동합니다. 나는 http://0.0.0.0:5000/
을 탐색 할 수있다.
그러나 IBM Cloud에서 k8s에서 동일한 이미지를 실행할 때 URL 엔드 포인트에 액세스 할 수 없습니다. 내 배포 단계는 (아래 답변에서 언급 한 기사에서) : 포트 30930
를 얻을 수
Name: kube-hw-3409617459-5bczp
Namespace: default
Node: 10.77.223.141/10.77.223.141
Start Time: Sat, 23 Dec 2017 14:52:39 -0500
Status: Running
IP: 172.30.205.113
그리고 kubectl describe service kube-hw
:
docker tag kube-hw registry.ng.bluemix.net/sudoku/kube-hw:latest
docker push registry.ng.bluemix.net/sudoku/kube-hw:latest
kubectl run kube-hw --image=registry.ng.bluemix.net/sudoku/kube-hw:latest --port=80
kubectl expose deployment kube-hw --port=80 --target-port=5000 --type=NodePort
내가 다음 외부 IP 주소 10.77.223.141
를 얻을 수 kubectl describe pod kube-hw
를 사용
Name: kube-hw
Namespace: default
Labels: run=kube-hw
Annotations: <none>
Selector: run=kube-hw
Type: NodePort
IP: 172.21.250.32
Port: <unset> 80/TCP
TargetPort: 5000/TCP
NodePort: <unset> 30930/TCP
Endpoints: 172.30.205.116:5000
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
URL http:\\10.77.223.141:30930
가 해결되지 않습니다. 로그를보고 앱이 실행되는 모습을 볼 수 있지만 요청이 이루어지지 않습니다. 이 기사에서는 --target-port=8888
을 사용합니다. 하지만 컨테이너에서 5000
포트를 사용 했으므로 --target-port=5000
으로 변경했습니다. 어딘가에서 포트 번호가 잘못 정렬되어 있는지 궁금합니다.
10.xxx 외부 아니다 다음과 같이
는 URL을 형성, 외부 IP 주소를 얻을 다음bx cs workers <cluster_name>
를 실행하려면 주소. –