k8s集群(续)

 控制器(续)

Job(一次性的)

执行批处理任务,仅执行一次任务,保证任务的一个或多个Pod成功结束

CronJob (周期性的)

Cron Job 创建基于时间调度的 Jobs。
一个 CronJob 对象就像 crontab (cron table) 文件中的一行,它用 Cron 格式 进行编写,并周期性地在给定的调度时间执行 Job。

 

 

 

 

 

 

 此时kubectl logs pi-c8ssf输出π,kubectl get job查看完成。

vim cron.yaml

 

service服务

 Service可以看作是一组提供相同服务的Pod对外的访问接口。借助Service,应 用可以方便地实现服务发现和负载均衡。
service默认只支持4层负载均衡能力,没有7层功能。(可以通过Ingress实现) service的类型: ClusterIP:默认值,k8s系统给service自动分配的虚拟IP,只能在集群内部访问。 NodePort:将Service通过指定的Node上的端口暴露给外部,访问任意一个 NodeIP:nodePort都将路由到ClusterIP。 

 Service 是由 kube-proxy 组件,加上 iptables 来共同实现的.
 kube-proxy 通过 iptables 处理 Service 的过程,需要在宿主机上设置相当多的 iptables 规则,(iptables -t nat -nL查看)如果宿主机有大量的Pod,不断刷新iptables规则,会消耗大量的CPU 资源。
IPVS模式的service,可以使K8s集群支持更多量级的Pod。 

 

 

 

 此时只有服务,还需要控制器

 

 

 

 

 开启kube-proxy的ipvs模式:

cm配置把服务配置与镜像分离开,cm即为服务的配置文件

 

 

 kube-proxy通过linux的IPVS模块,以rr轮询方式调度service中的Pod 

 

    IPVS模式下,kube-proxy会在service创建后,在宿主机上添加一个虚拟网卡: kube-ipvs0,并分配service IP。
       

 

  Kubernetes 提供了一个 DNS 插件 Service

 

 

  Headless Service “无头服务”  Headless Service不需要分配一个VIP,而是直接以DNS记录的方式解析出被代理Pod 的IP地址。 域名格式:$(servicename).$(namespace).svc.cluster.local

 

 

 直接使用dns域名解析来访问,Pod滚动更新后,依然可以解析

 从外部访问 Service 的第二种方式,适用于公有云上的 Kubernetes 服务。这时 候,你可以指定一个 LoadBalancer 类型的 Service

LoadBalancer:在 NodePort 的基础上,借助 cloud provider 创建一个外部的负载均 衡器,并将请求转发到 <NodeIP>:NodePort,此模式只能在云服务器上使用。 ExternalName:将服务通过 DNS CNAME 记录方式转发到指定的域名(通过 spec.externlName 设定)。

 

 

 

 在service提交后,Kubernetes就会调用 CloudProvider 在公有云上为你创建 一个负载均衡服务,并且把被代理的 Pod 的 IP地址配置给负载均衡服务做 后端。

 官网:https://metallb.universe.tf/installation/ 

使用metallb

 

 vim namespace.yaml

 

 

 

 MetalLB, bare metal load-balancer for Kubernetes

配置网络

vim config.yaml

 

 从外部访问的第三种方式叫做ExternalName

vim ex-svc.yaml

  一种全局的、为了代理不同后端 Service 而设置的负载均衡服务,就是 Kubernetes 里的 Ingress 服务。
Ingress由两部分组成:Ingress controller和Ingress服务。
Ingress Controller 会根据你定义的 Ingress 对象,提供对应的代理能力。业界常用的各种 反向代理项目,比如 Nginx、HAProxy、Envoy、Traefik 等,都已经为Kubernetes 专门维 护了对应的 Ingress Controller

官网:https://kubernetes.github.io/ingress-nginx/
Installation Guide - NGINX Ingress Controller下载deploy.yaml文件

vim deploy.yaml

里面的镜像无法正常下载,我们需要去docker.hub.com上面搜索关键字去找匹配度最高的

 

 webhook需要改两处

kubectl apply -f deploy.yaml

 

 修改类型为LoadBalancer

 

 ingress下的svc服务

 

 

 

 

 Basic usage - NGINX Ingress Controller

 

 本地解析

 

 通过公网ip访问控制器,控制器连接的后端pod

ingress tls配置

Prerequisites - NGINX Ingress Controller

 TLS termination - NGINX Ingress Controller

 

 

 ingress认证配置

Basic Authentication - NGINX Ingress Controller

 

 

 

 

 

ingress地址重写

 Rewrite - NGINX Ingress Controller

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值