当前位置: 首页 > 工具软件 > KinD > 使用案例 >

kind多节点端口映射

双弘益
2023-12-01

前面的笔记中介绍过说多节点的kind集群yaml:

kind: Cluster   
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker 

这样的多节点生成后发现生成的pod竟然无法访问,查阅文档发现kind集群的端口需要和node的端口映射,官方建议是listenAddress写为0.0.0.0,并不是127.0.0.1

主机端口应该是0-65535 而container端口开放好像是30000-32767

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
  extraPortMappings:
  - containerPort: 80
    hostPort: 31180
    listenAddress: "0.0.0.0"
  - containerPort: 30100
    hostPort: 41100
    listenAddress: "0.0.0.0"
- role: worker
  extraPortMappings:
  - containerPort: 80
    hostPort: 31280
    listenAddress: "0.0.0.0"
  - containerPort: 30100
    hostPort: 42100
    listenAddress: "0.0.0.0"
- role: worker
  extraPortMappings:
  - containerPort: 80
    hostPort: 31380
    listenAddress: "0.0.0.0"
  - containerPort: 30100
    hostPort: 43100
    listenAddress: "0.0.0.0"

这段yaml 做了比较简单的映射,把容器上的80、30100 端口映射到节点的不同的端口上,如果有需求可以映射更多的端口

创建集群并指定集群名字:

kind create cluster --config mykind.yaml --name mykind

nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  selector:
    matchLabels:
      lb: ng
  replicas: 3
  template:
    metadata:
      labels:
        lb: ng #pod的label
    spec:
      containers:
      - name: nginxweb
        image: nginx
        ports:
        - containerPort: 80

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    lb: ng
  type: NodePort
  ports:
    - protocol: TCP
      port: 10008 #pod端口,可在pod中通过k8s的clusterip访问
      targetPort: 80 #容器端口
      nodePort: 30100 #node端口

这样就可以访问了:curl localhost:41100,注意是主机端口,因为之前生成集群的时候映射出来了
 

 类似资料: