macにkubernetes(以下k8sと略す)の環境を構築する方法です。
macでk8sを動作させるには「Docker for Mac (Edge)」のみを導入すれば十分です。
Docker for Mac (Edge)は下記のサイトからをダウンロードしてができます。
ちなみにログインは必須なので必要であればユーザー登録をしてください。
https://store.docker.com/editions/community/docker-ce-desktop-mac
取得したファイルをクリックするとインストーラが起動するのでそのまま指示に従ってインストールします。
インストール後にまずはdockerが正常にインストールされているか確認します。
ターミナルを開き、Dockerコマンドを実行します。
$ docker --version Docker version 18.09.0-ce-beta1, build 78a6bdb
正しくバージョン情報が出力されていれば正しくインストールができています。
続いてk8sの設定を行います。
右上のクジラマークからPreferencesを選択すると右上にkubeのメニューが表示されます。
画像のようにチェックしを入れてkubeを有効にします。
ターミナルを開き直すとkubectlコマンド実行できるようになっています。
$ kubectl version Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-05-21T09:17:39Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"darwin/amd64"} Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-05-21T09:05:37Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
ここまででk8s環境の構築が完了です。
ここから動作確認を含め、実際に使用して見ます。
適当なディレクトリに下記の2ファイルを作成します。
$ vi wordpress-deployment.yaml
apiVersion: v1 kind: Service metadata: name: wordpress labels: app: wordpress spec: ports: - port: 80 selector: app: wordpress tier: frontend type: LoadBalancer --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wp-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: wordpress labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: frontend strategy: type: Recreate template: metadata: labels: app: wordpress tier: frontend spec: containers: - image: wordpress:4.8-apache name: wordpress env: - name: WORDPRESS_DB_HOST value: wordpress-mysql - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 80 name: wordpress volumeMounts: - name: wordpress-persistent-storage mountPath: /var/www/html volumes: - name: wordpress-persistent-storage persistentVolumeClaim: claimName: wp-pv-claim
$ vi mysql-deployment.yaml
apiVersion: v1 kind: Service metadata: name: wordpress-mysql labels: app: wordpress spec: ports: - port: 3306 selector: app: wordpress tier: mysql clusterIP: None --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: wordpress-mysql labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: mysql strategy: type: Recreate template: metadata: labels: app: wordpress tier: mysql spec: containers: - image: mysql:5.6 name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password livenessProbe: tcpSocket: port: 3306 ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim
kubectlコマンドでpodを起動します。
$ kubectl create secret generic mysql-pass --from-literal=password=yourpassword $ kubectl apply -f mysql-deployment.yaml $ kubectl create -f wordpress-deployment.yaml
2つのpodが立ち上がっていることを確認します。
$ kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE mysql-pv-claim Bound pvc-939be62f-cb5c-11e8-b208-025000000001 20Gi RWO hostpath 1m wp-pv-claim Bound pvc-9d49b127-cb5c-11e8-b208-025000000001 20Gi RWO hostpath 1m
ブラウザでローカルホストにアクセスするとwordpressの画面が表示されます。
http://localhost
画面を見ると文字化けしているがk8sの動作確認はできました。
今回、ローカルでk8sの環境が必要になったためMacを使って手軽に環境を構築しました。