Label、Selector
- Label:Label(标签)可以对K8s的一些对象进行分组(如对Pod和k8s集群节点进行分组)
- 通过添加 key=value 格式的标签,用于区分同样的资源不同的分组
- Selector:Selector(标签选择器)可以通过根据资源的标签查询出精确的对象信息
# 查看k8s集群所有节点的标签 kubectl get nodes --show-labels # 查看k8s集群某个节点的标签 kubectl get node k8s-node-1 --show-labels # 添加k8s集群节点标签 kubectl label nodes <节点名称> <标签键>=<标签值> kubectl label nodes k8s-node01 daemonset_test=daemonset_test # 删除k8s集群节点标签 kubectl label nodes <节点名称> <标签键>- kubectl label nodes k8s-node01 daemonset_test-
定义Label
应用案例:公司与 xx 银行有一条专属的高速光纤通道,此通道只能与 192.168.122.0 网段进行通信
# 给node添加标签(也可以给Pod、Service等其他资源添加标签) [root@k8s-master01 ~]# kubectl label node k8s-node01 region=subnet7 [root@k8s-master01 ~]# kubectl label node k8s-node02 region=subnet7 # 通过selector进行筛选 [root@k8s-master01 ~]# kubectl get node -l region=subnet7 NAME STATUS ROLES AGE VERSION k8s-node01 Ready <none> 7d12h v1.31.14 k8s-node02 Ready <none> 7d12h v1.31.14
[root@k8s-master01 pod_practice]# cat bank-app.yaml apiVersion: apps/v1 kind: Deployment metadata: name: bank-app spec: replicas: 4 selector: matchLabels: app: bank-app template: metadata: labels: app: bank-app spec: containers: - name: bank-app-nginx image: docker.m.daocloud.io/nginx:latest nodeSelector: region: subnet7
[root@k8s-master01 pod_practice]# kubectl get pod -owide --show-labels |grep bank-app bank-app-57b8d75849-65ssn 1/1 Running k8s-node01 app=bank-app bank-app-57b8d75849-mmmz8 1/1 Running k8s-node02 app=bank-app bank-app-57b8d75849-pvtkn 1/1 Running k8s-node01 app=bank-app bank-app-57b8d75849-rzl98 1/1 Running k8s-node02 app=bank-app
k8s上是如何发布服务的
别人怎么访问我在k8s上部署的服务


Service
什么是Service?
每个Pod都会获取到它自己的IP地
址,但是这些IP地址不总是稳定和
可依赖的,这样就会导致一个问题:
在Kubernetes集群中,如果一组
Pod(比如后端的Pod)为其他Pod
(比如前端的Pod)提供服务,那
么如果它们之间使用Pod的IP地址
进行通信,在Pod重建后,将无法
再进行连接。于是Kubernetes引用
了Service这样一种抽象概念:逻辑
上的一组Pod,即一种可以访问
Pod的策略。这一组Pod能够被
Service通过标签选择器访问到,之
后就可以使用Service进行通信


什么是Ingress?
Ingress为Kubernetes集群中的服务提供了入口,可以提供负载均衡、SSL终止和基于名
称(域名)的虚拟主机、应用的灰度发布等功能,在生产环境中常用的Ingress有Treafik、
Nginx、HAProxy、Istio等。



浙公网安备 33010602011771号