关于阿里云 ACK ingress部分补充

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

跟唐老师学习网络

Nginx Ingress管理

① 流量走向

bash 复制代码
需求: 应用绑定'LoadBalance',会自动创建或使用'SLB'

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

支持的注解

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

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

② 阿里云厂商的特殊注解

bash 复制代码
'原Ingress Class'为nginx-intranet

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

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

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

bash 复制代码
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

③ 相关信息

bash 复制代码
执行 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

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

无法访问Ingress Controller自己

⑥ Ingress Pod中无法保留源IP

Ingress规则没有生效

⑧ Nginx Ingress Controller

bash 复制代码
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需要您'自行'维护

使用Nginx Ingress Controller时注意事项

⑩ 修改ingress日志格式

bash 复制代码
kubectl edit cm nginx-ingress-controller -n kube-system '更新ConfigMap'

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

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

做日志切割

Nginx Ingress高级用法

Nginx Ingress FAQ

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

阿里云使用Flannel网络插件

bash 复制代码
1、ifconfig --> 查看'cni0、docker0'

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

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

bash 复制代码
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'这个'虚拟'网卡

各种场景的描述

Cloud Controller Manager CCM

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

bash 复制代码
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 服务注册与发现

bash 复制代码
EDAS'共享注册中心'地址

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

application.propertites 配置信息

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

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

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

bash 复制代码
edas-lightweight-server  --> 'tgz'包

find / -name  startup.sh

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

关键: 'jmenv'

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

独立机器: 在'浏览器'中输入轻量级配置及注册中心地址'http://机器IP地址:8080'并回车
相关推荐
来一杯龙舌兰1 天前
【RabbitMQ】RabbitMQ保证消息不丢失的N种策略的思想总结
分布式·rabbitmq·ruby·持久化·ack·消息确认
珍珠是蚌的眼泪1 个月前
Kafka进阶_1.生产消息
kafka·ack·分区器·kafka生产者
流月up5 个月前
6.Kafka Acks详解
kafka·isr·ack·分区副本·同步副本
执键行天涯6 个月前
【RabbitMQ问题踩坑】RabbitMQ设置手动ack后,消息队列有多条消息,只能消费一条,就不继续消费了,这是为什么 ?
rabbitmq·ack
yunson_Liu8 个月前
k8s配置configmap指定到容器的指定文件
kubernetes·k8s·ack
yunson_Liu8 个月前
阿里云ACK k8s集群迁移
阿里云·kubernetes·ack
有梦想的攻城狮1 年前
Kafka使用指南
分布式·kafka·消息队列·ack
wzj_1101 年前
TCP/IP(五)TCP的连接管理(二)三次握手细节
tcp·ack·syn