Kubernetes ports - arosh/arosh.github.com GitHub Wiki

Kubernetes ใซใฏ ports ใ‚’ๆŒ‡ๅฎšใ™ใ‚‹็ฎ‡ๆ‰€ใŒใ„ใ‚ใ„ใ‚ใ‚ใ‚‹ใ€‚ใŸใใ•ใ‚“ใ‚ใฃใฆไฝ•ใŒไฝ•ใ ใฃใŸใ‹ๆฏŽๅ›ž่ชฟในใฆใ„ใ‚‹ๆฐ—ใŒใ™ใ‚‹ใฎใงใพใจใ‚ใ‚‹ใ€‚

Pod ใฎ .spec.containers.ports

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#containerport-v1-core

hostIP ใจ hostPort ใฏใพใจใ‚‚ใชใƒญใƒผใƒ‰ใƒใƒฉใƒณใ‚ตใƒผใŒๆ•ดๅ‚™ใ•ใ‚Œใฆใ„ใ‚‹็’ฐๅขƒใงใฏไฝฟใ†ใ“ใจใฏใชใ„ใ€‚ใ‚ˆใฃใฆ่จญๅฎšใ™ใ‚‹ใฎใฏไปฅไธ‹ใฎใฟ

  • name
  • containerPort
  • protocol (TCP, UDP, SCTP. defaults to TCP)

name ใฏ Service ใ‹ใ‚‰ๅๅ‰ใงๅ‚็…งใงใใ‚‹็”จ้€”ใงๅˆฉ็”จใ•ใ‚Œใ‚‹ใ€‚ใ“ใ“ใงใƒใƒผใƒˆใ‚’ๆŒ‡ๅฎšใ—ใชใใฆใ‚‚ expose ใ•ใ‚Œใฆใ„ใ‚‹ใฎใงๆฅต่ซ–ใ‚’่จ€ใˆใฐๆŒ‡ๅฎšใ—ใชใใฆใ‚‚ๅ‹•ใ‹ใ™ใ“ใจใฏใงใใ‚‹ ("Not specifying a port here DOES NOT prevent that port from being exposed.")ใ€‚

Service ใฎ .spec.ports

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#serviceport-v1-core

  • appProtocol
  • name
  • nodePort
  • port
  • protocol
  • targetPort

appProtocol ใฏ "This is used as a hint for implementations to offer richer behavior for protocols that they understand." ใจใ„ใ†ใ“ใจใชใฎใงใ„ใฃใŸใ‚“ๆฐ—ใซใ—ใชใ„ใ“ใจใซใ™ใ‚‹ใ€‚Istio ใฏใ“ใฎใƒ•ใ‚ฃใƒผใƒซใƒ‰ใ‚’ๅ‚็…งใ—ใฆใ„ใ‚‹ใฎใงไธ้ฉๅˆ‡ใช่จญๅฎšใ‚’ใ™ใ‚‹ใจๅ•้กŒใŒ่ตทใใŸไพ‹ใŒใ‚ใ‚‹ใ‚‰ใ—ใ„ใ€‚

name ใฏๅฎŸ่ณชๅฟ…้ ˆใ€‚ใใฎ Service ใซๅซใพใ‚Œใ‚‹ ports ใŒไธ€ใคใ ใ‘ใฎใจใใฏ optional ใ ใŒใ€่ค‡ๆ•ฐใ‚ใ‚‹ใจๅฟ…้ ˆใ€‚

targetPort ใฏ 1๏ฝž65535 ใฎๆ•ดๆ•ฐใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ใ‹ใ€Pod ใฎ ports ใฎ name ใ‚’ๆ–‡ๅญ—ๅˆ—ใงๆŒ‡ๅฎšใ™ใ‚‹ใ€‚ๆŒ‡ๅฎšใ—ใชใ‘ใ‚Œใฐ port ใฎๅ€คใŒๅˆฉ็”จใ•ใ‚Œใ‚‹๏ผˆใŸใ ใ— port ใซใฏๆ•ดๆ•ฐใ—ใ‹ๆŒ‡ๅฎšใงใใชใ„๏ผ‰ใ€‚clusterIP=None ใ™ใชใ‚ใก headless service ใฎๅ ดๅˆใฏ port!=targetPort ใซๆŒ‡ๅฎšใ™ใ‚‹ใ“ใจใซๆ„ๅ‘ณใŒใชใ„ใ“ใจใ‹ใ‚‰ใ€ๆŒ‡ๅฎšใ—ใชใ„ or port ใจๅŒใ˜ๅ€คใงใ‚ใ‚‹ใ“ใจใŒ่ฆๆฑ‚ใ•ใ‚Œใ‚‹ใ€‚

EndpointSlice, EndpointPort

ใ‚ณใƒผใƒ‰ใ‚’่ชญใ‚€ใฎใŒใ‚ˆใ•ใใ†

https://qiita.com/nakamasato/items/13698c24af0a60f71bcd

ๆœช็ขบ่ชใ ใŒใ€ใ“ใ†ใ„ใ†ใ“ใจใซใชใ‚‹ใฎใ ใจไปฎๅฎšใ™ใ‚‹ใจ่…‘ใซ่ฝใกใ‚‹ใ€‚

selector ใ‚’ๆŒ‡ๅฎšใ—ใชใ„ & headless ใงใชใ„ Service ใ‚’ไฝœใฃใฆ่‡ชๅ‰ใง Endpoints ใ‚’็ฎก็†ใ™ใ‚‹ๅ ดๅˆ

ServicePort ใฎ name ใจ EndpointPort ใฎ name ใŒไธ€่‡ดใ™ใ‚‹ใ‚‚ใฎใ‚’ๆŽขใ—ใฆ ServicePort โ†’ EndpointPort ใฎ DNAT ใ‚’่จญๅฎšใ™ใ‚‹ ๏ผˆ"This must match the 'name' field in the corresponding ServicePort." ใฎใ‚ˆใ†ใช่จ˜่ฟฐใŒใ‚ใ‚‹ใฎใงใ“ใ‚Œใฏๆญฃใ—ใใ†๏ผ‰

ServicePort ใฎ targetPort ใฏ็„ก่ฆ–ใ•ใ‚Œใ‚‹๏ผŸ๏ผˆ็„ก่ฆ–ใ•ใ‚Œใ‚‹ใ‚ˆใ†ใซใชใฃใฆใ„ใชใ„ใจใŠใ‹ใ—ใ„๏ผ‰

selector ใ‚’ๆŒ‡ๅฎšใ—ใชใ„ & headless ใฎใจใ

DNS ใง addresses ใƒ•ใ‚ฃใƒผใƒซใƒ‰ใฎ IP ใ‚ขใƒ‰ใƒฌใ‚นใŒๆไพ›ใ•ใ‚Œใ‚‹ใ ใ‘ใง ports ใฏ้–ขไฟ‚ใชใ„ใ€‚

selector ใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ๅ ดๅˆ

Service ใŒ selector ใจ ports.targetPort ใ‹ใ‚‰ Endpoints ใŒไฝœๆˆใ•ใ‚Œใ‚‹

Q. headless Service ใงใฏ ports ใฏๆŒ‡ๅฎšใ—ใชใใฆใ‚‚ใ„ใ„๏ผŸ A. ็„กใใฆใ‚‚ใ„ใ„ใŒใ€็’ฐๅขƒๅค‰ๆ•ฐใงๆณจๅ…ฅใ•ใ‚Œใ‚‹ใ‚ตใƒผใƒ“ใ‚นใƒ‡ใ‚ฃใ‚นใ‚ซใƒใƒชใŒๆไพ›ใ•ใ‚Œใชใใชใ‚‹ใฎใงไธไพฟใ‹ใ‚‚

Q. headless Service ใชใ‚‰ Endpoints ใฎ ports ใฏๆŒ‡ๅฎšใ—ใชใใฆใ‚‚ใ„ใ„๏ผŸ A. ็„กใใฆใ‚‚ใ„ใ„ใŒใ€headless ใงใชใ„ Service ใ‚’ๆ–ฐใŸใซไฝœใ‚‰ใชใ„ใจใ„ใ‘ใชใใชใฃใŸใจใใซใฏ่ฟฝๅŠ ใ—ใฆใญ