强调: 本文只是作为'记录',过一段时间会'删除'
① 流量走向
- 需求: 应用绑定'LoadBalance',会自动创建或使用'SLB'
-
- eip:port --> nodeport_ip:port --> service_ip:port --> pod_ip:port

② 阿里云厂商的特殊注解
- '原Ingress Class'为nginx-intranet
-
- annotations:
- kubernetes.io/ingress.class: nginx-intranet
-
- ACK 自身的'ingress' --> ack-ingress-nginx'或'ack-ingress-nginx-v1
- 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的地址类型必须为'私网'
③ 相关信息

- 执行 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
私网'SLB' --> 可以和'同一vpc内'非集群内的节点进行'通信'
![]()

⑥ Ingress Pod中无法保留源IP


⑧ 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需要您'自行'维护

⑨ 使用Nginx Ingress Controller时注意事项

⑩ 修改ingress日志格式
- kubectl edit cm nginx-ingress-controller -n kube-system '更新ConfigMap'
-
- --> '修改日志格式' --> log-format-upstream:
-
- 默认的日志访问记录输出到'/dev/stdout'
- 1、ifconfig --> 查看'cni0、docker0'
-
- 2、集群的每个节点会起一个'flannel agent',并且会给每个节点'预分配一个Pod CIDR'
-
- 备注: 这个Pod CIDR是ACK集群的'Pod CIDR'的'子集'
②
- 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'这个'虚拟'网卡

- 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'共享注册中心'地址


- 堡垒机: 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'并回车