我正在将docker-compose文件转换为k8s。我使用k8s kompose程序自动生成服务。
在原始泊坞窗设置端口80和443上曝光。
我可以看到我的k8s对象中引用的服务端口:
"containers": [
{
"name": "router",
"image": "myApp/router:latest",
"ports": [
{
"containerPort": 80,
"protocol": "TCP"
},
{
"containerPort": 443,
"protocol": "TCP"
}
],
当我从UI看时,我可以看到端口对于pod是正确的,但服务副本集显示了这一点:
如何在副本集外部打开端口?
答案 0 :(得分:1)
在Kubernetes中,您有多种方法可以公开您的服务:
将Service
与NodePort
或LoadBalancer
类型一起使用。这是推荐的方式,它适用于L4。
对于LoadBalancer
,您需要一个负载均衡器本身的外部提供商,因此它仅适用于云和其他一些环境。如果您在自己的硬件上安装了内部部署,则应使用NodePort
类型。
Ingress
。这也是一种推荐的方式,但它适用于L7。您可以使用您喜欢的选项,具体取决于您的应用程序。
现在,您的应用仅在群集中公开,因为默认情况下,Pod仅适用于其他Pod(就像在没有Expose
选项的docker-compose中一样)。
以下是文章about how to define a Service,Ingress和how to use Service来展示您的应用。