Skip to content

Commit 81a3ee2

Browse files
committed
[AKS] Split Services Newtorking Conceptual Docs
1 parent 8578e70 commit 81a3ee2

6 files changed

+87
-42
lines changed

articles/aks/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,8 @@
136136
href: concepts-network.md
137137
- name: CNI networking
138138
href: azure-cni-overview.md
139+
- name: Services
140+
href: concepts-network-services.md
139141
- name: Storage
140142
href: concepts-storage.md
141143
- name: Scaling

articles/aks/concepts-network.md

Lines changed: 33 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,16 @@ ms.custom: fasttrack-edit
1010

1111
In a container-based, microservices approach to application development, application components work together to process their tasks. Kubernetes provides various resources enabling this cooperation:
1212

13-
* You can connect to and expose applications internally or externally.
14-
* You can build highly available applications by load balancing your applications.
15-
* You can restrict the flow of network traffic into or between pods and nodes to improve security.
16-
* You can configure Ingress traffic for SSL/TLS termination or routing of multiple components for your more complex applications.
13+
- You can connect to and expose applications internally or externally.
14+
- You can build highly available applications by load balancing your applications.
15+
- You can restrict the flow of network traffic into or between pods and nodes to improve security.
16+
- You can configure Ingress traffic for SSL/TLS termination or routing of multiple components for your more complex applications.
1717

1818
This article introduces the core concepts that provide networking to your applications in AKS:
1919

