Managing a Service in the Console
Creating a service
1. Log in to the TKE console and select Cluster in the left sidebar. 2. On the Cluster page, click the ID of the cluster for which you need to create a Service to go to the cluster management page.
3. Select Services and Routes > Service to go to the Service management page. 4. Click Create to enter the Create Service page. Set the Service parameters as needed. Key parameters are as follows:
Service Name: Customize a name.
Namespace: Select a namespace based on your requirements.
(Optional) Advanced Settings:
External Traffic Policy:
Cluster: Defaults to averagely forward all Pods of the workload.
Local: Retain the client IP, and ensure that traffic is only forwarded within the node if the access mode is public network, VPC private network (LoadBalancer) and node port (NodePort). If you choose Local, the health check for nodes without Pods may fail, raising the risk of unbalanced traffic forwarding
Note
If the Service uses the Local
method, there will be a stream interruption when a Pod is scheduled from a TKE node to a super node, or from a super node to a TKE node, because the Service will select only a local service endpoint.
Session Affinity: If you want to ensure that connections from a particular client are passed to the same Pod every time, you can set session affinity based on the client IP address by setting the Service's .spec.sessionAffinity
to ClientIP (the default value is None
).
Workload binding: Reference an existing workload or customize a label. Then, the Service will select workloads with the label.
Note
As a layer-4 CLB instance has only the unique quadruple of CLB VIP, listener protocol, backend RS VIP, and backend RS port and doesn't contain a CLB listener port, scenarios with different CLB listener ports but the same protocol and RS are not supported. In addition, TKE doesn't support opening different ports of the same protocol for the same business.
5. Click Create Service.
Updating a Service
Updating configuration
1. Log in to the TKE console and select Cluster in the left sidebar. 2. On the Cluster Management page, click the target cluster ID to enter the cluster's basic information page.
3. Select Services and Routes > Service. On the Service page, locate the target service and click Update configuration on the right. 4. On the Update access method page, configure the access method as needed.
5. Click Update access method.
Editing YAML
1. Select Services and Routes > Service. On the Service page, locate the target service and click Edit YAML on the right.
2. On the Edit YAML page, edit the YAML and click Done.
Deleting a Service
1. Log in to the TKE console and select Cluster in the left sidebar. 2. On the Cluster Management page, click the target cluster ID to enter the cluster's basic information page.
3. Select Services and Routes > Service. On the Service page, locate the target service and click Delete on the right. Managing a Service Using kubectl
YAML sample
kind: Service
apiVersion: v1
metadata:
## annotations:
## service.kubernetes.io/qcloud-loadbalancer-internal-subnetid: subnet-xxxxxxxx ## If you are creating a Service for private network access, you need to specify this annotation.
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
type: LoadBalancer
Note:
kind: Service resource type.
metadata: Basic information such as Service name and label.
metadata.annotations: Additional description of the Service. You can set additional enhancements to TKE through this parameter.
spec.selector: The Service will select workloads with the label in the label selector.
spec.type: Mode for accessing the Service.
ClusterIP: The Service is made public in the cluster for internal access.
NodePort: The node port mapped to the backend Service. External access to the cluster can be implemented through IP:NodePort
.
LoadBalancer: The Service is made public through the Tencent Cloud CLB instance. A public network CLB instance is created by default, and a private network CLB can be created by specifying annotations.
By default, you can create up to 100 public network or private network CLB instances. If you need more, submit a ticket to increase the quota. The management and sync of configurations between Service and CLB instances are based on the resource object of the LoadBalancerResource
type named the CLB ID. Do not perform any operations on this CRD; otherwise, the Service may fail.
ExternalName: The Service is mapped to DNS, which applies to only kube-dns 1.7 or later.
Creating a service
1. Prepare the Service YAML file as instructed in the YAML sample. 3. Run the following command to create the Service YAML file.
kubectl create -f Service YAML filename
For example, to create a Service YAML file named my-service.yaml
, run the following command:
kubectl create -f my-service.yaml
4. Run the following command to check whether the creation is successful:
If a message similar to the following is returned, the creation is successful.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 172.16.255.1 <none> 443/TCP 38d
Updating a Service
Method 1
Run the following command to update a Service:
kubectl edit service/[name]
Method 2
1. Manually delete the old Service.
2. Run the following command to create a new Service:
Deleting a Service
Run the following command to delete a Service:
kubectl delete service [NAME]
Was this page helpful?