14
10

More than 5 years have passed since last update.

VagrantでKubernetesクラスタを立てる

Posted at

が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は以下のように変わる

kubctl_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。

config.rb
$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を立ててみるのとか良い

14
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10