apiVersion: v1
import "k8s.io/api/core/v1"
Endpoints — є колекцією точок доступу, що фактично утворюють Service.
Name: "mysvc",
Subsets: [
{
Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
},
{
Addresses: [{"ip": "10.10.3.3"}],
Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}]
},
]
Endpoints — це застарілий API, який не містить інформації про всі функції Сервісу. Використовуйте discoveryv1.EndpointSlice для отримання повної інформації про точки доступу Сервісу.
Застаріло: Цей API застарів у версії 1.33+. Використовуйте discoveryv1.EndpointSlice.
apiVersion: v1
kind: Endpoints
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
subsets ([]EndpointSubset)
Atomic: буде замінено під час злиття
Набір всіх точок доступу є обʼєднанням (union) всіх субнаборів. Адреси розміщуються в субнабори відповідно до IP-адрес, які вони поділяють. Одна адреса з кількома портами, деякі з яких готові, а деякі ні (тому що вони належать різним контейнерам), буде відображатися в різних субнаборах для різних портів. Жодна адреса не зʼявиться одночасно в Addresses і NotReadyAddresses в одному субнаборі. Набори адрес і портів, які складають Service.
EndpointSubset – це група адрес з одним набором портів. Розширений набір точок доступу є декартовим добутком Addresses x Ports. Наприклад, задано:
{
Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
}
Отриманий набір точок доступу може виглядати як:
a: [ 10.10.1.1:8675, 10.10.2.2:8675 ],
b: [ 10.10.1.1:309, 10.10.2.2:309 ]
Застаріло: Цей API застарів у версії v1.33+.
subsets.addresses ([]EndpointAddress)
Atomic: буде замінено під час злиття
IP-адреси, які пропонують відповідні порти, позначені як готові. Ці точки доступу повинні вважатися безпечними для використання балансувальниками навантаження та клієнтами.
EndpointAddress — це кортеж, що описує одну IP-адресу. Застаріло: Цей API застарів у версії v1.33+.
subsets.addresses.ip (string), обовʼязкове
IP цієї точки доступу. Не може бути loopback (127.0.0.0/8 або ::1), link-local (169.254.0.0/16 або fe80::/10), або link-local multicast (224.0.0.0/24 або ff02::/16).
subsets.addresses.hostname (string)
Імʼя хоста цієї точки доступу
subsets.addresses.nodeName (string)
Необовʼязково: Вузол, на якому знаходиться ця точка доступу. Це може бути використано для визначення точок доступу що є локальними для вузла.
subsets.addresses.targetRef (ObjectReference)
Посилання на обʼєкт, що надає точку доступу.
subsets.notReadyAddresses ([]EndpointAddress)
Atomic: буде замінено під час злиття
IP-адреси, які пропонують відповідні порти, але наразі не позначені як готові, тому що вони ще не завершили запуск, нещодавно не пройшли перевірку готовності або нещодавно не пройшли перевірку на справність.
EndpointAddress — це кортеж, що описує одну IP-адресу. Застаріло: Цей API застарів у версії v1.33+.
subsets.notReadyAddresses.ip (string), обовʼязкове
IP цієї точки доступу. Не може бути loopback (127.0.0.0/8 або ::1), link-local (169.254.0.0/16 або fe80::/10), або link-local multicast (224.0.0.0/24 або ff02::/16).
subsets.notReadyAddresses.hostname (string)
Імʼя хоста цієї точки доступу
subsets.notReadyAddresses.nodeName (string)
Необовʼязково: Вузол, на якому знаходиться ця точка доступу. Це може бути використано для визначення точок доступу що є локальними для вузла.
subsets.notReadyAddresses.targetRef (ObjectReference)
Посилання на обʼєкт, що надає точку доступу.
subsets.ports ([]EndpointPort)
Atomic: буде замінено під час злиття
Номери портів, доступні на відповідних IP-адресах.
EndpointPort — це кортеж, що описує один порт. Застаріло: Цей API застарів у версії v1.33+.
subsets.ports.port (int32), обовʼязкове
Номер порту точки доступу.
subsets.ports.protocol (string)
IP-протокол для цього порту. Повинен бути UDP, TCP або SCTP. Стандартно — TCP.
Можливі значення переліку (enum):
"SCTP" означає протокол SCTP."TCP" означає протокол TCP."UDP" означає протокол UDP.subsets.ports.name (string)
Імʼя цього порту. Це повинно відповідати полю 'name' у відповідному ServicePort. Повинно бути DNS_LABEL. Необовʼязкове, лише якщо визначено один порт.
subsets.ports.appProtocol (string)
Протокол програми для цього порту. Використовується як підказка для реалізацій, щоб пропонувати багатший функціонал для протоколів, які вони розуміють. Це поле відповідає стандартному синтаксису міток Kubernetes. Дійсні значення:
Непрефіксовані назви протоколів – зарезервовані для стандартних імен служб IANA (згідно RFC-6335 та https://www.iana.org/assignments/service-names).
Назви з префіксами, визначеними Kubernetes:
Інші протоколи повинні використовувати назви з префіксами визначені реалізацією, такі як mycompany.com/my-custom-protocol.
EndpointsList – це список точок доступу. Застаріло: Цей API застарів у версії v1.33+.
apiVersion: v1
kind: EndpointsList
metadata (ListMeta)
Стандартні метадані списку. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
items ([]Endpoints), обовʼязкове
Список точок доступу.
get отримати вказані EndpointsGET /api/v1/namespaces/{namespace}/endpoints/{name}
name (в шляху): string, обовʼязково
назва Endpoints
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
200 (Endpoints): OK
401: Unauthorized
list перелік або перегляд обʼєктів типу EndpointsGET /api/v1/namespaces/{namespace}/endpoints
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
200 (EndpointsList): OK
401: Unauthorized
list перелік або перегляд обʼєктів типу EndpointsGET /api/v1/endpoints
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
200 (EndpointsList): OK
401: Unauthorized
create створення EndpointsPOST /api/v1/namespaces/{namespace}/endpoints
namespace (в шляху): string, обовʼязково
body: Endpoints, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
200 (Endpoints): OK
201 (Endpoints): Created
202 (Endpoints): Accepted
401: Unauthorized
update заміна EndpointsPUT /api/v1/namespaces/{namespace}/endpoints/{name}
name (в шляху): string, обовʼязково
назва Endpoints
namespace (в шляху): string, обовʼязково
body: Endpoints, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
200 (Endpoints): OK
201 (Endpoints): Created
401: Unauthorized
patch часткове оновлення EndpointsPATCH /api/v1/namespaces/{namespace}/endpoints/{name}
name (в шляху): string, обовʼязково
назва Endpoints
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
200 (Endpoints): OK
201 (Endpoints): Created
401: Unauthorized
delete видалення EndpointsDELETE /api/v1/namespaces/{namespace}/endpoints/{name}
name (в шляху): string, обовʼязково
назва Endpoints
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
ignoreStoreReadErrorWithClusterBreakingPotential (в запиті): boolean
pretty (в запиті): string
propagationPolicy (в запиті): string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection видалити колекцію EndpointsDELETE /api/v1/namespaces/{namespace}/endpoints
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
ignoreStoreReadErrorWithClusterBreakingPotential (в запиті): boolean
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
200 (Status): OK
401: Unauthorized