がVagrantの公式ドキュメントだが、OSがFedoraよりCoreOSの方が良かったり、ドキュメントがCoreOSの人がちゃんとメンテしていて読みやすかったりするので、CoreOSの公式ドキュメントの
のMulti-nodeを立てるドキュメント
を使う。
kubectl の設定
kubectlは既にgcloud
のコマンドでインストール済み (cf. gcloudでのkubectlのインストール )
$ which kubectl
/Users/awakia/google-cloud-sdk/bin/kubect
1からのインストールではないので、kubectlが扱うクラスタ環境の切り替えを考えないといけない。
対象クラスタの変更
まずはkubectlした時にgcloudをいじる設定になっているのを変える。
とりあえず、現状確認:
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: REDACTED
server: https://104.155.208.215
name: gke_kube-test-awakia_asia-east1-a_cluster-1
contexts:
- context:
cluster: gke_kube-test-awakia_asia-east1-a_cluster-1
user: gke_kube-test-awakia_asia-east1-a_cluster-1
name: gke_kube-test-awakia_asia-east1-a_cluster-1
current-context: gke_kube-test-awakia_asia-east1-a_cluster-1
kind: Config
preferences: {}
users:
- name: gke_kube-test-awakia_asia-east1-a_cluster-1
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
password: CdsJ7IG1H1laOofO
username: admin
ここから設定
$ kubectl config set-cluster vagrant --server=https://172.17.4.101:443 --certificate-authority=${PWD}/ssl/ca.pem
$ kubectl config set-credentials vagrant-admin --certificate-authority=${PWD}/ssl/ca.pem --client-key=${PWD}/ssl/admin-key.pem --client-certificate=${PWD}/ssl/admin.pem
$ kubectl config set-context vagrant --cluster=vagrant --user=vagrant-admin
$ kubectl config use-context vagrant
詳細は https://coreos.com/kubernetes/docs/latest/configure-kubectl.html 参照。
これを打ったあとkubectl config view
は以下のように変わる
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: REDACTED
server: https://104.155.208.215
name: gke_kube-test-awakia_asia-east1-a_cluster-1
+- cluster:
+ certificate-authority: /Users/awakia/src/github.com/coreos/coreos-kubernetes/multi-node/vagrant/ssl/ca.pem
+ server: https://172.17.4.101:443
+ name: vagrant
contexts:
- context:
cluster: gke_kube-test-awakia_asia-east1-a_cluster-1
user: gke_kube-test-awakia_asia-east1-a_cluster-1
name: gke_kube-test-awakia_asia-east1-a_cluster-1
+- context:
+ cluster: vagrant
+ user: vagrant-admin
+ name: vagrant
-current-context: gke_kube-test-awakia_asia-east1-a_cluster-1
+current-context: vagrant
kind: Config
preferences: {}
users:
- name: gke_kube-test-awakia_asia-east1-a_cluster-1
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
password: CdsJ7IG1H1laOofO
username: admin
+- name: vagrant-admin
+ user:
+ client-certificate: /Users/awakia/src/github.com/coreos/coreos-kubernetes/multi-node/vagrant/ssl/admin.pem
+ client-key: /Users/awakia/src/github.com/coreos/coreos-kubernetes/multi-node/vagrant/ssl/admin-key.pem
シェルで打ったコマンドとの対応もわかりやすいDiffになっている。
つまり今後のGKEとの切り替えは、
$ kubectl config use-context gke_kube-test-awakia_asia-east1-a_cluster-1
だけで出来る。
CoreOS+Kubernetes の Vagrant を立てる
$ git clone https://github.com/coreos/coreos-kubernetes.git
$ cd coreos-kubernetes/multi-node/vagrant
$ vagrant up
で終わり。このgitリポジトリには他にも同じ設定でawsに立てるようのGoのプログラムも用意されていたりする。
クラスタの構成の変更は、基本的なものなら
$ cp config.rb.sample config.rb
して、できる以下のファイルをいじればOK。
$update_channel="alpha"
$controller_count=1
$controller_vm_memory=512
$worker_count=1
$worker_vm_memory=512
$etcd_count=1
$etcd_vm_memory=512
設定できたか確認
kubectl get nodes
NAME LABELS STATUS
172.17.4.201 kubernetes.io/hostname=172.17.4.201 Ready
vagrantの方のStateがきちんと見えていればOK。
クラスタ上に載せるもの
kubernetes で Go言語実装のGuestbookを立ててみるのとか良い