一、Ingress理论1.1Ingress简介service的作用体现在两个方面,对集群内部,它不断跟踪pod的变化,更新endpoint中对应pod的对象,提供了ip不断变化的pod的服务发现机制;对集群外部,他类似负载均衡器,可以在集群内外部对pod进行访问。在Kubernetes中,Pod的IP地址和service的ClusterIP仅可以在集群网络内部使用,对于集群外的应用是不可见的。为了使外部的应用能够访问集群内的服务,Kubernetes目前提供了以下几种方案:●NodePort:将service暴露在节点网络上,NodePort背后就是Kube-Proxy,Kube-Proxy是
一、Ingress理论1.1Ingress简介service的作用体现在两个方面,对集群内部,它不断跟踪pod的变化,更新endpoint中对应pod的对象,提供了ip不断变化的pod的服务发现机制;对集群外部,他类似负载均衡器,可以在集群内外部对pod进行访问。在Kubernetes中,Pod的IP地址和service的ClusterIP仅可以在集群网络内部使用,对于集群外的应用是不可见的。为了使外部的应用能够访问集群内的服务,Kubernetes目前提供了以下几种方案:●NodePort:将service暴露在节点网络上,NodePort背后就是Kube-Proxy,Kube-Proxy是
一、kubernetes安全机制apiserver是k8s集群的入口,默认有两个端口:本地端口8080:用于接收HTTP请求,不对外服务,非认证或授权的HTTP请求通过该端口访问APIServer安全端口6443:用于接收认证授权的HTTPS请求,对外服务。用户通过安全端口访问k8s的apiserver需要过三关:认证、授权、准入控制Authentication认证:用于识别用户身份,方式有:SSL证书,token,用户名+密码等Authorization授权:确认是否对资源具有相关的权限AdmissionControl准入控制:判断操作是否符合集群的要求 无论kubectl客户端命令或api
一、kubernetes安全机制apiserver是k8s集群的入口,默认有两个端口:本地端口8080:用于接收HTTP请求,不对外服务,非认证或授权的HTTP请求通过该端口访问APIServer安全端口6443:用于接收认证授权的HTTPS请求,对外服务。用户通过安全端口访问k8s的apiserver需要过三关:认证、授权、准入控制Authentication认证:用于识别用户身份,方式有:SSL证书,token,用户名+密码等Authorization授权:确认是否对资源具有相关的权限AdmissionControl准入控制:判断操作是否符合集群的要求 无论kubectl客户端命令或api
前言K8S性能优化系列文章,本文为第二篇:KubernetesAPIServer性能优化参数最佳实践。系列文章:《K8S性能优化-OSsysctl调优》参数一览kube-apiserver推荐优化的参数如下:--default-watch-cache-size:默认值100;用于List-Watch的缓存池;建议1000或更多;--delete-collection-workers:默认值1;用于提升namesapce清理速度,有利于多租户场景;建议10;--event-ttl:默认值1h0m0s;用于控制保留events的时长;集群events较多时建议30m,以避免etcd增长过快;--m
前言K8S性能优化系列文章,本文为第二篇:KubernetesAPIServer性能优化参数最佳实践。系列文章:《K8S性能优化-OSsysctl调优》参数一览kube-apiserver推荐优化的参数如下:--default-watch-cache-size:默认值100;用于List-Watch的缓存池;建议1000或更多;--delete-collection-workers:默认值1;用于提升namesapce清理速度,有利于多租户场景;建议10;--event-ttl:默认值1h0m0s;用于控制保留events的时长;集群events较多时建议30m,以避免etcd增长过快;--m
HPA=HorizontalPodAutoscaler 也就是k8s中的pod自动扩缩容的管理器,那么,HPA究竟是如何工作的? 下面的内容,就为你进行详细的讲解...... 上面的这张图,是HPA工作的整个流程。 概括来说,HPA主要是“检查,更新,再次检查”,这样的一个循环的流程。 HPA基本的工作流程如下: 1、HPA会持续的监控metricsserver,收集pod资源的使用数据2、基于收集的数据,HPA计算出需要多少副本实例3、做出决定是否需要修改应用实例数4、HPA对应用控制器,发起扩缩容操作,以达到需要的副本数 HPA会持续的监控、计算、决定、修改副本数,这样的过程。
前言K8S性能优化系列文章,本文为第三篇:Kubernetes大型集群CIDR配置最佳实践。系列文章:《K8S性能优化-OSsysctl调优》《K8S性能优化-K8SAPIServer调优》CIDR配置在安装大型集群或将现有的集群扩展到较大规模时,在安装集群设置集群网络cidr时,如果集群的节点数超过500个,则可能无法使用常用的集群网络cidr/14(这里假设的是一个Node的hostPrefix是/23,那么理论上机器超过512台,集群网络IP就不够用了)。在这种情况下,必须将其设置为/12或/10,以支持超过500个节点的环境。详细说明前提:Overlay网络假定1个Node上hostP
场景:自己有一个java应用部署在test命名空间下,但是一直无法访问到middleware命名空间下的mysql服务查找资料发现下面所说的问题我们通常会把mysql,redis,rabbitmq,mongodb这些公用组件放在一个namespace里,或者每个公用组件都有自己的namespace,而你的业务组件会统一放在自己的namespace里,这时就涉及到了跨namespace的数据通讯问题。1.同一集群跨namespace访问下面是我的应用以及mysql对应的svc[root@k8s-masterjenkins]#kubectlgetsvc-A|grep'halo\|mysql'mid
在k8s应用中,如果你是通过云端防火墙和负载均衡搭配使用时,我们一般是这样与k8s集群中的服务进行通讯的:在云端防火墙安全配置中,配置你的公网域名在云端负载均衡中,为每个业务配置对应的k8s-ingress,通常一组业务相同的域名,对应同一个ingress在云端负载均衡中,配置转发到k8s-ingress暴露的IP+端口,http默认80、https默认443在k8s-ingress中添加对应的公网域名,选择对你的svck8s实际上,根据你的svc会动态转发到它绑定的endpoint上,也就是你实现的pod上当找到pod之后,整理路由请求也就结束的,之后请求处理后,将响应的结果原路返回,即可