Endpoints
apiVersion: v1
import "k8s.io/api/core/v1"
Endpoints
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}]
},
]
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 ]
subsets.addresses ([]EndpointAddress)
Atomic: буде замінено під час злиття
IP-адреси, які пропонують відповідні порти, позначені як готові. Ці точки доступу повинні вважатися безпечними для використання балансувальниками навантаження та клієнтами.
EndpointAddress — це кортеж, що описує одну IP-адресу.
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-адресу.
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 — це кортеж, що описує один порт.
subsets.ports.port (int32), обовʼязкове
Номер порту точки доступу.
subsets.ports.protocol (string)
IP-протокол для цього порту. Повинен бути UDP, TCP або SCTP. За замовчуванням TCP.
subsets.ports.name (string)
Імʼя цього порту. Це повинно відповідати полю 'name' у відповідному ServicePort. Повинно бути DNS_LABEL. Необовʼязкове, лише якщо визначено один порт.
subsets.ports.appProtocol (string)
Протокол програми для цього порту. Використовується як підказка для реалізацій, щоб пропонувати багатший функціонал для протоколів, які вони розуміють. Це поле відповідає стандартному синтаксису міток Kubernetes. Дійсні значення:
Непрефіксовані назви протоколів – зарезервовані для стандартних імен служб IANA (згідно RFC-6335 та https://www.iana.org/assignments/service-names).
Назви з префіксами, визначеними Kubernetes:
- 'kubernetes.io/h2c' — HTTP/2 з попередніми знаннями без шифрування, як описано в https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
- 'kubernetes.io/ws' — WebSocket без шифрування, як описано в https://www.rfc-editor.org/rfc/rfc6455
- 'kubernetes.io/wss' — WebSocket через TLS, як описано в https://www.rfc-editor.org/rfc/rfc6455
Інші протоколи повинні використовувати назви з префіксами визначені реалізацією, такі як mycompany.com/my-custom-protocol.
EndpointsList
EndpointsList – це список точок доступу.
apiVersion: v1
kind: EndpointsList
metadata (ListMeta)
Стандартні метадані списку. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
items ([]Endpoints), обовʼязкове
Список точок доступу.
Операції
get
отримати вказані Endpoints
HTTP запит
GET /api/v1/namespaces/{namespace}/endpoints/{name}
Параметри
name (в шляху): string, обовʼязково
назва Endpoints
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (Endpoints): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу Endpoints
HTTP запит
GET /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
перелік або перегляд обʼєктів типу Endpoints
HTTP запит
GET /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
створення Endpoints
HTTP запит
POST /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
заміна Endpoints
HTTP запит
PUT /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
часткове оновлення Endpoints
HTTP запит
PATCH /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
видалення Endpoints
HTTP запит
DELETE /api/v1/namespaces/{namespace}/endpoints/{name}
Параметри
name (в шляху): string, обовʼязково
назва Endpoints
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалити колекцію Endpoints
HTTP запит
DELETE /api/v1/namespaces/{namespace}/endpoints
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized