前回、Kubernetes Anywhere で Photon OS による Kubernetes クラスタを構築してみました。

vSphere に Kubernetes クラスタを構築してみる。(Kubernetes Anywhere)

 

今回は、Photon OS から Kubernetes のクライアントである kubectl を実行してみます。

kubectl のインストール先は、前回デプロイした OVA 版の Photon OS 2.0 です。

root@photon-machine [ ~ ]# cat /etc/photon-release

VMware Photon OS 2.0

PHOTON_BUILD_NUMBER=304b817

 

ファイルのダウンロードによるインストール。

まず、わりと一般的かと思われる curl コマンドでのダウンロードによるインストール方法です。

前回に構築した Kubernetes クラスタにあわせて v1.9.7 のものをダウンロードしています。

root@photon-machine [ ~ ]# curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.9.7/bin/linux/amd64/kubectl

root@photon-machine [ ~ ]# chmod +x kubectl

root@photon-machine [ ~ ]# mv kubectl /usr/local/bin/kubectl

 

kubectl のバージョンは v1.9.7 です。

※下記の例では、すでに Kubernetes クラスタのコンフィグを読み込んでいます。

root@photon-machine [ ~ ]# which kubectl

/usr/local/bin/kubectl

root@photon-machine [ ~ ]# kubectl version

Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.7", GitCommit:"dd5e1a2978fd0b97d9b78e1564398aeea7e7fe92", GitTreeState:"clean", BuildDate:"2018-04-19T00:05:56Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

 

Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.7", GitCommit:"dd5e1a2978fd0b97d9b78e1564398aeea7e7fe92", GitTreeState:"clean", BuildDate:"2018-04-18T23:58:35Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

 

RPM でのインストール。

Photon OS の YUM リポジトリには kubectl の RPM が用意されています。

root@photon-machine [ ~ ]# tdnf list kubernetes-kubectl-extras

kubernetes-kubectl-extras.x86_64            1.11.1-2.ph2        photon-updates

kubernetes-kubectl-extras.x86_64            1.10.2-10.ph2       photon-updates

kubernetes-kubectl-extras.x86_64            1.10.2-11.ph2       photon-updates

kubernetes-kubectl-extras.x86_64            1.10.2-3.ph2        photon-updates

kubernetes-kubectl-extras.x86_64            1.10.2-4.ph2        photon-updates

kubernetes-kubectl-extras.x86_64            1.10.2-5.ph2        photon-updates

kubernetes-kubectl-extras.x86_64            1.10.2-6.ph2        photon-updates

kubernetes-kubectl-extras.x86_64            1.10.2-7.ph2        photon-updates

kubernetes-kubectl-extras.x86_64            1.10.2-8.ph2        photon-updates

kubernetes-kubectl-extras.x86_64            1.10.2-9.ph2        photon-updates

kubernetes-kubectl-extras.x86_64            1.11.1-1.ph2        photon-updates

kubernetes-kubectl-extras.x86_64            1.11.1-2.ph2        photon-updates

 

tdnf でインストールします。

root@photon-machine [ ~ ]# tdnf install -y kubernetes-kubectl-extras

root@photon-machine [ ~ ]# rpm -q kubernetes-kubectl-extras

kubernetes-kubectl-extras-1.11.1-2.ph2.x86_64

 

kubernetes-kubectl-extras には、kubectl のみが含まれています。

Linux OS なので、/opt/vmware/kubernetes/linux/amd64/kubectl だけを使用します。

root@photon-machine [ ~ ]# rpm -ql kubernetes-kubectl-extras

/opt/vmware/kubernetes/darwin/amd64/kubectl

/opt/vmware/kubernetes/linux/amd64/kubectl

/opt/vmware/kubernetes/windows/amd64/kubectl.exe

 

ファイルが配置されているディレクトリに Linux コマンドのサーチパスが設定されていないので、

フルパスで実行するか、下記のように PATH 環境変数を設定することになります。

root@photon-machine [ ~ ]# export PATH=/opt/vmware/kubernetes/linux/amd64:$PATH

root@photon-machine [ ~ ]# which kubectl

/opt/vmware/kubernetes/linux/amd64/kubectl

root@photon-machine [ ~ ]# kubectl version

Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.1", GitCommit:"b1b29978270dc22fecc592ac55d903350454310a", GitTreeState:"archive", BuildDate:"2018-08-14T19:36:17Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}

 

Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.7", GitCommit:"dd5e1a2978fd0b97d9b78e1564398aeea7e7fe92", GitTreeState:"clean", BuildDate:"2018-04-18T23:58:35Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

 

kubectl での Kubernetes へのアクセス。

Kubernetes に接続するためのコンフィグファイルは、

前回の投稿で  Docker ホスト(今回 kubectl を実行する Linux)に退避したものを使用します。

下記のように退避したので、kubectl を実行する Linux には $HOME/tmp/kubeconfig.json ファイルとして保存されています。

[container]:/opt/kubernetes-anywhere> cp phase1/vsphere/kubernetes/kubeconfig.json /tmp/

 

kubectl が読み込むディレクトリ(ホームディレクトリの .kube/ 直下)にファイルをコピーします。

root@photon-machine [ ~ ]# mkdir ~/.kube

root@photon-machine [ ~ ]# cp ./tmp/kubeconfig.json ~/.kube/config

 

kubectl でクラスタにアクセスできるようになります。

root@photon-machine [ ~ ]# kubectl get nodes

NAME                STATUS                     ROLES     AGE       VERSION

kubernetes-master   Ready,SchedulingDisabled   <none>    12m       v1.9.7

kubernetes-node1    Ready                      <none>    12m       v1.9.7

kubernetes-node2    Ready                      <none>    12m       v1.9.7

kubernetes-node3    Ready                      <none>    12m       v1.9.7

kubernetes-node4    Ready                      <none>    12m       v1.9.7

root@photon-machine [ ~ ]# kubectl cluster-info

Kubernetes master is running at https://10.0.3.121

Heapster is running at https://10.0.3.121/api/v1/namespaces/kube-system/services/heapster/proxy

KubeDNS is running at https://10.0.3.121/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

 

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

 

RPM は用意されていますが、1ファイルのパッケージでファイルの配置ディレクトリも微妙なので、

Photon OS の RPM 使用するか、ダウンロードしたものを使用するかは

使用したい kubectl のバージョンによって選択すればよいかなと思います。

 

以上、Photon OS で kubectl を実行してみる話でした。