çŸåšãã€ã³ãã©ã¹ãã©ã¯ãã£ãããŒããŠã§ã¢ ãµãŒããŒãèªç€Ÿã®ä»®æ³ãã·ã³ããã¯ã©ãŠãã«ç§»è¡ããäŒæ¥ãå¢ããŠããŸãã ãã®ãœãªã¥ãŒã·ã§ã³ã¯èª¬æãç°¡åã§ããããŒããŠã§ã¢ã«ã€ããŠå¿é
ããå¿
èŠããªããã¯ã©ã¹ã¿ãŒã¯ããŸããŸãªæ¹æ³ã§ç°¡åã«æ§æã§ããŸã...ãããŠæãéèŠãªã®ã¯ãæ¢åã®ãã¯ãããžãŒ (Kubernetes ãªã©) ã«ãããè² è·ã«å¿ããŠã³ã³ãã¥ãŒãã£ã³ã°èœåãç°¡åã«æ¡åŒµã§ããããšã§ãã ã
財åé¢ã¯åžžã«éèŠã§ãã ãã®èšäºã§èª¬æããããŒã«ã¯ãKubernetes ã§ã¯ã©ãŠã ã€ã³ãã©ã¹ãã©ã¯ãã£ã䜿çšããéã®äºç®ã®åæžã«åœ¹ç«ã€ããã«èšèšãããŠããŸãã
å°å ¥
åœç€Ÿã«ã¯ã䜿ãæ £ãã AWS ã¯ã©ãŠããš GCP ã¯ã©ãŠãã®äž¡æ¹ã§ Kubernetes ã䜿çšããã¯ã©ã€ã¢ã³ããããŸãããŸãããŸãã« Linux ã³ãã¥ããã£ã§ã¯ Azure ã䜿çšããŠãããäžè¬çã«ã¯ Kubecost ã§ãµããŒããããŠãããã¹ãŠã®ãã©ãããã©ãŒã äžã§äœ¿çšãããŠããŸãã ãããã®äžéšã«ã€ããŠã¯ãã¯ã©ã¹ã¿ãŒå ãµãŒãã¹ã®ã³ã¹ãã (Kubecost ã§äœ¿çšãããŠããã®ãšåæ§ã®æ¹æ³ã䜿çšããŠ) ç¬èªã«èšç®ããã€ã³ãã©ã¹ãã©ã¯ãã£ã®ã³ã¹ããç£èŠããŠæé©åãè©Šã¿ãŸãã ãããã£ãŠãç§ãã¡ããã®ãããªã¿ã¹ã¯ãèªååããå¯èœæ§ã«èå³ãæã£ãã®ã¯åœç¶ã§ãã
ã¡ã€ã³ã® Kubecost ã¢ãžã¥ãŒã«ã®ãœãŒã¹ ã³ãŒãã¯ããªãŒãã³ ãœãŒã¹ ã©ã€ã»ã³ã¹ (Apache License 2.0) ã®æ¡ä»¶ã«åºã¥ããŠå
¬éãããŠããŸãã èªç±ã«äœ¿çšã§ããå©çšå¯èœãªæ©èœã¯å°èŠæš¡ãªãããžã§ã¯ãã«ã¯ååã§ãã ãã ããããžãã¹ã¯ããžãã¹ã§ãã補åã®æ®ãã®éšåã¯ã¯ããŒãºãããŠããããŠãŒã¶ãŒã¯äœ¿çšã§ããŸãã
ãã¹ãŠã®ä»çµã¿
ã€ãŸããKubecost ã®äž»èŠãªéšåã¯ã¢ããªã±ãŒã·ã§ã³ã§ã
äžè¬ã«ãã³ã¹ã ã¢ãã«ã«ã¯ç¬èªã® Web ã€ã³ã¿ãŒãã§ã€ã¹ããããã³ã¹ãã«é¢ããã°ã©ãã詳现ãªçµ±èšæ å ±ã衚圢åŒã§è¡šç€ºããããã¡ããã³ã¹ããæé©åããããã®ãã³ãã衚瀺ãããŸãã Grafana ã§è¡šç€ºãããããã·ã¥ããŒãã¯ãKubecost éçºã®åæ段éã§ãããã³ã¹ã ã¢ãã«ãšã»ãŒåãããŒã¿ãå«ãŸããŠãããã¯ã©ã¹ã¿ãŒãšãã®ã³ã³ããŒãã³ãã® CPU/ã¡ã¢ãª/ãããã¯ãŒã¯/ãã£ã¹ã¯é åã®æ¶è²»ã«é¢ããéåžžã®çµ±èšãè£è¶³ãããŠããŸãã ã
Kubecost ã¯ã©ã®ããã«æ©èœããŸãã?
- ã³ã¹ãã¢ãã«ã¯ãã¯ã©ãŠããããã€ããŒã® API ãéããŠãµãŒãã¹ã®äŸ¡æ ŒãåãåããŸãã
- ããã«ãããŒãã®éçš®ãå°åã«å¿ããŠãããŒããããã®ã³ã¹ããèšç®ãããŸãã
- ããŒãã®å®è¡ã³ã¹ãã«åºã¥ããŠãåãªãŒã ãããã«ã¯ãå®è¡ãããŠããããŒããŸãã¯ã¹ãã¬ãŒãžã®ã¯ã©ã¹ã«å¿ããŠãXNUMX æéãããã® CPU 䜿çšéãæ¶è²»ã¡ã¢ãª XNUMX ã®ã¬ãã€ãããããããã³ä¿åãããããŒã¿ XNUMX ã®ã¬ãã€ããããã® XNUMX æéãããã®ã³ã¹ããèšç®ãããŸãã
- åã ã®ãããã®éçšã³ã¹ãã«åºã¥ããŠãåå空éããµãŒãã¹ããããã€ã¡ã³ããStatefulSet ã®æ¯æããèšç®ãããŸãã
- çµ±èšã¯ãkube-state-metrics ããã³ node-exporter ã«ãã£ãŠæäŸãããã¡ããªãã¯ã䜿çšããŠèšç®ãããŸãã
Kubecost ãèæ ®ããããšãéèŠã§ãã ããã©ã«ãã§ã¯ãKubernetes ã§å©çšå¯èœãªãªãœãŒã¹ã®ã¿ãã«ãŠã³ããããŸãã ã¯ã©ã¹ã¿ãŒå ã«ãªãå€éšããŒã¿ããŒã¹ãGitLab ãµãŒããŒãS3 ã¹ãã¬ãŒãžããã®ä»ã®ãµãŒãã¹ã¯ (åãã¯ã©ãŠãå ã«ããå Žåã§ã) èªèãããŸããã ãã ããGCP ãš AWS ã®å Žåã¯ããµãŒãã¹ ã¢ã«ãŠã³ãã®ããŒãè¿œå ããŠããã¹ãŠããŸãšããŠèšç®ã§ããŸãã
ã€ã³ã¹ããŒã«
Kubecost ã«ã¯æ¬¡ã®ãã®ãå¿ èŠã§ãã
- Kubernetes ããŒãžã§ã³ 1.8 以éã
- kube-state-metrics;
- ããã¡ããŠã¹ã
- ããŒããšã¯ã¹ããŒã¿ãŒã
ããŸããŸãç§ãã¡ã®ã¯ã©ã¹ã¿ãŒã§ã¯ããããã¹ãŠã®æ¡ä»¶ãäºåã«æºããããŠãããããPrometheus ã«ã¢ã¯ã»ã¹ããããã®æ£ãããšã³ããã€ã³ããæå®ããã ãã§ååã§ããããšãããããŸããã ãã ããkubecost ã®å ¬åŒ Helm ãã£ãŒãã«ã¯ãã㢠ã¯ã©ã¹ã¿ãŒã§å®è¡ããããã«å¿ èŠãªãã®ããã¹ãŠå«ãŸããŠããŸãã
Kubecost ãã€ã³ã¹ããŒã«ããã«ã¯ããã€ãã®æ¹æ³ããããŸãã
- ã«èšèŒãããŠããæšæºçãªåãä»ãæ¹æ³
説ææž éçºè ã® Web ãµã€ãã«ãããŸããå¿ é ã³ã¹ã ã¢ãã©ã€ã¶ãŒ ãªããžããªã Helm ã«è¿œå ãããã£ãŒããã€ã³ã¹ããŒã«ããŸããã æ®ã£ãŠããã®ã¯ãããŒãã転éããæå (kubectl çµç±) ãŸãã¯ã³ã¹ã ã¢ãã« Web ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠèšå®ãç®çã®ç¶æ ã«èª¿æŽããããšã ãã§ãããµãŒãããŒãã£è£œã®æ¢æã®æ§æã䜿çšããŠããªãããããã®æ¹æ³ã¯ãŸã è©ŠããŠããŸãããããèªåã§è©ŠããŠã¿ããã«ã¯è¯ããªãã·ã§ã³ã®ããã«æããŸãã äžéšã®ã·ã¹ãã ã³ã³ããŒãã³ãããã§ã«ã€ã³ã¹ããŒã«ãããŠããå ŽåããŸãã¯ããã«åŸ®èª¿æŽãå¿ ââèŠãªå Žåã¯ãXNUMX çªç®ã®ãã¹ãæ€èšããããšããå§ãããŸãã
- æ¬è³ªçã«äœ¿çšãã
åããã£ãŒã ãã ããèªåã§èšå®ããŠã€ã³ã¹ããŒã«ããŸã 䟿å©ãªæ¹æ³ã§ããã§ã«è¿°ã¹ãããã«ãkubecost èªäœã«å ããŠããã®ãã£ãŒãã«ã¯ Grafana ãã£ãŒããš Prometheus ãã£ãŒããå«ãŸããŠãããå¿ èŠã«å¿ããŠã«ã¹ã¿ãã€ãºããããšãã§ããŸãã
ãã£ãŒãäžã§å©çšå¯èœ
values.yaml
Cost-Analyzer ã§ã¯ä»¥äžãèšå®ã§ããŸãã- å°å ¥ããå¿ èŠãããã³ã¹ã ã¢ãã©ã€ã¶ãŒ ã³ã³ããŒãã³ãã®ãªã¹ãã
- Prometheus ã®ãšã³ããã€ã³ã (ãã§ã«æã£ãŠããå Žå)ã
- ã³ã¹ãã¢ãã«ãš Grafana ã®ãã¡ã€ã³ãšãã®ä»ã®ã€ã³ã°ã¬ã¹èšå®ã
- ãããã®ã¢ãããŒã·ã§ã³ã
- æ°žä¹ ã¹ãã¬ãŒãžã䜿çšããå¿ èŠæ§ãšãã®ãµã€ãºã
䜿çšå¯èœãªæ§æãªãã·ã§ã³ã®å®å šãªãªã¹ããšèª¬æã¯ã次ã®å Žæã«ãããŸãã
ããã¥ã¡ã³ããŒã·ã§ã³ .åºæ¬ããŒãžã§ã³ã® kubecost ã¯ã¢ã¯ã»ã¹ãå¶éã§ããªããããWeb ããã«ã®åºæ¬èªèšŒãããã«èšå®ããå¿ èŠããããŸãã
- ã€ã³ã¹ããŒã« ã·ã¹ãã ã³ã¢ã®ã¿ - ã³ã¹ãã¢ãã«ã ãããè¡ãã«ã¯ãPrometheus ãã¯ã©ã¹ã¿ãŒã«ã€ã³ã¹ããŒã«ãããã®ã¢ãã¬ã¹ã®å¯Ÿå¿ããå€ãå€æ°ã«æå®ããå¿
èŠããããŸãã
prometheusEndpoint
ãã«ã çšã ãã®åŸ - ç³è«ããŠãã ããYAML æ§æã®ã»ãã ã¯ã©ã¹ã¿ãŒå ã§ãããã§ããbasic-auth ã䜿çšã㊠Ingress ãæåã§è¿œå ããå¿ èŠããããŸãã æåŸã«ãã³ã¹ãã¢ãã«ã®ã¡ããªã¯ã¹ãåéããã»ã¯ã·ã§ã³ãè¿œå ããå¿ èŠããããŸãã
extraScrapeConfigs
Prometheus æ§æå :- job_name: kubecost honor_labels: true scrape_interval: 1m scrape_timeout: 10s metrics_path: /metrics scheme: http dns_sd_configs: - names: - <аЎÑÐµÑ Ð²Ð°ÑегП ÑеÑвОÑа kubecost> type: 'A' port: 9003
äœãåŸãããã§ããããïŒ
å®å šã«ã€ã³ã¹ããŒã«ãããšãããã·ã¥ããŒãã®ã»ãããåãã kubecost ããã³ Grafana Web ããã«ãèªç±ã«äœ¿çšã§ããããã«ãªããŸãã
ç·è²»çšã¡ã€ã³ç»é¢ã«è¡šç€ºããããå®éã«ã¯ãã®æã®ãªãœãŒã¹ã®æšå®ã³ã¹ãã衚瀺ãããŸãã ãã äºæž¬å¯èœãª çŸåšã®ãªãœãŒã¹æ¶è²»ã¬ãã«ã§ã®ã¯ã©ã¹ã¿ãŒã®äœ¿çšã³ã¹ã (æããã) ãåæ ããäŸ¡æ Œã
ãã®ææšã¯ãæ¯åºãåæããæé©åããããã®ãã®ã§ãã kubecost ã§æœè±¡ç㪠XNUMX æã®ç·ã³ã¹ãã確èªããã®ã¯ããŸã䟿å©ã§ã¯ãããŸããã è«æ±ã«è¡ãã ãã ãã1/2/7/30/90 æ¥éã®åå空éãã©ãã«ããããããšã«åé¡ãããã³ã¹ãã確èªã§ããŸãããè«æ±æžã«ã¯è¡šç€ºãããŸããã
ãšããã° ã©ãã«ã ããã«èšå®ã«ç§»åããã³ã¹ããã°ã«ãŒãåããããã®è¿œå ã«ããŽãªãšããŠäœ¿çšãããã©ãã«ã®ååãèšå®ããå¿
èŠããããŸãã
ä»»æã®ã©ãã«ã貌ãä»ããããšãã§ããŸããç¬èªã®ã©ãã« ã·ã¹ãã ãæ¢ã«ãæã¡ã®å Žåã«äŸ¿å©ã§ãã
ãŸããã³ã¹ãã¢ãã«ãæ¥ç¶ãã API ãšã³ããã€ã³ãã®ã¢ãã¬ã¹ãå€æŽããããGCP ã§å²åŒãµã€ãºã調æŽãããããªãœãŒã¹ã®äŸ¡æ Œã枬å®ã«äœ¿çšããé貚ãç¬èªã«èšå®ãããããããšãã§ããŸã (äœããã®çç±ã§ããã®æ©èœã¯ç·ã³ã¹ãã«ã¯åœ±é¿ããŸãã)ã
Kubecost ã¯ããŸããŸãªè¡šç€ºãè¡ãããšãã§ããŸã ã¯ã©ã¹ã¿ãŒå ã®åé¡ ïŒå±éºãªå Žåã«ã¯èŠåãããŸãïŒã æ®å¿µãªããããã®ãªãã·ã§ã³ã¯æ§æå¯èœã§ã¯ãªããããéçºè çšã®ç°å¢ããããããã䜿çšããŠããå Žåã¯ã次ã®ãããªè¡šç€ºãåžžã«è¡šç€ºãããŸãã
éèŠãªããŒã« - ã¯ã©ã¹ã¿ãŒã®ç¯çŽã ãããã®ã¢ã¯ãã£ãã㣠(ãããã¯ãŒã¯ ãªãœãŒã¹ãå«ããªãœãŒã¹ã®æ¶è²») ã枬å®ããã©ããããã®è²»çšãšäœãç¯çŽã§ããããèšç®ããŸãã
æé©åã®ãã³ãã¯éåžžã«æçœã§ããããã«æãããããããŸããããçµéšäžããŸã 泚æãã¹ãç¹ãããããšã瀺åãããŠããŸãã ç¹ã«ããããã®ãããã¯ãŒã¯ ã¢ã¯ãã£ããã£ãç£èŠãã (Kubecost ã¯éã¢ã¯ãã£ããªãããã«æ³šæãæãããšãææ¡ããŸã)ãèŠæ±ãããã¡ã¢ãªãšå®éã®ã¡ã¢ãªããã³ CPU æ¶è²»éãæ¯èŒãããã¯ã©ã¹ã¿ãŒ ããŒãã«ãã£ãŠäœ¿çšããã CPU (è€æ°ã®ããŒãã XNUMX ã€ã«éçŽããããšãææ¡ããŸã)ããã£ã¹ã¯ããŒããšããã«æ°åã®ãã©ã¡ãŒã¿ã
ä»ã®æé©åã®åé¡ãšåæ§ãKubecost ããŒã¿ã«åºã¥ããŠãªãœãŒã¹ãæé©åããã«ã¯ä»¥äžãå¿
èŠã§ãã 倧åã«æ±ãã ããšãã°ãCluster Savings ã¯ãå®å
šã§ãããšäž»åŒµããŠããŒãã®åé€ãææ¡ããŸãããããŒãã»ã¬ã¯ã¿ãŒããããŒãã«ãããã€ããããããå
ã®ä»ã®ããŒãã§ã¯å©çšã§ããªããã€ã³ãã®ååšã¯èæ
®ãããŠããŸããã ãããŠäžè¬ã«ã補åã®äœæè
ã§ãã£ãŠãã
çµæ
ããã€ãã®ãããžã§ã¯ã㧠kubecost ã XNUMX ãæé䜿çšããçµæããã㯠Kubernetes ã¯ã©ã¹ã¿ãŒã«äœ¿çšãããã¯ã©ãŠã ãããã€ããŒã®ãµãŒãã¹ã®ã³ã¹ããåæããã³æé©åããããã®èå³æ·±ã (ãããŠåŠç¿ãšã€ã³ã¹ããŒã«ãç°¡åãª) ããŒã«ã§ãããšçµè«ä»ããããšãã§ããŸãã èšç®ã¯éåžžã«æ£ç¢ºã§ããããšãå€æããŸãããå®éšã§ã¯ããããã€ããŒãå®éã«èŠæ±ãããã®ãšäžèŽããŸããã
ããã€ãã®æ¬ ç¹ããããŸããé倧ã§ã¯ãªããã°ããããäžéšã®ãããžã§ã¯ãã«åºæã®ããŒãºãæ©èœãã«ããŒããŠããªãå ŽåããããŸãã ãã ããã¯ã©ãŠã ãµãŒãã¹ã®æéãäžè²«ã㊠5 ïœ 30% åæžããããã«ããéãã©ãã«äœ¿ãããŠããã®ããäœããåæžãã§ããã®ããããã«ç解ããå¿ èŠãããå Žå (ãããç§ãã¡ã®ã±ãŒã¹ã§èµ·ãããŸãã)ãããã¯åªãããªãã·ã§ã³ã§ãã ã
PS
ç§ãã¡ã®ããã°ããèªã¿ãã ãã:
- «
Kubernetes ã®èªåã¹ã±ãŒãªã³ã°ãšãªãœãŒã¹ç®¡ç (ã¬ãã¥ãŒãšãã㪠ã¬ããŒã) "; - «
Kubernetes ã®åéº Dailymotion: ã¯ã©ãŠã + ãªã³ãã¬ãã¹ã§ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã®äœæ "; - «
Kubernetes ã®ãã³ããšã³ã: ããŒãã®å²ãåœãŠãš Web ã¢ããªã±ãŒã·ã§ã³ã®è² è·ã«ã€ã㊠'ã
åºæïŒ habr.com