Kubernetes二次开发--Operator的使用
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Kubernetes二次开发--Operator的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                Operator是一個感知應用狀態的控制器
Operator是使用CRD實現的定制化Controller,它與K8s內建的Controller遵循同樣的運行模式
1.安裝Operator
git clone https://github.com/operator-framework/operator-sdk.git make dep&make install operator-sdk version2.Operator開發流程
3.開發準備
git clone https://github.com/kubernetes/kubernetes.git cp -R kuebernetes/staging/src/k8s.io $GOPATH/src/k8s.io mkdir $GOPATH/src/sigs.k8s.io cd $GOPATH/src/sigs.k8s.io git clone https://github.com/kubernetes-sigs/controller-runtime.git4.創建項目工程
operator-sdk new testpod-operator --skip-validation=true --repo=github.com/test-com/testpod-operator #最后一個參數用作GitHub開源5.添加CRD資源類型的API
cd testpod-operator operator-sdk add api --api-version=k8s.test.com/v1alpha1 --kind=TestPod #自定義的CRD資源類型為TestPod上述操作會在pkg目錄下的apis下創建一個k8s的文件夾,其中k8s文件夾下會生成v1alpha1版本的腳手架代碼,后期需要改動的為testpod_types.go這個文件,其中TestPodSpec結構體為期望的狀態,TestPodStatus結構體為集群中實際運行的狀態
6.添加自定義資源的控制器
operator-sdk add controller --api-version=k8s.test.com/v1alpha1 --kind=TestPod上述操作會在controller文件夾下生成testpod文件夾,該文件夾下的testpod_controller.go文件將會在后期主要開發
7.開發Controller
當k8s文件夾下會生成v1alpha1版本下的腳手架代碼testpod_types.go發生改動時,需要執行operator-sdk generate k8s 重新生成腳手架代碼框架,執行operator-sdk generate crds 更新k8s.test.com_testpods_crd.yaml
8.編譯工程
operator-sdk build registry/testpod-operator #生成工程部署需要的鏡像文件,registry為私有倉庫地址9.push鏡像到私有倉庫
docker push registry/testpod-operator #方便k8s集群部署時可以從私有倉庫直接拉取10.部署Operator
# 1.部署service_account kubectl apply -f deploy/service_account.yaml # 2.部署角色 kubectl apply -f deploy/role.yaml # 3.部署角色綁定 kubectl apply -f deploy/role_binding.yaml # 4.部署crd kubectl apply -f deploy/crds/k8s.test.com_testpods-crd.yaml # 5.部署Operator(controller) kubectl apply -f deploy/operator.yaml # 6.部署應用Pod kubectl apply -f deploy/crds/k8s.test.com_v1alph1_testpod_cr.yaml總結
以上是生活随笔為你收集整理的Kubernetes二次开发--Operator的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 密码技术--国密证书及go语言生成自签国
- 下一篇: go语言中利用匿名函数和闭包实现文件名修
