我有以下部署yaml:
apiVersion: v1
kind: Namespace
metadata:
name: authentication
labels:
name: authentication
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: authentication-deployment
namespace: authentication
spec:
replicas: 2
template:
metadata:
labels:
app: authentication
spec:
containers:
- name: authentication
image: blueapp/authentication:0.0.0
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: authentication-service
namespace: authentication
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
selector:
name: authentication-deployment
type: LoadBalancer
externalName: authentication
我对kubernetes很新,但我对我尝试做的事情的理解是创建一个命名空间,在该命名空间中创建一个2个pod的部署,然后创建一个负载均衡器来为这些pod分配流量。
当我跑步时
$ kubectl create -f deployment.yaml
一切都很好,但服务永远不会被分配外部IP
有什么明显可能导致这种情况吗?
答案 0 :(得分:0)
您的服务属于NodePort
类型。
要获得分配给服务的负载均衡器,您应该使用LoadBalancer服务类型:
type: LoadBalancer
请参阅此处的文档: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types
答案 1 :(得分:0)
只有在正确配置云提供商的情况下,外部IP才会在受支持的云环境中分配。
创建服务时,请注意kube-controller-manager
日志中的错误消息。