当前位置:   article > 正文

阿里云ASK集群使用问题小结

阿里云ask

一、内网互通问题

集群创建时强烈建议,选择已有网络,集群创建后VPC不可更改;交换机可以随意选择;

集群自动创建的VPC,在RDS MYSQL处,切换不了(亲测,切换时网络,搜索不到)

 二、ECI连接公网、ip问题

连接公网必须开通NAT网关,否则镜像拉取都是不成功的(这里有个迷惑性,在管理端创建时,可以搜索到镜像和对应版本,拉取总是失败)。

很多时候我们需要使用服务器的ip,比如:微信授权获取token,需要配置ip白名单,NAT网关地址即是所有ECI容器的访问ip。这里要注意,集群和ECI的弹性公网ip均不是;

当然我们也可以进入容器内部,使用curl命令访问一些ip查询网站进行查询公网ip;

例如:

curl icanhazip.com

三、ASK服务发现DNS

需要安装插件:CoreDNS 或者PrivateZone(也可以,创建集群后在插件管理里安装)
安装后,您可在该VPC网络环境中通过私有域名访问Service。
长域名访问:$svc.$ns.svc.cluster.local.$clusterId,通过这种方式也可以访问其他集群中同步到PrivateZone的Service。
短域名访问:您可以通过$svc访问本Namespace下的Service,通过$svc.$ns访问其他Namespace中的Service。

此处无特殊需求建议使用CoreDNS。

四、Nginx  Ingress 和 ALB Ingress

负载均衡产品的介绍:阿里云SLB包含面向4层(TCP/UDP)的传统型负载均衡CLB 和 面向7层(HTTP/HTTPS/QUIC)的应用型负载均衡ALB,网络型负载均衡NLB(Network Load Balancer )是阿里云面向万物互联时代推出的新一代四层负载均衡,支持超高性能和自动弹性能力,单实例可以达到1亿并发连接,帮您轻松应对高并发业务。

ASK集群中支持使用,CLB(就是SLB)和 ALB;

1.Nginx  Ingress 只能使用 SLB (CLB) 不可购买 资源包 ;

安装后,自动创建两个实例,默认实例大小是2核4G,对于nginx来说这个配置是超配额,所以我们进行了减配,点击编辑,选择0.25核0.5G的最小配置

如图:

附带nginx监控:

Nginx  Ingress 创建后,后自动生成一个SLB实例,打开后发现,集群管理也创建了一个实例;

并且这个两个实例都是,按配置进行收费,这里建议修改成

 

 

 

 


2.ALB Ingress 阿里云自研产品 跟 应用型负载均衡ALB (收费更贵,亲测);

 ALB Ingress概述 - 容器服务 ACK - 阿里云

 必须使用k8s脚本进行创建,如下

配置AlbConfig - 容器服务 ACK - 阿里云

 这里创建后,会自动生成一个标准版ALB实例,附带基础版和标准版价格截图:

高频率访问系统,推进使用。在本次项目中,没有使用该功能;

附带,阿里云对比:Nginx Ingress与ALB Ingress对比 - 容器服务 ACK - 阿里云

五、服务发现--直接对公网开放

在进行对服务开放公网端口访问时,例:websocket 服务,需要开放TCP协议端口;

发现不可复用原有SLB实例,每次都要进行实例创建,了解后发现,集群自动创建的SLB实例不可复用。想要复用必须使用自己创建的实例。(负载均衡收费标准,实例费用+用量费用)

 

 六、监控和HPA

1.使用HPA,指标伸缩,必须安装监控组件,来监控CPU和内存使用情况;

2.遇到的问题

在测试使用HPA时,发现部署的项目,无法使用该功能;报错如下:

监控不到内存?排查发现,组件安装没问题,内存监控可以直接控制台查看,也做了内存限制。

最后发现是项目中使用sidecar模式部署,一个服务中有多个容器共存,部署脚本中只限制了主容器内存,没有对日志容器进行限制。更改后使用没问题;

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: test-hpa
  5. namespace: test
  6. labels:
  7. app: test-hpa
  8. spec:
  9. minReadySeconds: 10 #最小等待时间,单位秒。默认是 0
  10. progressDeadlineSeconds: 600 #进度截至时间,默认10分钟
  11. replicas: 1
  12. revisionHistoryLimit: 10
  13. selector:
  14. matchLabels:
  15. app: test-hpa
  16. strategy: #升级缩放策略
  17. type: RollingUpdate #RollingUpdate 滚动更新(默认值) Recreate 重新启动
  18. rollingUpdate: #滚动策略
  19. maxSurge: 25% #最大浪涌:可以是数字,也可以是百分比,意为可以超出的最大的数量。如果是 0,则表示不新增,即为先停止旧pod再启动新pod。
  20. maxUnavailable: 0 #最大不可用数量:可以是数字,也可以是百分比。deploy 在更新过程中,Pod 数量可以低于定义的数量,低于定义的数量最大值。
  21. template:
  22. metadata:
  23. labels:
  24. app: test-hpa
  25. spec:
  26. containers:
  27. - name: test-hpa
  28. image: rabbitmq:3.9.9-management
  29. resources:
  30. requests:
  31. memory: "128Mi"
  32. limits:
  33. memory: "512Mi"
  34. ports:
  35. - containerPort: 5672
  36. protocol: TCP
  37. imagePullPolicy: IfNotPresent #镜像拉取策略:IfNotPresent:如果没有则拉取 Always:一直拉取
  38. lifecycle:
  39. preStop:
  40. exec:
  41. command: ["sleep","15"]
  42. readinessProbe:
  43. failureThreshold: 3
  44. initialDelaySeconds: 15
  45. periodSeconds: 30
  46. successThreshold: 1
  47. tcpSocket:
  48. port: 5672
  49. timeoutSeconds: 1
  50. env:
  51. - name: TZ
  52. value: Asia/Shanghai
  53. - name: filebeat
  54. image: elastic/filebeat:6.2.4
  55. resources:
  56. requests:
  57. memory: "128Mi"
  58. limits:
  59. memory: "512Mi"
  60. imagePullPolicy: IfNotPresent
  61. args: ["-c", "/opt/filebeat/filebeat.yml", "-e"]
  62. volumeMounts:
  63. - name: logdata
  64. mountPath: /var/logdata
  65. - name: filebeat-config
  66. mountPath: /opt/filebeat/
  67. volumes:
  68. - name: logdata
  69. emptyDir: {}
  70. - name: filebeat-config
  71. configMap:
  72. name: test-filebeat-yml
  73. items:
  74. - key: filebeat.yml
  75. path: filebeat.yml

最后的废话

 阿里云对于收费是想尽一切招数,上诉一些改动(降低容器实例配置,减少使用SLB,更换按量收费)就是为了减少收费。

此外,阿里云对于长期使用用户,提供了,NAT资源包,ECI节省计划等,购买后,费用会大幅度降低

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/568454
推荐阅读
相关标签
  

闽ICP备14008679号