Argo(https://argoproj.github.io/projects/argo) 項目是一組 Kubernetes 原生工具集合,用於運行和管理 Kubernetes 上的做業和應用程序。Argo 提供了一種在 Kubernetes 上建立工做和應用程序的三種計算模式 – 服務模式、工做流模式和基於事件的模式 – 的簡單組合方式。全部的 Argo 工具都實現爲控制器和自定義資源。node
快速安裝
Linux
下載客戶端,經過 curl,以下:
linux
# Download the binary curl -LO https://github.com/argoproj/argo/releases/download/v3.0.0-rc3/argo-linux-amd64.gz # Unzip gunzip argo-linux-amd64.gz # Make binary executable chmod +x argo-linux-amd64 # Move binary to path mv ./argo-linux-amd64 /usr/local/bin/argo # Test installation argo version
Argo Controller服務安裝
kubectl create namespace argo kubectl apply -n argo -f https://raw.githubusercontent.com/argoproj/argo/v3.0.0-rc3/manifests/install.yaml
開啓節點部署pod:nginx
安裝完後,使用 kubectl get pod -n argo發現始終處於pending狀態,須要開啓master節點的任務部署。git
kubectl taint nodes --all node-role.kubernetes.io/master-
運行測試
運行示例的workflow:github
argo submit -n argo --watch https://raw.githubusercontent.com/argoproj/argo-workflows/master/examples/hello-world.yaml argo list -n argo argo get -n argo @latest argo logs -n argo @latest
查看UI:api
- 使用 port-forward 來轉發端口:
kubectl -n argo port-forward deployment/argo-server 2746:2746
用戶界面可訪問 http://localhost:2746session
- 使用NodePort:
使用kubectl edit deployment/argo-server -n argo,參照以下nginx-service.yaml,將type改成NodePort,並添加nodePort端口。app
apiVersion: v1 kind: Service metadata: name: nginx-service spec: type: NodePort sessionAffinity: ClientIP selector: app: nginx ports: - port: 80 nodePort: 30080
- kind:Service表明是一個服務
- type:NodePort k8s將會在每一個Node上打開一個端口而且每一個Node的端口都是同樣的,經過<NodeIP>:NodePort的方式Kubernetes集羣外部的程序能夠訪問Service。
- selector:哪一個服務須要暴露
- port:service暴露的端口
- TargetPort:pod的端口
- nodePort:對外暴露的端口,不設置會默認分配,範圍:30000-32767
- 轉發邏輯是:
<NodeIP>:<nodeport> => <ServiceVIP>:<port>=> <PodIP>:<targetport>
在相應節點上使用http://<NodeIP>:<nodeport>就能夠訪問服務了。curl