全网最新 Skywalking 6.1.0部署进k8s 包含springcloud测试用例
skywalking-kubernetes
該項目可以迅速將skywalking 6.1.0部署進kubernetes(k8s)
包含ui oap es模塊和完整的springcloud測試用例
此外將agent整合到sidecar中,也就是說每個pod中有兩個應用 app+agent sidecar,更加適合于生產環境
描述
我弄這個主要是為了學習整合skywalking作為kubernetes線下環境的APM
但是skywalking官方apache/skywalking-kubernetes的一些配置在apache孵化后過期 沒有最新的6.1.0版本 而6.1.0的性能提升比較大,此外也支持6.3.2 非常值得學習。 此外一些配置面向云環境,不適合本地開發測試
安裝使用
git地址 evanxuhe/skywalking-kubernetes cd 6.1.0
kubectl apply -f namespace.yml kubectl apply -f elasticsearch kubectl apply -f oap kubectl apply -f ui kubectl apply -f apm-springcloud-demo 復制代碼注意修改elasticsearch/01-pv.yml中的路徑為本地路徑;節點名為本機hostname
瀏覽器打開http://127.0.0.1:31234/查看服務詳情
如果部署了測試用例 訪問http://127.0.0.1:30082/item 會發現UI拓撲圖多了兩個服務 如下
成果展示
NAME READY STATUS RESTARTS AGE apm-eureka-799b8d5449-72npx 1/1 Running 0 99m apm-item-bdf545d9c-kjqxd 1/1 Running 0 94m elasticsearch-0 1/1 Running 0 119m oap-6b56f8bbf5-7fjvb 1/1 Running 0 118m oap-6b56f8bbf5-7tldw 1/1 Running 0 118m oap-6b56f8bbf5-qzdx2 1/1 Running 0 118m ui-deployment-f4799496c-m5xw6 1/1 Running 0 117m 復制代碼模塊概述
模塊概述
| namespace | 創建skywalking命名空間 |
| elasticsearch | 映射本地磁盤卷的es集群 |
| oap | collector 收集agent上傳的數據并整合 |
| ui | RocketUI展示前端數據 |
| apm-springcloud-demo | springcloud應用demo,eureka+item service 產生數據供展示(可選) |
| busybox.yml | 裝了很多調試工具,比如net-tools等,方便定位k8s內問題 |
版本描述
| kubernetes | 1.14.2 |
| docker | 18.06 |
| skywalking | 6.1.0 |
| elasticsearch | 6.4.0 |
鏡像
| evanxuhe/skywalking-oap-server | 6.1.0 | 修正時區為東八區 |
| evanxuhe/skywalking-agent-sidecar | 6.1.0 | sidecar 里面裝載了agent文件夾 |
| apache/skywalking-ui | 6.1.0 | 官方ui鏡像 |
| elasticsearch-oss | 6.3.2 | 官方es鏡像 |
使用說明
應用全部掛在在skywalking namepace下,所以大家使用時不要忘記切換namespace 比如加-n skywalking
此外之前遇到過很奇怪的問題 oap可以正常收集數據,ui沒顯示,并且請求oap報錯IDs can't be null其實就是pod時間不對,導致查詢范圍不匹配 查看kubectl get pods -n skywalking
配置修改
es使用statefulset方式部署,oap,ui使用deployment部署 因而想要修改副本數,內存,磁盤等請修改對應目錄下的03-statefulset.yml或者03-deployment.yml
服務起停
由于k8s deployment會在pod停止后一直重啟 因而修改停止的正確做法是
kubectl edit statefulset elasticsearch -n skywalking kubectl edit deployment oap -n skywalking kubectl edit deployment ui-deployment -n skywalking 復制代碼修改對應的replicates為0,拓展應用將replicates修改為對應副本數即可,想刷新配置也可以用這種辦法
修改內容
基于skywalking官方apache/skywalking-kubernetes 修改為:
- oap,ui鏡像更新為最新 apache/skywalking-oap-server,apache/skywalking-ui鏡像,解決原有鏡像過期問題,修改時區為東八區
- elasticsearch存儲卷配置gce修改為local,增加01-pv.yaml 大家需要制定自己的本地路徑
- ui負載均衡從云環境loadbalace改為適用于本地的nodeport
故障排除
顯示pod不存在 kubectl config set-context $(kubectl config current-context) --namespace=skywalking 或者在所有命令后指定namespace 如 kubectl get pods -n skywalking 服務出現Error 查看event是否有錯誤信息
kubectl describe pod [pod名] 復制代碼如果沒有,說明進程已經掛掉,查看日志是否有錯誤信息
kubectl log [pod名] 復制代碼dns域名解析錯誤 遇到一個問題,es一直正常運行,但是oap報錯找不到es,這是由于域名解析問題 k8s登錄elasticsearch,查看hostname ip地址 登錄另一個可用pod,如ui 看是否能ping 通ip(網絡問題),能否ping通elasticsearch主機名(dns問題) 最后發現是coredns服務沒能正常啟動,導致所有dns不用這個錯誤很常見。。。
kubectl get pods -n kube-system 復制代碼解決方案詳見coredns服務一直處于 CrashLoopBackOff狀態
聯系方式
歡迎大家查看我的博客評論交流
由于本人是k8s新人,難免存在很多問題,歡迎大家反饋 我的郵箱 xuhe@chehejia.com
轉載于:https://juejin.im/post/5ce699bee51d45777621baec
總結
以上是生活随笔為你收集整理的全网最新 Skywalking 6.1.0部署进k8s 包含springcloud测试用例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自定义注解-aop实现日志记录
- 下一篇: 全局异常捕获处理-@Controller