k8s Server

发布时间 2023-03-22 21:15:57作者: yuanbangchen

1.k8s Server yaml文件编写格式说明:

kind: Service       #类型为service 
apiVersion: v1      #service API版本, service.apiVersion
metadata:           #定义service元数据,service.metadata  
  labels:           #自定义标签,service.metadata.labels 
    app: linux36-nginx-service-labels   #定义service标签的内容 (service label:会用于K8s的弹性伸缩(HPA) ,k8s动态实现pod扩容或缩容)
  name: linux36-nginx-service           #定义service的名称(kubectl  get service),此名称会被DNS解析,(Nginx 实现动静分离: proxy_pass http://magedu-tomcat-service.svc.zzhz.local)
  namespace: linux36                    #该service隶属于的namespaces名称,即把service创建到哪个namespace里面 
spec:               #定义service的详细信息,service.spec 
  type: NodePort    #service的类型,定义服务的访问方式,默认为ClusterIP. 在宿主机开启的端口。 (ExternalName, ClusterIP, NodePort,  LoadBalancer)
  ports:            #定义访问端口, service.spec.ports 
  - name: http      #定义一个端口名称 
    port: 80        #service 80端口。 
    protocol: TCP   #协议类型 
    targetPort: 80  #目标pod的端口,此值也可以写template: spec: containers: ports:containerPort:name的值。如http 
    nodePort: 30001 #node节点暴露端口
  - name: https     #SSL 端口 
    port: 443       #service 443端口 
    protocol: TCP   #端口协议 
    targetPort: 443 #目标pod端口 
    nodePort: 30043 #node节点暴露的SSL端口 
  selector:                       #service的标签选择器,定义要访问的目标pod 
    app: linux36-nginx-selector   #将流量路到选择的pod上,须等于Deployment.spec.selector.matchLabels

 

Service
一般常用的有两种:
• k8s集群内(ClusterIP网络类型)的service:selector指定pod,自动创建Endpoints,(申明是不带nodePort,用于数据库,redis都是对内的)。
• k8s集群外(NodePort网络类型)的service:手动创建Endpoints,指定外部服务的ip,端口和协议


service的网络类型:
        ExternalName: 
        ClusterIP:ClusterIP 服务是 Kubernetes 的默认服务,k8s内部访问,集群外部无法访问它,pod与pod是经过service访问,而不是IP。
        NodePort:k8s内外部可以访问,外网通过nodePort到service到pod.
        LoadBalancer:


同一个namespace的下service name(不管是否相同)可以使用短名通信 .
不同namespace的下相同service name,也ping不通service name ,不同namespace 的service使用全名通信。

kube-proxy和service的关系:
kube-proxy监听着k8s-apiserver,一旦service资源发生变化(调k8s-api修改service信息),kube-proxy就会生成对应的负载调度的调整,
这样就保证service的最新状态。

kube-proxy有三种调度模型:  
    1.userspace:k8s 1.1之前  
    2.iptables:k8s1.10之前  
    3.ipvs:k8s 1.11之后,如果没有开启ipvs,则自动降级为iptables