前回、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 を実行してみる話でした。