URL 用于 IBM Cloud Kubernetes 部署
URL for IBM Cloud Kubernetes deployment
这是一个有点初学者的问题。我正在尝试在 IBM Cloud 上的 kubernetes 集群中部署一个简单的 Hello World Python flask 应用程序。申请(main.py
):
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
:
构建我的 Docker 图像
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 端点。我的部署步骤是(来自下面答案中提到的文章):
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
然后我使用kubectl describe pod kube-hw
获取外部IP地址10.77.223.141
:
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
得到端口30930
:
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
没有解决。我可以查看日志并查看应用程序 运行ning,但没有请求到达它。文章使用--target-port=8888
。但是由于我在容器中使用了端口 5000
,所以我更改为 --target-port=5000
。我想知道我是否在某处未对齐端口号。
您需要的 IP 地址是集群中工作节点的外部 IP 地址。您识别的 IP 地址是一个内部地址。
要获取外部 IP 地址,运行 bx cs workers <cluster_name>
然后组成URL如下:http://<external_node_ip>:<NodePort>
这里有一个文档,其中包含有关使用 NodePort 的更多信息:https://console.bluemix.net/docs/containers/cs_apps.html#cs_apps_public_nodeport
指令变了,现在是
ibmcloud cs workers --cluster your_cluster_name
这是一个有点初学者的问题。我正在尝试在 IBM Cloud 上的 kubernetes 集群中部署一个简单的 Hello World Python flask 应用程序。申请(main.py
):
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 端点。我的部署步骤是(来自下面答案中提到的文章):
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
然后我使用kubectl describe pod kube-hw
获取外部IP地址10.77.223.141
:
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
得到端口30930
:
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
没有解决。我可以查看日志并查看应用程序 运行ning,但没有请求到达它。文章使用--target-port=8888
。但是由于我在容器中使用了端口 5000
,所以我更改为 --target-port=5000
。我想知道我是否在某处未对齐端口号。
您需要的 IP 地址是集群中工作节点的外部 IP 地址。您识别的 IP 地址是一个内部地址。
要获取外部 IP 地址,运行 bx cs workers <cluster_name>
然后组成URL如下:http://<external_node_ip>:<NodePort>
这里有一个文档,其中包含有关使用 NodePort 的更多信息:https://console.bluemix.net/docs/containers/cs_apps.html#cs_apps_public_nodeport
指令变了,现在是
ibmcloud cs workers --cluster your_cluster_name