虚拟侵入

Ingress 访问日志分析与监控

╄→尐↘猪︶ㄣ 提交于 2019-11-28 19:28:44
阿里云Ingress除了提供外部可访问的 URL、负载均衡、SSL、基于名称的虚拟主机外,还支持将所有用户的HTTP请求日志记录到标准输出中。 同时Ingress访问日志与阿里云日志服务打通,您可以使用日志服务快速创建日志分析和监控大盘。 前提条件 安装日志组件。 集群创建时,默认会安装日志组件,如未安装,请参考 使用日志服务进行Kubernetes日志采集 进行手动安装。 升级Log Controller。 升级kube-system命名空间下的无状态应用(Deployment)alibaba-log-controller,替换以下内容: 镜像名称: registry-vpc.{region-id}.aliyuncs.com/acs/log-controller ,将其中的 {region-id} 替换为您集群所在Region ID,例如cn-hangzhou、cn-beijing、ap-southeast-1等。 镜像版本(Tag):版本不低于0.2.0.0-76648ee-aliyun。 以下两种升级方法您可任选其一: 通过执行kubectl命令 kubectl edit deployment alibaba-log-controller -n kube-system 进行升级。 通过容器服务控制台升级。进入 应用 > 无状态(Deployment),选择对应集群的命名空间

[干货]kubenertes ingress负载grpc

我与影子孤独终老i 提交于 2019-11-28 17:42:10
目录 概述 搭建 生成公私钥 创建secret 创建ingress 访问 概述 一般情况下,我们的系统对外暴露HTTP/HTTPS的接口,内部使用rpc(GRPC)通讯,这时GRPC在服务之间通过service访问,本地调试时通过service nodePort方式调用。 但随着业务壮大,需要跨集群的GRPC通讯,或者pod数量太多、nodePort端口管理混乱时,就可以考虑用ingress来统一管理和暴露GRPC服务了。 本文详细介绍如何在kubernetes用ingress负载grpc服务。 首先需要特别留意:ingress-nginx不支持负载明文的grpc(这个官方居然没明说,巨坑,详情请自行搜索github上的issues),所以只能在443端口上用TLS来负载。 搭建 生成公私钥 前面说了ingress只支持在443端口上负载加密的grpc,所以在正式搭建前需要准备一组公私钥。 这里我们可以自行生成一组普通的公私钥,下面的命令将在当前目录生成一组公私钥文件: $ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout grpcs.key -out grpcs.crt -subj "/CN=*.grpcs.aurayou/O=grpcs.aurayou" $ ls grpcs.crt grpcs.key

Kubernetes Ingress 部署

和自甴很熟 提交于 2019-11-28 15:53:23
Kubernetes Ingress 部署 Pod与Ingress的关系 • 通过service相关联 • 通过Ingress Controller实现Pod的负载均衡 - 支持TCP/UDP 4层和HTTP 7层 Ingress Controller 访问流程 用户访问 --> Ingress Controller控制器(Node) --> pod 部署Ingress Controller 官方文档:https://kubernetes.io/docs/concepts/services-networking/ingress/ 部署文档:https://github.com/kubernetes/ingress-nginx/blob/master/docs/deploy/index.md 注意事项: • 镜像地址修改成国内的:lizhenliang/nginx-ingress-controller:0.20.0 • 使用宿主机网络:hostNetwork: tru 文件来源:wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml 1、创建yamol配置文件 apiVersion: v1 kind: Namespace metadata:

k8s-traefik默认80端口

纵饮孤独 提交于 2019-11-28 15:31:26
vim traefik.yaml kind: Deployment apiVersion: extensions/v1beta1 metadata: name: traefik-ingress-controller namespace: kube-ops labels: k8s-app: traefik-ingress-lb spec: replicas: 1 selector: matchLabels: k8s-app: traefik-ingress-lb template: metadata: labels: k8s-app: traefik-ingress-lb name: traefik-ingress-lb spec: serviceAccountName: traefik-ingress-controller terminationGracePeriodSeconds: 60 tolerations: - operator: "Exists" nodeSelector: kubernetes.io/hostname: master containers: - image: traefik name: traefik-ingress-lb imagePullPolicy: IfNotPresent ports: - name: http hostPort: 80

ingress Whitelisting白名单机制

醉酒当歌 提交于 2019-11-28 08:05:35
Whitelisting To restrict the service in a way that only a list of IPs can access it, modify the ingress_rules.yaml to add the whitelist-source-range annotation: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-rules namespace: default annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/whitelist-source-range: '192.168.65.3/32' nginx.ingress.kubernetes.io/rewrite-target: / spec: tls: - hosts: - localhost secretName: tls-secret rules: - host: localhost http: paths: - path: / backend: serviceName: dni-function servicePort: 80 and deploy: kubectl apply

K8s Ingress 模式简介及示例

