• k8s的service简述


    k8s向集群外部暴露端口的3种方式:
    1.service->nodePort :仅暴露一个宿主机端口,用于集群外部访问,因为此操作被写入各个节点的iptables或ipvs规则当中,可以用任意一个节点的IP+端口号访问。
    2.hostNetwork :暴露宿主机IP,只可以通过此宿主机IP访问,慎重使用。
    3.hostPort->contianerPort :宿主机和容器的端口映射,只能访问被指定的容器和宿主机。

    kbectl的命令可分为三类:
    1.陈述式命令-->(指明对象和要求)
    2.陈述式对象配置--> create(用json或yaml格式定义我们期望状态的资源清单)
    3.声明式对象配置--> apply (可以对一个yaml资源清单多次进行apply)

    pod相当于容器的有一个外壳,对容器的抽象形成的pod,一个pod可以运行1个到多个容器,并且,同一pod下的容器共享一组网络名称空间
    pod中即使看上去是运行一个容器,其实不然,它还包括除了这个容器外的基础架构的容器,当原始方式去部署k8s时,用到的基础架构的容器对应的镜像是pause,可以理解为一直是暂停状态。
    pod中基础架构的容器pause,为此pod中的主要容器主动提供网络名称空间,数据卷等功能。
    一个pod中通常最好一个主容器。
    pod中如果需要实现紧密容器的服务,可以有两种方式,1,sidecar(边车,辅助,侧兜摩托)2,proxy代理istio
    同一pod下的容器能共享挂载卷

    1 查看pod标签:kubectl get pod -n namespace --show-labels
    2 Pod添加标签:kubectl label pod ngx-dep app=myapp / kubectl label pod ngx-dep --overwrite {app=myapp,word=shit,mod=good}
    3 Pod删除标签:kubectl label pod ngx-dep app- / kubectl label pod ngx-dep word- /kubectl label pod ngx-dep mod-
    4 Pod筛选标签:kubectl get pod -l key / kubectl get pod -l key=value / kubectl get -l key=value -L key / kubectl get pod -l key1,key2,keyn

    service的模型:

    userspace;iptables;ipvs
    1.10-的版本是userspace/iptables
    1.10+的版本是iptables/ipvs 一般不指定的话会自动降级到iptables,若想使用ipvs则在搭建环境时需要在/etc/sysconfig/kubelet文件中添加字段为:
    KUBE_PROXY_MODE=ipvs
    service的解析是紧密依赖于coredns的
    service 服务方式:
    clusterIP :供集群内布访问使用
    nodeport :供集群外部访问使用 client->NodeIP:NodePort->clusterIP:servicePort->podIP:ContainerPort
    externalIPs :用于使pod访问集群外部资源
    loadBalancerIP :用于云平台环境中,集群外负载均衡调度
    NoclusterIP:即clusterIP:后面参数为空,则为headless,无头service,就是说这个服务的IP是它所有后端pod的IP:ServiceName->PodIP
    clusterIP 例:

     1 apiVersion: v1
     2 kind: Service
     3 metadata:
     4 name: myapp-svc
     5 namespace: default
     6 spec:
     7 selector:
     8 app: myapp
     9 release: canary
    10 clusterIP: 10.99.99.99
    11 type: ClusterIP
    12 ports:
    13 - port: 80 #service暴露的端口(iptables/ipvs规则)
    14 targetPort: 80 #pod的端口

    nodeport 例:

     1 apiVersion: v1
     2 kind: Service
     3 metadata:
     4 name: myapp-svc-headless
     5 namespace: default
     6 spec:
     7 selector:
     8 app: myapp
     9 release: canary
    10 clusterIP: 10.97.97.97
    11 sessionAffinity: ClientIP #这个选项作用是,把来自于同一个客户端的请求,始终发往同一个后端pod
    12 type: NodePort
    13 ports:
    14 - port: 80
    15 targetPort: 80
    16 nodePort: 30080 #工作节点上对外暴露的端口


    无头headless service 例:一般用于对后端pod资源的调度。

     1 apiVersion: v1
     2 kind: Service
     3 metadata:
     4 name: myapp-svc-1
     5 namespace: default
     6 spec:
     7 selector:
     8 app: myapp
     9 release: canary
    10 clusterIP: None
    11 ports:
    12 - port: 80
    13 targetPort: 80
  • 相关阅读:
    BackgroundWorker
    Devexpress 10
    Winform常用控件的使用(一)
    Composite UI Application Block(CAB)
    HTML CSS简单总结
    C# JSON字符串序列化与反序列化常见模型举例
    HTML 调用iscroll.js主要事项
    HTML5 Socket通信
    Webservice加上SoapHeader验证方式
    动态调用Webservice 支持Soapheader身份验证(转)
  • 原文地址:https://www.cnblogs.com/Smbands/p/10840775.html
Copyright © 2020-2023  润新知