kubernetesシリーズの16:Kubernetes CRD sample-controllerのコンパイルとテスト
6782 ワード
一、前言
記事『kubernetesシリーズの14:Kubernetes CRD(CustomResourceDefinition)概要』では、CRDの定義およびバックエンドコントローラの実装を含むKubernetesが公式に提供するCRDの例を分析した.同時に、k 8 sのcontrollerについても、以下の2つの文章でより詳細な分析と例を示した. A Deep Dive Into Kubernetes Controllers Kubewatch, An Example Of Kubernetes Custom Controller
しかし、k 8 sが公式に提供するCRDおよびcontrollerの例にはコンパイルおよび実行に関する説明がないため、step-by-stepがコンパイル環境を設定し、コンパイルを行う例、Dockerfileによるワンタッチコンパイルおよび実行の例を示す.
転載先https://blog.csdn.net/cloudvtech
二、CRD example-controllerdeコンパイル
2.1コンパイル環境
CentOS Linux release 7.4.1708 (Core)
2.2ダウンロードコードと依存
ここでapimachineryのインストールは、この記事のヒントに基づいています.そうしないと、次のようなエラーが発生します.
2.3 codegenの実行
コンパイルされたbinaryの名前はsamplecontrollerで、srcディレクトリの下にあります.
転載先https://blog.csdn.net/cloudvtech
三、sample-controllerを実行し、CRDを配置する
3.1 example CRDの機能
このCRDの機能は、FooタイプCRDのインスタンスexample-fooが作成されたときに、sample-controllerがexample-fooで指定されたreplicaに基づいて、対応する数のreplicaを持つnginxのdeploymentを配置することです.
3.2 sample-controllerの実行
sample-controllerのパラメータは次のとおりです.
kubeconfigでclusterのaccessを指定し、Kubernetesのclusterをテストするkubeconfigは以下の位置にあります.
実行:
3.3 CRDの導入
3.4ステータスの表示
deploymentとPODの表示
転載先https://blog.csdn.net/cloudvtech
四、Dockerfile方式のコンパイルと配置
4.1 Dockerfile
4.2 build
4.3運転
転載先https://blog.csdn.net/cloudvtech
記事『kubernetesシリーズの14:Kubernetes CRD(CustomResourceDefinition)概要』では、CRDの定義およびバックエンドコントローラの実装を含むKubernetesが公式に提供するCRDの例を分析した.同時に、k 8 sのcontrollerについても、以下の2つの文章でより詳細な分析と例を示した.
しかし、k 8 sが公式に提供するCRDおよびcontrollerの例にはコンパイルおよび実行に関する説明がないため、step-by-stepがコンパイル環境を設定し、コンパイルを行う例、Dockerfileによるワンタッチコンパイルおよび実行の例を示す.
転載先https://blog.csdn.net/cloudvtech
二、CRD example-controllerdeコンパイル
2.1コンパイル環境
CentOS Linux release 7.4.1708 (Core)
yum install -y go git
2.2ダウンロードコードと依存
mkdir /root/gowork
export GOPATH=/root/gowork/
cd /root/gowork/
git clone https://github.com/kubernetes/sample-controller.git
mv sample-controller src
cd src
mkdir -p k8s.io/sample-controller
cp -a pkg k8s.io/sample-controller
go get k8s.io/apimachinery
ここでapimachineryのインストールは、この記事のヒントに基づいています.そうしないと、次のようなエラーが発生します.
Error: Failed executing generator: some packages had errors:
type "k8s.io/apimachinery/pkg/runtime.Object" in k8s:deepcopy-gen:interfaces tag of type k8s.io/apimachinery/pkg/runtime.Object is not an interface, but: ""
goroutine 1 [running]:
2.3 codegenの実行
./hack/update-codegen.sh
Generating deepcopy funcs
Generating clientset for samplecontroller:v1alpha1 at k8s.io/sample-controller/pkg/client/clientset
Generating listers for samplecontroller:v1alpha1 at k8s.io/sample-controller/pkg/client/listers
Generating informers for samplecontroller:v1alpha1 at k8s.io/sample-controller/pkg/client/informers
2.4コンパイルsample-controller\cp -af vendor/* ./
rm -rf vendor/
go build -v -o samplecontroller
…
k8s.io/sample-controller/pkg/apis/samplecontroller
k8s.io/sample-controller/pkg/apis/samplecontroller/v1alpha1
k8s.io/sample-controller/pkg/client/clientset/versioned/scheme
k8s.io/sample-controller/pkg/client/clientset/versioned/typed/samplecontroller/v1alpha1
k8s.io/sample-controller/pkg/client/clientset/versioned
k8s.io/sample-controller/pkg/client/informers/externalversions/internalinterfaces
k8s.io/sample-controller/pkg/client/listers/samplecontroller/v1alpha1
k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller/v1alpha1
k8s.io/sample-controller/pkg/client/informers/externalversions/samplecontroller
k8s.io/sample-controller/pkg/client/informers/externalversions
k8s.io/sample-controller/pkg/signals
コンパイルされたbinaryの名前はsamplecontrollerで、srcディレクトリの下にあります.
転載先https://blog.csdn.net/cloudvtech
三、sample-controllerを実行し、CRDを配置する
3.1 example CRDの機能
このCRDの機能は、FooタイプCRDのインスタンスexample-fooが作成されたときに、sample-controllerがexample-fooで指定されたreplicaに基づいて、対応する数のreplicaを持つnginxのdeploymentを配置することです.
3.2 sample-controllerの実行
sample-controllerのパラメータは次のとおりです.
./samplecontroller --help
Usage of ./samplecontroller:
-alsologtostderr
log to standard error as well as files
-kubeconfig string
Path to a kubeconfig. Only required if out-of-cluster.
-log_backtrace_at value
when logging hits line file:N, emit a stack trace
-log_dir string
If non-empty, write log files in this directory
-logtostderr
log to standard error instead of files
-master string
The address of the Kubernetes API server. Overrides any value in kubeconfig. Only required if out-of-cluster.
-stderrthreshold value
logs at or above this threshold go to stderr
-v value
log level for V logs
-vmodule value
comma-separated list of pattern=N settings for file-filtered logging
kubeconfigでclusterのaccessを指定し、Kubernetesのclusterをテストするkubeconfigは以下の位置にあります.
/etc/kubernetes/admin.conf
実行:
./samplecontroller -kubeconfig /etc/kubernetes/admin.conf
3.3 CRDの導入
[root@k8s-master src]# kubectl apply -f artifacts/examples/crd.yaml
customresourcedefinition.apiextensions.k8s.io "foos.samplecontroller.k8s.io" created
[root@k8s-master src]# kubectl apply -f artifacts/examples/example-foo.yaml
foo.samplecontroller.k8s.io "example-foo" created
3.4ステータスの表示
[root@k8s-master src]# kubectl get crd
NAME AGE
foos.samplecontroller.k8s.io 52s
[root@k8s-master src]# kubectl get Foo
NAME AGE
example-foo 44s
[root@k8s-master src]# kubectl describe Foo example-foo
Name: example-foo
Namespace: default
Labels:
Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"samplecontroller.k8s.io/v1alpha1","kind":"Foo","metadata":{"annotations":{},"name":"example-foo","namespace":"default"},"spec":{"deploym...
API Version: samplecontroller.k8s.io/v1alpha1
Kind: Foo
Metadata:
Cluster Name:
Creation Timestamp: 2018-05-25T20:28:47Z
Generation: 1
Resource Version: 79222
Self Link: /apis/samplecontroller.k8s.io/v1alpha1/namespaces/default/foos/example-foo
UID: 3a4e7cd3-605a-11e8-9f24-000c29d3e746
Spec:
Deployment Name: example-foo
Replicas: 1
Status:
Available Replicas: 1
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Synced 16s (x8 over 1m) sample-controller Foo synced successfully
deploymentとPODの表示
[root@k8s-master src]# kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
example-foo 1 1 1 1 1m
[root@k8s-master src]# kubectl get pods
NAME READY STATUS RESTARTS AGE
example-foo-d74cd7fbc-nql68 1/1 Running 0 2m
転載先https://blog.csdn.net/cloudvtech
四、Dockerfile方式のコンパイルと配置
4.1 Dockerfile
FROM centos
ENV PATH=$PATH:/user/bin/
ENV GOPATH=/gowork
WORKDIR /gowork
RUN yum install -y go git
RUN git clone https://github.com/kubernetes/sample-controller.git
RUN mv sample-controller src
WORKDIR /gowork/src
RUN mkdir -p k8s.io/sample-controller
RUN cp -a pkg k8s.io/sample-controller
RUN echo || go get k8s.io/apimachinery
RUN \cp -af vendor/* ./
RUN rm -rf vendor/
RUN go build -v -o samplecontroller
4.2 build
docker build -t samplecontrolle .
4.3運転
[root@k8s-master sample-controller_docker]# docker run -it -v /etc/kubernetes:/k8s a9
[root@9640be7aa387 src]# /gowork/src/samplecontroller -kubeconfig /k8s/admin.conf
転載先https://blog.csdn.net/cloudvtech