爱⌒轻易说出口 提交于 2019-11-27 18:16:02
注: 默认本文读者具备一定的k8s基础,并对k8s的apiserver、service、controller manager等基本概念有所了解。 模式简介: Ingress在service之前加了一层ingress,结构如下: ingress -> service -> label selector -> pods www.ok1.com -> app1-service -> app1 selector -> app1 1234 Port:80 or other -> www.ok2.com -> app2-service -> app2 selector -> app2 3456 Ingerss模式的优点 增加了7层的识别能力,可以根据 http header, path 等进行路由转发。 模式缺点 复杂度大为提升。 理解Ingress 实现 Ingress 的实现分为两个部分 Ingress Controller 和 Ingress。 Ingress Controller 是流量的入口,是一个实体软件, 一般是Nginx 和 Haproxy(较少使用)。 Ingress 描述具体的路由规则。 Ingress Controller 会监听 api server上的 /ingresses 资源 并实时生效。 Ingerss 描述了一个或者多个 域名的路由规则,以 ingress

kubernetes Ingress实战

泄露秘密 提交于 2019-11-27 08:02:49
服务发现与负载均衡 Ingress实战 一、服务发现与负载均衡 在前面的安装部署kubernetes集群中已经简单用示例来演示了Pod和Service,Kubernetes通过Service资源在Kubernetes集群内针对容器实现了服务发现和负载均衡。而Service就是kubernetes服务发现与负载均衡中的一种。 目前,kubernetes中的负载均衡大致可以分为以下几种机制,每种机制都有其特定的应用场景: Service:直接用Service提供cluster内部的负载均衡,并借助cloud provider提供的LB提供外部访问 Ingress Controller:还是用Service提供cluster内部的负载均衡,但是通过自定义LB提供外部访问 Service Load Balancer:把load balancer直接跑在容器中,实现Bare Metal的Service Load Balancer Custom Load Balancer:自定义负载均衡,并替代kube-proxy,一般在物理部署Kubernetes时使用,方便接入公司已有的外部服务 1. Service Service是对一组提供相同功能的Pods的抽象,并为它们提供一个统一的入口。借助Service,应用可以方便的实现服务发现与负载均衡,并实现应用的零宕机升级

flannel,canal,网络控制

…衆ロ難τιáo~ 提交于 2019-11-27 04:11:01
docker 网络 : bridge 自连网络名称空间 joined 与另外容器共享使用网络名称空间 open 容器直接共享宿主机的网络名称空间 none 不使用任何网络名称空间 k8s 网络通信模型 容器间网络通信 : 同一个 pod 内的多个容器间的通信 ,lo pod 间通信 : pod ip <--> pod ip 直连 pod 与 service 通信 pod ip <--> clusterip iptables 实现 service 与集群外部客户端的通信 nodeport ingress loadblance 实现 CNI 容器网络接口 flannel 仅支持地址分配 calico 支持地址分配 也支持网络策略 canal flannel+calico kube-router 解决方案 : 虚拟网桥 多路复用: MacVLAN 硬件交换: SR-IOR 虚拟出多个硬件网卡 名称空间隔离的是权限,不会隔离网络, pod 与 pod 之间网络的隔离要用网络策略实现 flannel 不支持网络策略 网络插件使用 : kubelet /etc/cni/net.d/*** 比如 kubelet /etc/cni/net.d/10-flannel.conflist --help flannel 网络 默认 vxlan 作为后端传输机制 1. 原生 vxlan overray

K8s Ingress Nginx 支持 Socket.io

馋奶兔 提交于 2019-11-26 04:57:01
Ingress 及 Ingress Controller 简介 Ingress :是 k8s 资源对象 ,用于对外暴露服务,该资源对象定义了不同主机名(域名)及 URL 和对应后端 Service(k8s Service)的绑定,根据不同的路径路由 http 和 https 流量。 Ingress Contoller :是一个 pod服务 ,封装了一个 Web前端负载均衡器 ,同时在其基础上实现了 动态感知Ingress 并根据Ingress的定义动态生成 前端web负载均衡器的配置文件 ,比如 Nginx Ingress Controller 本质上就是一个 Nginx ,只不过它能根据 Ingress 资源的定义动态生成 Nginx 的配置文件,然后 动态 Reload 。 Ingress Controller 工作架构 借用 traefik 官方的图 Ingress Nginx 部署 下面是根据官方yaml文件基础上修改 apiVersion: v1 kind: Namespace metadata: name: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx --- kind: ConfigMap apiVersion:

k8s踩坑记录——证书一年有效期

て烟熏妆下的殇ゞ 提交于 2019-11-26 02:32:57
kubernetes集群证书重签 依照https://github.com/strongit/kubeadm-ha/ 安装步骤,kubeadm init安装后的集群存在证书过期问题。现修复如下: 思路如下, 1、保留ca.crt ca.key front-proxy-ca.crt front-proxy-ca.key,根证书有效期十年 2、openssl重新签注 3、kubeadm alpha phase 生成config [root@k8s-master01 pki]# cat csr.conf [ req ] default_bits = 2048 prompt = no default_md = sha256 req_extensions = req_ext distinguished_name = dn [ dn ] C = CN ST = BeiJing L = BeiJing O = k8s OU = System CN = kubernetes [ req_ext ] subjectAltName = @alt_names [ alt_names ] DNS.1 = kubernetes DNS.2 = kubernetes.default DNS.3 = kubernetes.default.svc DNS.4 = kubernetes.default.svc