关于阿里云 ACK ingress部分补充

强调: 本文只是作为'记录',过一段时间会'删除'

跟唐老师学习网络

一  Nginx Ingress管理

①  流量走向

需求: 应用绑定'LoadBalance',会自动创建或使用'SLB'

eip:port --> nodeport_ip:port  --> service_ip:port  --> pod_ip:port

支持的注解

通过阿里云负载均衡SLB暴露的服务 Service

关于阿里云 ACK ingress部分补充_第1张图片

通过使用自动创建SLB的服务公开应用

②  阿里云厂商的特殊注解

'原Ingress Class'为nginx-intranet

annotations:
  kubernetes.io/ingress.class: nginx-intranet 

ACK 自身的'ingress' --> ack-ingress-nginx'或'ack-ingress-nginx-v1

通过Annotation配置传统型负载均衡CLB

Annotation:

需求: 使用'已有'的负载均衡

备注: 负载均衡'实例的ID',通过此Annotation指定'已有的CLB'

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id   -->  '重要'

负载均衡实例'名称'

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name

为TCP类型的负载均衡配置'会话保持'时间

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout

++++++++++++++++++++++  "分割线"​  ++++++++++++++++++++++

需求: ingress使用公有云的'负载均衡 LoadBalance'类型

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type

  1、internet:服务通过'公网'访问,此为'默认'值,对应'CLB的地址'类型必须为'公网'

  2、intranet:服务通过'私网'访问,对应CLB的地址类型必须为'私网'

nginx-ingress-controller.yaml

③  相关信息

执行 kubectl edit deploy nginx-ingress-controller -n kube-system

--> 打开Ingress Controller的'配置'文件

++++++++++++++++++++++  "分割线"​  ++++++++++++++++++++++

当您成功创建一个集群后,'默认'情况下:

  1、集群内部已经部署了一套拥有2个Pod副本的Nginx Ingress Controller服务

  2、其'前端'挂载在一个'公网SLB'实例上

++++++++++++++++++++++  "分割线"​  ++++++++++++++++++++++

需求: 查看nginx-ingress-lb服务对应的'公网SLB地址'

kubectl -n kube-system get svc nginx-ingress-lb

④    部署Ingress Controller使用私网SLB

私网'SLB' --> 可以和'同一vpc内'非集群内的节点进行'通信'

关于阿里云 ACK ingress部分补充_第2张图片

⑤  无法访问Ingress Controller自己

关于阿里云 ACK ingress部分补充_第3张图片

⑥  Ingress Pod中无法保留源IP

关于阿里云 ACK ingress部分补充_第4张图片

⑦  Ingress规则没有生效

关于阿里云 ACK ingress部分补充_第5张图片

⑧  Nginx Ingress Controller

1、当前'Kubernetes官方维护'的是Nginx Ingress Controller

2、ACK基于'社区版'的Nginx Ingress Controller进行了'优化'

3、ACK的Nginx Ingress Controller与社区Nginx Ingress Controller完全'兼容'

4、支持社区'所有的Annotation'

5、您在ACK集群或ACK Serverless集群选择'安装的Nginx Ingress Controller'组件

6、即为'定制版'的Nginx Ingress Controller组件

备注: Nginx Ingress需要您'自行'维护

关于阿里云 ACK ingress部分补充_第6张图片

⑨  使用Nginx Ingress Controller时注意事项

关于阿里云 ACK ingress部分补充_第7张图片

⑩  修改ingress日志格式

kubectl edit cm nginx-ingress-controller -n kube-system '更新ConfigMap'

--> '修改日志格式'  --> log-format-upstream:

默认的日志访问记录输出到'/dev/stdout'

做日志切割 

Nginx Ingress高级用法

Nginx Ingress FAQ

二   全景剖析阿里云容器网络数据链路 Flannel

①  阿里云使用Flannel网络插件

1、ifconfig --> 查看'cni0、docker0'

2、集群的每个节点会起一个'flannel agent',并且会给每个节点'预分配一个Pod CIDR'

备注: 这个Pod CIDR是ACK集群的'Pod CIDR'的'子集'

关于阿里云 ACK ingress部分补充_第8张图片

1、容器的'网络命名空间内'会有一个'eth0'的虚拟网卡,同时存在'下一跳'指向该网卡的路由

2、该网卡会作为容器和宿主内核进行数据交换的'出入'口

3、容器和宿主机之间的数据链路是通过'veth pair'进行'交换'的

思考: 现在我们'已经找到'veth pair其中一个,如何去'找另一个veth'呢?

容器内: ip route show

查看docker 容器 在'宿主机器'的'pid'

docker inspect -f {{.State.Pid}} nginx

宿主机: nsenter -n -t 'pid' 进入 '容器'的命名空间 --> 查看 'eth0@ifxxx' 标识

在'容器'所在的宿主机: ip addr | grep xxx:  --> 可以找到'vethd7e7c6fd'这个'虚拟'网卡

关于阿里云 ACK ingress部分补充_第9张图片

各种场景的描述

Cloud Controller Manager  CCM

ACK专有集群配置VPC多路由表

1、使用命令kubectl edit cm -n kube-system cloud-config修改cloud-config配置项文件

备注: 将配置项文件中的${ROUTE_TABLES_IDS}替换为您的'VPC路由表ID'

"routeTableIDs": "${ROUTE_TABLES_IDS}"

kubectl edit cm -n kube-system kube-flannel-cfg

kubectl -n kube-system get pod -o wide -l app=flannel

三  EDAS相关

EDAS 创建应用后复用CLB 

Spring Cloud 接入 EDAS 服务注册与发现

EDAS'共享注册中心'地址

关于阿里云 ACK ingress部分补充_第10张图片

创建EDAS 微服务空间可以选择共享注册中心

application.propertites 配置信息

关于阿里云 ACK ingress部分补充_第11张图片

堡垒机: http://${nacos_sip}:${nacos_ip}/nacos  --> nacos密码形式'查看'

C:\Windows\System32\drivers\etc\hosts

启动轻量级配置及注册中心 

edas-lightweight-server  --> 'tgz'包

find / -name  startup.sh

8848:用来支持基于Nacos应用的配置管理及服务注册

关键: 'jmenv'

绑定hosts之后,可以直接访问'轻量级配置及注册中心域名+端口' jmenv.tbsite.net:8080

独立机器: 在'浏览器'中输入轻量级配置及注册中心地址'http://机器IP地址:8080'并回车

你可能感兴趣的:(ACK,nginx-ingress)