問題分析:
kubesphere在幫我們自動化創建一些智能自動化的額時候難免會發生一些小錯誤,devops-jenkins是一個部署也會生成一個容器組即pod,容器組的容器服務端口是?targetPort,容器組對外暴露的端口是port,拿devops-controller-5f5896c6ff-kjqdk控制器舉例子,當創建devops項目時首先會訪問該控制器,就是它一直報沒有host問題,驗證進入jenkins容器內部訪問它的8080端口完全沒有問題,現在部署已經解決了,服務之間的訪問顯然是有問題的,不同pod之間的訪問是服務名加空間名的形式,kubesphere生成的服務為devops-jenkins-agent代理所以將服務的name改為devops-jenkins,并把內部容器端口指定為8080容器組暴露的端口port為80,這樣創建devops的訪問地址無需加端口,從devops-controlle報錯中也可以看到,如下
Get "http://devops-jenkins.kubesphere-devops-system/crumbIssuer/api/json/api/json": dial tcp: lookup devops-jenkins.kubesphere-devops-system on 169.254.25.10:53: no such host, requeuing。
距離說明,傳統的部署方式如下?
1、部署一個 tomcat kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8
通過Kubectl get pods -o wide 可以獲取到 tomcat
2、暴露 tomcat?訪問 kubectl expose deployment tomcat6 --port=80 --target-port=8080 --type=NodePort
Pod 的 80 映射容器的 8080;service 會代理 Pod 的 80
3、動態擴容測試 kubectl get deployment 應用升級 kubectl set image (--help 查看幫助) 擴容: kubectl scale --replicas=3 deployment tomcat6 擴容了多份,所有無論訪問哪個 node 的指定端口,都可以訪問到 tomcat6
4、以上操作加--run-dry -o yaml獲取?yaml 格式的配置 參照 k8s 細節
5、刪除 Kubectl get all kubectl delete deploy/nginx kubectl delete service/nginx-service 流程;創建 deployment 會管理 replicas,replicas 控制 pod 數量,有 pod 故障會自動拉起 新的 pod
在上面創建一個部署后第二部暴露服務時一定是已經存在的部署名字,所以只需要將服務名改為部署名字該pod組就能訪問生效。
?
?