20-
* [Services and ServiceTypes](#services)
21-
* [Azure virtual networks](#azure-virtual-networks)
22-
* [Ingress controllers](#ingress-controllers)
23-
* [Network policies](#network-policies)
20+
- [Azure virtual networks](#azure-virtual-networks)
21+
- [Ingress controllers](#ingress-controllers)
22+
- [Network policies](#network-policies)
2423

2524
## Kubernetes networking basics
2625

@@ -32,8 +31,6 @@ Kubernetes employs a virtual networking layer to manage access within and betwee
3231

3332
Regarding specific Kubernetes functionalities:
3433

35-
- **Services**: Services is used to logically group pods, allowing direct access to them through a specific IP address or DNS name on a designated port.
36-
- **Service types**: Specifies the kind of Service you wish to create.
3734
- **Load balancer**: You can use a load balancer to distribute network traffic evenly across various resources.
3835
- **Ingress controllers**: These facilitate Layer 7 routing, which is essential for directing application traffic.
3936
- **Egress traffic control**: Kubernetes allows you to manage and control outbound traffic from cluster nodes.
@@ -46,33 +43,32 @@ In the context of the Azure platform:
4643
- As you open network ports to pods, Azure automatically configures the necessary network security group rules.
4744
- Azure can also manage external DNS configurations for HTTP application routing as new Ingress routes are established.
4845

49-
## Services
5046

5147
To simplify the network configuration for application workloads, Kubernetes uses *Services* to logically group a set of pods together and provide network connectivity. You can specify a Kubernetes *ServiceType* to define the type of Service you want. For example, if you want to expose a Service on an external IP address outside of your cluster. For more information, see the Kubernetes documentation on [Publishing Services (ServiceTypes)][service-types].
5248

5349
The following ServiceTypes are available:
5450

55-
* **ClusterIP**
51+
- **ClusterIP**
5652

5753
ClusterIP creates an internal IP address for use within the AKS cluster. The ClusterIP Service is good for *internal-only applications* that support other workloads within the cluster. ClusterIP is the default used if you don't explicitly specify a type for a Service.
5854

5955
![Diagram showing ClusterIP traffic flow in an AKS cluster][aks-clusterip]
6056

61-
* **NodePort**
57+
- **NodePort**
6258

6359
NodePort creates a port mapping on the underlying node that allows the application to be accessed directly with the node IP address and port.
6460

6561
![Diagram showing NodePort traffic flow in an AKS cluster][aks-nodeport]
6662

67-
* **LoadBalancer**
63+
- **LoadBalancer**
6864

6965
LoadBalancer creates an Azure load balancer resource, configures an external IP address, and connects the requested pods to the load balancer backend pool. To allow customers' traffic to reach the application, load balancing rules are created on the desired ports.
7066

7167
![Diagram showing Load Balancer traffic flow in an AKS cluster][aks-loadbalancer]
7268

7369
For HTTP load balancing of inbound traffic, another option is to use an [Ingress controller](#ingress-controllers).
7470

75-
* **ExternalName**
71+
- **ExternalName**
7672

7773
Creates a specific DNS entry for easier application access.
7874

@@ -86,11 +82,11 @@ Learn more about Services in the [Kubernetes docs][k8s-service].
8682

8783
In AKS, you can deploy a cluster that uses one of the following network models:
8884

89-
* ***Kubenet* networking**
85+
- ***Kubenet* networking**
9086

9187
The network resources are typically created and configured as the AKS cluster is deployed.
9288

93-
* ***Azure Container Networking Interface (CNI)* networking**
89+
- ***Azure Container Networking Interface (CNI)* networking**
9490

9591
The AKS cluster is connected to existing virtual network resources and configurations.
9692

@@ -147,14 +143,14 @@ It's possible to install in AKS a non-Microsoft CNI using the [Bring your own CN
147143

148144
Both kubenet and Azure CNI provide network connectivity for your AKS clusters. However, there are advantages and disadvantages to each. At a high level, the following considerations apply:
149145

150-
* **kubenet**
146+
- **kubenet**
151147

152-
* Conserves IP address space.
153-
* Uses Kubernetes internal or external load balancers to reach pods from outside of the cluster.
154-
* You manually manage and maintain user-defined routes (UDRs).
155-
* Maximum of 400 nodes per cluster.
148+
- Conserves IP address space.
149+
- Uses Kubernetes internal or external load balancers to reach pods from outside of the cluster.
150+
- You manually manage and maintain user-defined routes (UDRs).
151+
- Maximum of 400 nodes per cluster.
156152

157-
* **Azure CNI**
153+
- **Azure CNI**
158154

159155
* Pods get full virtual network connectivity and can be directly reached via their private IP address from connected networks.
160156
* Requires more IP address space.
@@ -185,13 +181,13 @@ For more information on Azure CNI and kubenet and to help determine which option
185181

186182
Whatever network model you use, both kubenet and Azure CNI can be deployed in one of the following ways:
187183

188-
* The Azure platform can automatically create and configure the virtual network resources when you create an AKS cluster.
189-
* You can manually create and configure the virtual network resources and attach to those resources when you create your AKS cluster.
184+
- The Azure platform can automatically create and configure the virtual network resources when you create an AKS cluster.
185+
- You can manually create and configure the virtual network resources and attach to those resources when you create your AKS cluster.
190186

191187
Although capabilities like service endpoints or UDRs are supported with both kubenet and Azure CNI, the [support policies for AKS][support-policies] define what changes you can make. For example:
192188

193-
* If you manually create the virtual network resources for an AKS cluster, you're supported when configuring your own UDRs or service endpoints.
194-
* If the Azure platform automatically creates the virtual network resources for your AKS cluster, you can't manually change those AKS-managed resources to configure your own UDRs or service endpoints.
189+
- If you manually create the virtual network resources for an AKS cluster, you're supported when configuring your own UDRs or service endpoints.
190+
- If the Azure platform automatically creates the virtual network resources for your AKS cluster, you can't manually change those AKS-managed resources to configure your own UDRs or service endpoints.
195191

196192
## Ingress controllers
197193

@@ -232,11 +228,11 @@ The following table lists the different scenarios where you might use each ingre
232228

233229
The application routing addon is the recommended way to configure an Ingress controller in AKS. The application routing addon is a fully managed ingress controller for Azure Kubernetes Service (AKS) that provides the following features:
234230

235-
* Easy configuration of managed NGINX Ingress controllers based on Kubernetes NGINX Ingress controller.
231+
- Easy configuration of managed NGINX Ingress controllers based on Kubernetes NGINX Ingress controller.
236232

237-
* Integration with Azure DNS for public and private zone management.
233+
- Integration with Azure DNS for public and private zone management.
238234

239-
* SSL termination with certificates stored in Azure Key Vault.
235+
- SSL termination with certificates stored in Azure Key Vault.
240236

241237
For more information about the application routing addon, see [Managed NGINX ingress with the application routing add-on](app-routing.md).
242238

@@ -268,8 +264,8 @@ For more information, see [How network security groups filter network traffic][n
268264

269265
By default, all pods in an AKS cluster can send and receive traffic without limitations. For improved security, define rules that control the flow of traffic, like:
270266

271-
* Back-end applications are only exposed to required frontend services.
272-
* Database components are only accessible to the application tiers that connect to them.
267+
- Back-end applications are only exposed to required frontend services.
268+
- Database components are only accessible to the application tiers that connect to them.
273269

274270
Network policy is a Kubernetes feature available in AKS that lets you control the traffic flow between pods. You can allow or deny traffic to the pod based on settings such as assigned labels, namespace, or traffic port. While network security groups are better for AKS nodes, network policies are a more suited, cloud-native way to control the flow of traffic for pods. As pods are dynamically created in an AKS cluster, required network policies can be automatically applied.
275271

@@ -283,11 +279,11 @@ For associated best practices, see [Best practices for network connectivity and
283279

284280
For more information on core Kubernetes and AKS concepts, see the following articles:
285281

286-
* [Kubernetes / AKS clusters and workloads][aks-concepts-clusters-workloads]
287-
* [Kubernetes / AKS access and identity][aks-concepts-identity]
288-
* [Kubernetes / AKS security][aks-concepts-security]
289-
* [Kubernetes / AKS storage][aks-concepts-storage]
290-
* [Kubernetes / AKS scale][aks-concepts-scale]
282+
- [Kubernetes / AKS clusters and workloads][aks-concepts-clusters-workloads]
283+
- [Kubernetes / AKS access and identity][aks-concepts-identity]
284+
- [Kubernetes / AKS security][aks-concepts-security]
285+
- [Kubernetes / AKS storage][aks-concepts-storage]
286+
- [Kubernetes / AKS scale][aks-concepts-scale]
291287

292288
<!-- IMAGES -->
293289
[aks-clusterip]: ./media/concepts-network/aks-clusterip.png
@@ -298,8 +294,6 @@ For more information on core Kubernetes and AKS concepts, see the following arti
298294

299295
<!-- LINKS - External -->
300296
[cni-networking]: https://github.com/Azure/azure-container-networking/blob/master/docs/cni.md
301-
[k8s-service]: https://kubernetes.io/docs/concepts/services-networking/service/
302-
[service-types]: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
303297

304298
<!-- LINKS - Internal -->
305299
[aks-configure-kubenet-networking]: configure-kubenet.md
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
title: Concepts - Services in Azure Kubernetes Services (AKS)
3+
description: Learn about networking Services in Azure Kubernetes Service (AKS), including what services are in Kubernetes and what types of Services are available in AKS.
4+
ms.topic: conceptual
5+
ms.date: 04/03/2024
6+
ms.custom: fasttrack-edit
7+
---
8+
9+
# Kubernetes Services in AKS
10+
11+
Kubernetes Services are used to logically group pods and provide network connectivity by allowing direct access to them through a specific IP address or DNS name on a designated port. This allows you to expose your application workloads to other services within the cluster or to external clients without having to manually manage the network configuration for each pod hosting a workload.
12+
13+
You can specify a Kubernetes _ServiceType_ to define the type of Service you want, e.g., if you want to expose a Service on an external IP address outside of your cluster. For more information, see the Kubernetes documentation on [Publishing Services (ServiceTypes)][service-types].
14+
15+
The following ServiceTypes are available in AKS:
16+
17+
## ClusterIP
18+
19+
ClusterIP creates an internal IP address for use within the AKS cluster. The ClusterIP Service is good for _internal-only applications_ that support other workloads within the cluster. ClusterIP is used by default if you don't explicitly specify a type for a Service.
20+
21+
![Diagram showing ClusterIP traffic flow in an AKS cluster][aks-clusterip]
22+
23+
## NodePort
24+
25+
NodePort creates a port mapping on the underlying node that allows the application to be accessed directly with the node IP address and port.
26+
27+
![Diagram showing NodePort traffic flow in an AKS cluster][aks-nodeport]
28+
29+
## LoadBalancer
30+
31+
LoadBalancer creates an Azure load balancer resource, configures an external IP address, and connects the requested pods to the load balancer backend pool. To allow customers' traffic to reach the application, load balancing rules are created on the desired ports.
32+
33+
![Diagram showing Load Balancer traffic flow in an AKS cluster][aks-loadbalancer]
34+
35+
For HTTP load balancing of inbound traffic, another option is to use an [Ingress controller](#ingress-controllers).
36+
37+
## ExternalName
38+
39+
Creates a specific DNS entry for easier application access.
40+
41+
Either the load balancers and services IP address can be dynamically assigned, or you can specify an existing static IP address. You can assign both internal and external static IP addresses. Existing static IP addresses are often tied to a DNS entry.
42+
43+
You can create both _internal_ and _external_ load balancers. Internal load balancers are only assigned a private IP address, so they can't be accessed from the Internet.
44+
45+
Learn more about Services in the [Kubernetes docs][k8s-service].
46+
47+
<!-- LINKS - External -->
48+
[k8s-service]: https://kubernetes.io/docs/concepts/services-networking/service/
49+
[service-types]: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types

articles/aks/learn/quick-windows-container-deploy-cli.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ To learn more about AKS, and to walk through a complete code-to-deployment examp
334334
[az-group-create]: /cli/azure/group#az_group_create
335335
[aks-solution-guidance]: /azure/architecture/reference-architectures/containers/aks-start-here?toc=/azure/aks/toc.json&bc=/azure/aks/breadcrumb/toc.json
336336
[kubernetes-deployment]: ../concepts-clusters-workloads.md#deployments-and-yaml-manifests
337-
[kubernetes-service]: ../concepts-network.md#services
337+
[kubernetes-service]: ../concepts-network-services.md
338338
[windows-server-password]: /windows/security/threat-protection/security-policy-settings/password-must-meet-complexity-requirements#reference
339339
[win-faq-change-admin-creds]: ../windows-faq.md#how-do-i-change-the-administrator-password-for-windows-server-nodes-on-my-cluster
340340
[baseline-reference-architecture]: /azure/architecture/reference-architectures/containers/aks/baseline-aks?toc=/azure/aks/toc.json&bc=/azure/aks/breadcrumb/toc.json

articles/aks/learn/quick-windows-container-deploy-portal.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ To learn more about AKS, and to walk through a complete code-to-deployment examp
260260
[az-aks-get-credentials]: /cli/azure/aks#az_aks_get_credentials
261261
[azure-portal]: https://portal.azure.com
262262
[kubernetes-deployment]: ../concepts-clusters-workloads.md#deployments-and-yaml-manifests
263-
[kubernetes-service]: ../concepts-network.md#services
263+
[kubernetes-service]: ../concepts-network-services.md
264264
[preset-config]: ../quotas-skus-regions.md#cluster-configuration-presets-in-the-azure-portal
265265
[import-azakscredential]: /powershell/module/az.aks/import-azakscredential
266266
[baseline-reference-architecture]: /azure/architecture/reference-architectures/containers/aks/baseline-aks?toc=/azure/aks/toc.json&bc=/azure/aks/breadcrumb/toc.json

articles/aks/learn/quick-windows-container-deploy-powershell.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ To learn more about AKS, and to walk through a complete code-to-deployment examp
315315
[new-azakscluster]: /powershell/module/az.aks/new-azakscluster
316316
[import-azakscredential]: /powershell/module/az.aks/import-azakscredential
317317
[kubernetes-deployment]: ../concepts-clusters-workloads.md#deployments-and-yaml-manifests
318-
[kubernetes-service]: ../concepts-network.md#services
318+
[kubernetes-service]: ../concepts-network-services.md
319319
[aks-tutorial]: ../tutorial-kubernetes-prepare-app.md
320320
[aks-solution-guidance]: /azure/architecture/reference-architectures/containers/aks-start-here?toc=/azure/aks/toc.json&bc=/azure/aks/breadcrumb/toc.json
321321
[windows-server-password]: /windows/security/threat-protection/security-policy-settings/password-must-meet-complexity-requirements#reference

0 commit comments

Comments
 (0)