Slide 1

Slide 1 text

• N U T A N I X | C O N F I D E N T I A L Nutanix Karbon はじめの一歩(仮) Nutanix DevOps Night #01 - 18th Mar 2021

Slide 2

Slide 2 text

2 • • 正式な免責事項: – Nutanixは間接的ビジネスモデルを推進しており、その一環として、パートナーを介して当社の 製品とサービスをご購入いただいています。このドキュメントに記載されているこの価格設定は 拘束力を持たず、説明や財務計画の目的でのみ提供されます。法律により、Nutanixは、Nutanix パートナーを介した間接的な購入について、前述の価格をお客様と直接交渉したり、固定したり することはできません。 • Formal Disclaimer: – Nutanix pursues an indirect business model with the purchases of its products and services made through partners.This pricing contained in this document is non-binding and is provided to you for illustrative and/or financial planning purposes only. By law, Nutanix is not able to negotiate or fix such prices directly with you for indirect purchases through a Nutanix partner.

Slide 3

Slide 3 text

3 • Who? Twitter: hanakara_milk 鈴木 照夫 (Teruo Suzuki) Nutanix Japan G.K. Sr. Systems Engineer 著書(共著): Nutanix Enterprise Cloud Nutanix Hyper Converged Infrastructure入門 最近のトレンド • 1ヶ月半間ガチ一歩も家から出ないチャレンジしてみた • 野菜や生鮮食品が足りなくなってツラい気がする • 身体の組成がレトルトと冷凍食品のみで構成されるよ うになった気がする • ポストから郵便物が溢れている気がする • なんとなく身体に良くない気がする

Slide 4

Slide 4 text

| 4 1 2 3 4 5 はじめに あらためてKarbonおさらい Kubernetesを操作するためには? kubectlのインストールと設定 Kubernetesへのアクセスに必要な情報 6 躓きFAQ

Slide 5

Slide 5 text

• 1.はじめに

Slide 6

Slide 6 text

6 • はじめに • Kubernetesを触ろうと思ったけどうまく行かなかった経験ありませんか? – ググったらかなり情報でてきますよね? – Qi●taを見て試してみたけど、なんかうまく動かなかった経験ありませんか? – 記事の内容って一体どーいった環境で動かしてるの?って疑問に思ったことありませんか? – 記事どおりにしてるのにどうして自分の環境だと動かないの?って思ったことありませんか? – それ以前にどうやってKubernetesを操作していいか分からない、なんてことありませんか? • 自分が行っている操作、叩いているコマンドが、何なのか、何が起きているのか よく分からないと思ったことありませんか? – kubectlって何? – kubectlってどこで何やってるの?

Slide 7

Slide 7 text

7 • 今日のお話 • 今日のメインテーマ – 「Nutanix Karbonはじめの一歩(仮)」とありますが、Karbonのお話はほとんどありません – 今日はKubernetesを触り始めるに当たって出会う、一番一番一番最初の「躓き」にフォーカス • 今日のゴール – kubectlを使ってKubernetesを操作可能な状態になれる ▪ 一番最初の「躓き」を乗り越えられると、今後、KarbonでデプロイされたKubernetesに(たぶん)自信 をもってアクセスできるようになります!(KubernetesクラスターはKarbonで既にかんたんデプロイさ れている前提) • 今日話さないこと – Karbonの有効化操作 – Karobnの詳細な機能の説明

Slide 8

Slide 8 text

• 2.あらためてKarbonおさらい

Slide 9

Slide 9 text

9 • Container Admin • 従来、オンプレミス環境では構築に手間のかかるKubernetesクラスターを 1ーClickエクスペリエンスでNutanix上にデプロイ ▪ ベンダー個別の実装による制約や独自のお作法を知る必要なく「Kubernetes」の知識があれば良い のと、Kubernetesでいろいろ悩ましいストレージを何も意識しなくても使えるのがオススメのポイント あらためてKarbonおさらい Worker VM Worker VM Prism Central etcd VM etcd VM etcd VM Master VM Infra Admin kubectl Container User Kubernetes クラスター デプロイ Kubernetes管理 Master VM Nutanix Cluster Nutanix DSF(Storage)

Slide 10

Slide 10 text

• 3.Kubernetesを操作するためには?

Slide 11

Slide 11 text

11 • Kubernetesの操作や管理 • Kubernetesの操作や管理は謂わばクライアント/サーバー方式 – Kubernetesを操作するにはクライアントが必要 – Kubernetesのクライアントはkubectl – サーバーは(管理対象の)Kubernetesクラスター – kubectlはKubernetesを操作するために必要な必須のCLI Kubernetesクラスター (サーバー) kubectl (クライアント) 管理・操作

Slide 12

Slide 12 text

12 • と言う訳で今日の主役… kubectl

Slide 13

Slide 13 text

13 • クライアント(kubectl)はどこ? • ググったKubernetesの記事はいきなりkubectlを操作するところから始まっている ことが多い – kubectlが既にインストールされている前提 – kubectlのインストール方法が分からない – そしてサーバー(Kubernetesクラスター)とクライアント(kubectl)の位置関係が分からない • サーバーであるKubernetesクラスターはKarbonでデプロイ • ではクライアントであるkubectlはどこに? – kubectlは個別に”どこか”にインストールする必要がある – 環境によってはインストール済みの場合も ▪ 例えば、Docker Desktopをインストールし、Kubernetesを有効化している場合には、kubectlも自動でイ ンストールされる(Docker Desktop for Mac/Windows共通)

Slide 14

Slide 14 text

14 • Kubernetesの操作・管理環境のパターン • クライアント/サーバーが別の場所にある • クライアント/サーバーが同一の場所にある – あまり推奨されない – 環境によっては同一になら ざるを得ないケースがある (開発環境など1ノード構成 なKubernetesクラスターなど) Worker VM etcd VM Master VM kubectl Worker VM etcd VM Master VM Linux / Mac / Windows kubectl

Slide 15

Slide 15 text

15 • Kubernetesの操作・管理環境のパターン具体例 • クライアント/サーバーが別の場所にあるパターン – kubectlをインストールしたKubernetesクラスター操作・管理用の踏み台Linuxを用意する ▪ kubectlをインストールする踏み台はLinux(CentOS、Ubuntuなど)を推奨※ Worker VM etcd VM Master VM Linuxの踏み台 kubectl MacやWindowsな どの自分の操作 PC sshアクセス ※もともとKubernetesはLinux上でCLIによる操作を前提に動作するOSS そのため、基本的にはLinuxフレンドリーな仕様になっている kubectlとkubectlを便利にする周辺ツールなども基本的にはLinux上で動作することを 前提に提供されているものが多い

Slide 16

Slide 16 text

16 • Kubernetesの操作・管理環境のパターン具体例 • クライアント/サーバーが別の場所にあるパターン – kubectlを自身が操作するMacやWindows、Linuxにインストールするパターン ▪ Mac:MacのTerminalにMac用のkubectlをインストール ▪ Windows(PowerShell):Windows用のkubectl.exeをインストール ▪ Windows(WSL):WSLで利用可能なCentOSやUbuntuにLinux用のkubectlをインストール ▪ Linux:Linux用のkubectlをインストール Worker VM etcd VM Master VM LinuxやMacの Bash、Windows のPSやWSL kubectl

Slide 17

Slide 17 text

17 • Kubernetesの操作・管理環境のパターン具体例 • 厳密にはクライアント/サーバーが別だがパッと見同一に見えるパターン – MacやWindows上にDocker DesktopやMinikubeでKubernetesクラスターをデプロイした場合 ▪ MacのTerminalやWindowsのPowerShellにkubectlをインストールして(またはインストール済み)、 Docker DesktopやMinikubeのKubernetesクラスターを操作すると、あたかも同一の環境にクライアント/ サーバーが同居しているように見える ▪ Docker DesktopやMinikube上にデプロイしたKubernetesを構成するノードは、仮想化レイヤーが挟まっ ていて、それがMacやWindows内に仮想マシンとして起動している MacのBash WindowsのPS、 WSLなど MacやWindows Docker DesktopやMinikubeのHyperKitやVirtualBoxなど Master VM 兼 etcd VM 兼 Worker VM kubectl

Slide 18

Slide 18 text

18 • Kubernetesの操作・管理環境のパターン具体例 • クライアント/サーバーが同一の場所にあるパターン – Kubernetesクラスターを構成するノードにログインして操作する場合(非推奨) – Kubernetesクラスターを構成するMasterノードやWorkerノードにsshでログインし、 Masterノー ドやWorkerノード上にインストールされている(またはインストールした)kubectlで操作 ▪ Karbonには、KarbonからデプロイしたKubernetesクラスターを構成するノードへのssh機能がある ▪ KarbonでデプロイされたMasterノードやWorkerノードにはkubectlがインストール済み Worker VM etcd VM Master VM kubectl MacやWindowsな どの自分の操作 PC sshアクセス

Slide 19

Slide 19 text

19 • Kubernetesの操作・管理環境のパターン具体例 • クライアント/サーバーが同一の場所にあるパターン – 仮想、物理を問わずLinux上にKubernetesをインストール(Kubeadmなどを利用) – Docker DesktopやMinikubeと異なり、この場合のKubernetesは仮想化レイヤーを挟んでいない – リソース制約の多い開発環境などで、クライアント/サーバーが同一の環境にならざるを得ない ケース(kubectlをインストールする踏み台マシンが用意できない、自身の操作するMacや Windowsにkubectlをインストールできないなどの理由)がある CentOS / Ubuntuなど Master 兼 etcd 兼 Worker kubectl

Slide 20

Slide 20 text

• 4.kubectlのインストールと設定

Slide 21

Slide 21 text

21 • kubectlのインストール • kubectlのインストール手順は公式ドキュメントを参照するのが一番よい – https://kubernetes.io/ja/docs/tasks/tools/install-kubectl/ – 公式ドキュメントは、有志によって日本語化されている – Macの場合 – Linux(CentOS/RHEL/Fedora)の場合 – Linux(Ubuntu/Debian)の場合 – Windowsの場合 それぞれインストール方法が複数載って いる

Slide 22

Slide 22 text

22 • Linuxへのkubectlインストール • CentOSのパッケージマネージャ(yum)を利用してkubectlをインストール – まずkubectlのrpmが入っているリポジトリを追加する – リポジトリが追加されたらyum install kubectl [root@NGT-MIG-CENTOS7 ~]# cat < /etc/yum.repos.d/kubernetes.repo > [kubernetes] > name=Kubernetes > baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 > enabled=1 > gpgcheck=1 > repo_gpgcheck=1 > gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg > EOF [root@NGT-MIG-CENTOS7 ~]# yum install -y kubectl 読み込んだプラグイン:fastestmirror Determining fastest mirrors * base: ftp-srv2.kddilabs.jp * extras: ftp-srv2.kddilabs.jp * updates: ftp-srv2.kddilabs.jp base | 3.6 kB 00:00:00 extras | 2.9 kB 00:00:00 kubernetes/signature | 844 B 00:00:00 https://packages.cloud.google.com/yum/doc/yum-key.gpg から鍵を取得中です。 Importing GPG key 0xA7317B0F: Userid : "Google Cloud Packages Automatic Signing Key " Fingerprint: d0bc 747f d8ca f711 7500 d6fa 3746 c208 a731 7b0f From : https://packages.cloud.google.com/yum/doc/yum-key.gpg ----<以下略>----

Slide 23

Slide 23 text

23 • Windows PowerShellへのkubectlインストール • Curlにてkubectlバイナリを取得してインストールする場合: – オフィシャルドキュメントどおりに実行するとエラーになる場合がある – PowerShellのバージョンによっては、curlではなくcurl.exeとしないとエラーになる – PowerShellの作業ディレクトリにkubectlバイナリがダウンロードされるので、任意の場所に配 置してPATH(Windowsの環境変数)を通す – PATH(Windowsの環境変数)を通すのが面倒な場合は、雑にC:¥Windows配下にダウンロードした kubectlバイナリを放り込むと既にPATHが通っている場所なので楽(ただし要管理者権限) PS C:¥User> curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.0/bin/windows/amd64/kubectl.exe + curl -LO https://storage.googleapis.com/kubernetes-release/release/v1 ... + ~~~ + CategoryInfo : InvalidArgument: (:) [Invoke-WebRequest]、ParameterBindingException + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.InvokeWebRequestCommand PS C:¥User> PS C:¥User> curl.exe -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.0/bin/windows/amd64/kubectl.exe % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 39.5M 100 39.5M 0 0 1498k 0 0:00:27 0:00:27 --:--:-- 2446k

Slide 24

Slide 24 text

24 • Windows WSL Linuxへのkubectlインストール • Curlにてkubectlバイナリを取得してインストールする場合: – マイクロソフトストアアプリでUbuntu 20.04 LTSをインストール、初回起動しユーザー名とパス ワードを入力しkubectlがインストールできる状態にする – Curlでkubectlバイナリを取得、実行権(chmod +x)を付与し、PATHの通ったディレクトリに移動 (mvで/usr/local/binへ) • なお、Mac及びLinuxへのcurlを使ったインストール方法はこれと同様 – またMac(brew)やLinuxではyum、aptなどのパッケージマネージャーからインストールも可能 root@DESKTOP-HNP3F7C:/home/nutanix# curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 38.3M 100 38.3M 0 0 9969k 0 0:00:03 0:00:03 --:--:-- 9969k root@DESKTOP-HNP3F7C:/home/nutanix# root@DESKTOP-HNP3F7C:/home/nutanix# root@DESKTOP-HNP3F7C:/home/nutanix# chmod +x ./kubectl root@DESKTOP-HNP3F7C:/home/nutanix# root@DESKTOP-HNP3F7C:/home/nutanix# sudo mv ./kubectl /usr/local/bin/kubectl root@DESKTOP-HNP3F7C:/home/nutanix#

Slide 25

Slide 25 text

25 • 参考:Windows WSL Linuxへのkubectlインストール • Curlにてkubectlバイナリを取得してインストールする場合: – WSL有効化作業、Linux用Windowsサブシステムにチェックを入れる(要Windows再起動) ▪ Windowsのバージョンによっては、Windows Subsystem for Linuxと表示されいてる場合もある

Slide 26

Slide 26 text

26 • インストール時のポイント – 自分のコンソール環境のオレオレルールなどに無理矢理合わせず、公式のドキュメントどおりに インストールするのが躓かない秘訣 ▪ 最初は、公式のドキュメントどおりにインストールする o ただし、Windows環境のインストールに限って言えば、多少のワークアラウンドが必要 ▪ ある程度慣れてきたら自分用の環境に合わせたカスタマイズを – MacまたはLinux、WindowsのWSL Linux環境へのインストールを推奨 ▪ MacやLinux環境の場合、bash completionが利用できて非常に便利 o bash completionがあると、自動的にKubernetesクラスター内のリソース情報やオブジェクト情報を補完 o kubectlを便利にするプラグインなどもMacやLinux用のほうが充実している ▪ Windowsの場合、WSLでCentOSやUbuntuを起動し、そこにLinux用のkubectlをインストール ▪ WindowsでWSLが利用できない場合、踏み台のLinuxを別途用意してkubectlをインストールWindowsから sshで踏み台Linuxにアクセスして利用するのがオススメ ▪ PowerShell用のkubectlを利用しても良いが、auto-completion機能がオフィシャルに提供されておらず、 また同等機能を導入するのが非常に面倒

Slide 27

Slide 27 text

• 5.Kubernetesへのアクセスに必要な情報

Slide 28

Slide 28 text

28 • kubectlはどうやってKubernetesクラスターにアクセスしているか? • kubectlはただのCLI – kubectlを使って操作・管理したいKubernetesクラスターへアクセスするためには、アクセスす るための接続情報が必要 ▪ アクセス先のKubernetesクラスターのアドレス ▪ Kubernetesクラスターへのアクセス時のユーザー名、など – kubectlに接続情報(kubeconfig)を読み込ませることで操作・管理したいKubernetesクラス ターへアクセス Kubernetesクラスター (サーバー) kubectl (クライアント) 管理・操作 kubeconfig (接続情報)

Slide 29

Slide 29 text

29 • kubeconfigはどこからひろってくるのか? • kubeconfigは、KubernetesクラスターのMasterノードなどに格納されている – kubeconfigをkubectlがインストールされているクライアント上にもってくる必要がある ▪ Karbonの場合、Prism Central上のKarbon UIからkubeconfigを取得してくる機能がある ▪ Karbon以外の環境の場合は、KubernetesクラスターのMasterノードにsshでログインして、手動で kubeconfigを取得する必要がある o Kubeadmで構築したKubernetesのデフォルトでは、/etc/kubernetes/admin.conf が kubeconfig ※GKE、AKS、EKS、Tanzu、Openshift等では、それぞれの製品で取得方法が異なるため製品の指示に従う ▪ Docker DesktopやMinikube環境では、kubeconfigは自動的にユーザーのホームディレクトリ配下に配置 される($HOME/.kube/config や %USERPROFILE%¥.kube¥config が kubeconfig) Kubernetesクラスター (サーバー) kubectl (クライアント) 管理・操作 kubeconfig (接続情報) kubeconfig (接続情報) 取得

Slide 30

Slide 30 text

30 • kubeconfigは複数設定が可能 • kubeconfigは、Kubernetesクラスターの接続情報 – kubeconfigは、複数設定が可能で、読み込ませるkubeconfigを切り替えることで操作・管理する Kubernetesクラスターを切り替えることができる – 切り替え方法はいくつかあるが、まずはexport(MacやLinux)または$env(Windows)で読み込 むkubeconfigファイルの切り替えを覚える KubernetesクラスターA (サーバー) kubectl (クライアント) 管理・操作 kubeconfig-A (接続情報) kubeconfig-B (接続情報) KubernetesクラスターB (サーバー)

Slide 31

Slide 31 text

31 • kubeconfigの設定(環境変数$KUBECONFIGの設定) • Mac/Linux、Windowsいずれのケースでもkubeconfig情報を環境変数$KUBECONFIGに 設定するこでkubectlは適切なKubernetesクラスターの宛先を知ることが可能 – Mac/Linux、WindowsのWSL Linuxなどの場合 ▪ コマンド:export KUBECONFIG=KUBECONFIG_FILE_PATH o 例:export KUBECONFIG=/home/hoge/.kube/kube.cfg – WindowsのPowerShellの場合 ▪ コマンド:$env:KUBECONFIG=KUBECONFIG_FILE_PATH o 例: $env:KUBECONFIG=“C:¥User¥hoge¥.kube¥kube.cfg” – kubeconfigが適切に読み込まれているかを確認するには以下のコマンドを実行 ▪ コマンド:kubectl config view – なお、kubectlに読み込ませるkubeconfigのファイル名は任意のファイル名でOK

Slide 32

Slide 32 text

32 • Linux(Mac/Windows WSL Linux)のkubectlでkubeconfigを設定してみる • kubeconfig未設定時の挙動: – 接続先の情報がないためエラーとなる – kubectl config viewでも空っぽ – kubeconfigを設定する ▪ kubeconfig情報またはファイルを取得する ▪ LinuxやMac、Windows WSL Linux環境の場合、KarbonのUIなどからkubeconfigのファイルをkubectlがイ ンストールされている端末に取得するか、Karbon UIからCopy the command to clipboardでスクリプト をコピーする [root@NGT-MIG-CENTOS7 ~]# kubectl get no The connection to the server localhost:8080 was refused - did you specify the right host or port? [root@NGT-MIG-CENTOS7 ~]# [root@NGT-MIG-CENTOS7 ~]# kubectl config view apiVersion: v1 clusters: null contexts: null current-context: "" kind: Config preferences: {} users: null [root@NGT-MIG-CENTOS7 ~]#

Slide 33

Slide 33 text

33 • 参考:Karbonでのkubeconfig取得

Slide 34

Slide 34 text

34 • 参考:Karbonを利用する際のkubeconfigの読み込み • KarbonからデプロイしたKubernetesクラスターのkubeconfigの読み込みは、以下 の3つのパターンで可能 1. Mac、Linux及びWindows上のWSL Linux環境に対応(PowerShell非対応) Karbon UIから操作・管理したいKubernetesクラスターを選択して、Actions > Download kubeconfig > Copy the command to clipboardを選択し、kubectlがインストールされている 環境のターミナルに貼り付け 2. Mac、Linux及びWindows PowerShell、Windows上のWSL Linux環境に対応 Karbon UIから操作・管理したいKubernetesクラスターを選択して、Actions > Download kubeconfig > Downloadを選択し、kubeconfigファイルをダウンロード、 kubectlがインス トールされている環境のターミナルからexportまたは$env kubeconfigでダウンロードした kubeconfigファイルを指定 3. Mac、Linux及びWindows PowerShell、Windows上のWSL Linux環境に対応(オプション) Prism Centralにsshログインし、karbonctlでkubeconfig情報を取得

Slide 35

Slide 35 text

35 • Linux環境のkubectlでkubeconfigを設定してみる • kubeconfig設定(kubeconfig情報貼り付け): – 取得したkubeconfigファイルを指定した環境変数設定を行うまでを自動で行う ▪ 例では、Karbon UIからCopy the command to clipboardで、kubeconfig情報を作成・設定するスクリプ トをクリップボードに取得して、ターミナルコンソールに貼り付けを行う o Base64でエンコードされたkubeconfig情報をターミナルコンソールに貼り付け、Base64でデコードして o 作業ディレクトリ配下にKubernetesクラスター名.cfgにリダイレクト o export kubeconfig=`pwd`/Kubernetesクラスター名.cfgを設定までを1ライナーで行っている ▪ 設定が完了したら、kubectl get nodesでKubernetesクラスターのノード情報の参照が可能になっている [root@NGT-MIG-CENTOS7 ~]# clear; echo IyAtKi0gbW9kZTogeWFtbDsgLSotCiMgdmltOiBzeW50YXg9eWFtbAojCmFwaVZlcnNpb246IHYxCm tpbmQ6IENvbmZpZwpjbHVzdGVyczoKLSBuYW1lOiBtaWxrMDEKICBjbHVzdGVyOgogICAgc2VydmVyOiBodHRwczovLzEwLjE0OS4yLjE2Njo0NDMKICAgIGNlcnRpZmljYXRlLWF1dGhvcml0eS1kYXRh OiBMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VSeVZFTkRRWEJYWjBGM1NVSkJaMGxWUTNOVU5IaHZVemcyTm1aR1oyUklXa1pSZWs4NVYyaENhVVJKZDBSUldVcExiMXBKYU ----<中略>---- hIMEZMTm1TVm9KYlZTRFJLU3FwdURiM2hGdUFDNjBfT1V2bm9iUEhHOGlhNkRNV0l6LXhtY1B5M1RMMGk2ampsVFlOU0E5VUtOU3JXWDQ0WjBLMkJfRUFXOUhlMEdkeHNsN25uVnpNLW1rYm05X05WSi1h UTB0TllpQ3dGc0gzUXdGNW9hcEJHaXNvS3dJUVZBCmNvbnRleHRzOgotIGNvbnRleHQ6CiAgICBjbHVzdGVyOiBtaWxrMDEKICAgIHVzZXI6IGRlZmF1bHQtdXNlci1taWxrMDEKICBuYW1lOiBtaWxrMD EtY29udGV4dApjdXJyZW50LWNvbnRleHQ6IG1pbGswMS1jb250ZXh0Cgo= | base64 --decode > ./milk01.cfg; export kubeconfig=`pwd`/milk01.cfg [root@NGT-MIG-CENTOS7 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION karbon-milk01-ef5d9c-k8s-master-0 Ready master 41d v1.17.13 karbon-milk01-ef5d9c-k8s-worker-0 Ready node 41d v1.17.13 karbon-milk01-ef5d9c-k8s-worker-1 Ready node 41d v1.17.13 [root@NGT-MIG-CENTOS7 ~]#

Slide 36

Slide 36 text

36 • Windows PowerShellのkubectlでkubeconfigを設定してみる • kubeconfig未設定時の挙動: – 接続先の情報がないためエラーとなる – kubectl config viewでも空っぽ – kubeconfigを設定する ▪ kubeconfig情報またはファイルを取得する ▪ PowerShell環境の場合、KarbonのUIなどからkubeconfigのファイルをkubectlがインストールされている 端末に取得する PS C:¥User> kubectl.exe get no Unable to connect to the server: dial tcp [::1]:8080: connectex: No connection could be made because the target machine actively refused it. PS C:¥Users¥detteiu> PS C:¥Users¥detteiu> kubectl.exe config view apiVersion: v1 clusters: null contexts: null current-context: "" kind: Config preferences: {} users: null PS C:¥Users¥detteiu>

Slide 37

Slide 37 text

37 • Windows PowerShellのkubectlでkubeconfigを設定してみる • kubeconfig設定: – 取得したkubeconfigの情報またはファイルを指定した環境変数設定を行う ▪ 例では、Karbon UIからkubeconfigファイル(milk01-kubectl.cfg※)を download でC:¥User¥Download ディレクトリにダウンロードしている o ※現時点のKarbonでは、kubeconfigをダウンロードした場合は、クラスター名-kubectl.cfgと言う命名規則の kubeconfigファイルが落ちてくる(Copy the command to clipboardで、クリップボードから貼り付け、環境変数 までの設定を1ライナーで行う場合とで、kubeconfigファイルの命名規則が異なる) ▪ 設定が完了したら、kubectl get nodesでKubernetesクラスターのノード情報の参照が可能になっている PS C:¥Users> $env:KUBECONFIG =“C:¥Users¥Downloads¥milk01-kubectl.cfg" PS C:¥Users> PS C:¥Users> echo $env:KUBECONFIG C:¥Users¥Downloads¥milk01-kubectl.cfg PS C:¥Users> PS C:¥Users> kubectl.exe get nodes NAME STATUS ROLES AGE VERSION karbon-milk01-ef5d9c-k8s-master-0 Ready master 41d v1.17.13 karbon-milk01-ef5d9c-k8s-worker-0 Ready node 41d v1.17.13 karbon-milk01-ef5d9c-k8s-worker-1 Ready node 41d v1.17.13

Slide 38

Slide 38 text

• 6.躓きFAQ

Slide 39

Slide 39 text

39 • よくある躓き(kubectlインストール) – kubectlからKubernetesクラスターにアクセスできない ▪ クライアント(kubectl)とサーバー(Kubernetesクラスター)のネットワークリーチャビリティ確認 ▪ kubeconfigが正しく設定されているか確認(kubectl config view) ▪ kubectlコマンドを実行するのにsudoが必要か確認 ▪ PowerShell環境では、kubeconfig環境変数の設定方法がMac/Linuxと異なる o ググってよく引っかかる情報はMac/Linux環境前提、Windowsの場合は、exportの変わりに$env:を利用 – Karbon環境Specificな躓き ▪ KarbonでkubeconfigをCopy the command to clipboardした先がPowerShellの場合は動作しない o クリップボードの取り込んだスクリプトがLinuxコマンドを前提としているためPowerShellだとエラーになる (base64 decodeなど) ▪ Karbonでkubeconfigを取得後、24時間以上経過してないか確認 o Karbonのkubeconfigは有効期限が設定されており、kubeconfigは取得してから24時間で有効期限が切れる o 24時間が経過している場合は、再度Karbon UIからkubeconfigを再取得する

Slide 40

Slide 40 text

40 • よくある躓き(kubectlインストール) – kubectlが「command not found/コマンドが見つかりません」または「kubectl.exe : 用語 ‘kubectl.exe’ は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラ ムの名前として認識されません。」 ▪ kubectlがPATHの通った場所にあるか確認(特にWindows環境の場合) ▪ kubectlに実行権は付与されているか確認(Mac、Linux環境でcurlでインストールした場合) – オフィシャルドキュメントのkubectlインストール手順どおりにしてもインストールできない ▪ Windows、PowerShell環境でcrulでのインストール o curlではなく、curl.exeとしないとcurlが正常に動作しない ➢ Windows 10標準のPowerShell 5.xのCurlはInvoke-WebRequestのエイリアス ➢ PowerShell 7.x系にするか、curl.exeとまで入力するとInvoke-WebRequestのエイリアスで動作しなくなる ▪ Windows PowerShell PS Galleryでのインストール o 2行目で「このシステムではスクリプトの実行が無効になっているため~」エラー(install-kubectl.ps1) ➢ PowerShellのスクリプトの実行がポリシーによってデフォルトで許可されていない ➢ PowerShell -ExecutionPolicy RemoteSigned install-kubectl.ps1 などで回避

Slide 41

Slide 41 text

41 • よくある躓き(kubectlインストール) – WindowsのWSLが有効化できない ▪ WSLの基本的な動作要件(MicrosoftのWSLオフィシャルページ参照) o Intel Virtualization Technologyに対応したハードウェアを利用していること o WSL1:Windows 10 64ビット版 バージョン 1709 以降 o WSL2:Windows 10 64ビット版 バージョン 1903 以降、ビルド 18362 以上 ▪ VMware PlayerやVirtualBoxを既にインストールしている環境だと一手間かけないと共存できない場合が あるので注意(WSL2以降では一手間かけなくても回避可能なケースもある)

Slide 42

Slide 42 text

42 • よくある躓き(bash completion設定) – WindowsのPowerShell環境でbash completionに相当する設定方法が見当たらない ▪ 現時点でWindowsのPowerShell環境でbash completionに相当する設定は提供されていない o 個人プロジェクト等などでPowerShell環境でのauto-completion機能の開発などを行っているものがある – Ubuntu環境でのbash completionで、sudo kubectl completion bash >/etc/bash_completion.d/kubectlがエラーになる(Permission denied) ▪ SudoでもPermission deniedが出る場合は、bash completion設定の作業時からsudo suでrootのシェルに 入っておいて作業をする – Bash completionが有効化されない(TABキー入力でKubernetesリソースやオブジェクトが補完さ れない) ▪ Bash completionは設定後、Shellの再起動が必要(exce $SHELL –lやTerminalを一度終了して、新たに 起動する)

Slide 43

Slide 43 text

• まとめ

Slide 44

Slide 44 text

44 • Kubernetesの操作や管理はkubectlで • Kubernetesの操作や管理は謂わばクライアント/サーバー方式 – Kubernetesのクライアントはkubectl – サーバーは(管理対象の)Kubernetesクラスター • kubectlはKubernetesを操作するために必要な必須のCLI – kubectlは個別に”どこか”にインストールする必要がある • kubectlに接続情報(kubeconfig)を読み込ませることで操作・管理したい Kubernetesクラスターへアクセス Kubernetesクラスター (サーバー) kubectl (クライアント) 管理・操作 kubeconfig (接続情報)

Slide 45

Slide 45 text

45 • Karbonを試すには… • いまならKarbonを試す方法はたくさんあります! – 導入済みのNutanixで ▪ Prism CentralからKarbonを有効化(Enable)をクリックするだけ – NutanixのTest Driveで ▪ 以下のURLからお名前、メールアドレスや会社名などをフォーム入力するだけ o https://www.nutanix.com/test-drive-kubernetes-management – Nutanix Community Editionで(オススメ!) ▪ もちろん、Community EditionでもKarbonを動かせる ▪ 詳細は、4月のNutanix Meetupで誰かが紹介してくれるかも?

Slide 46

Slide 46 text

46 • 参考: • Kubernetesオフィシャルサイト – https://kubernetes.io/ja/ ▪ 有志によって日本語訳のContributionが行われていて、英語がツライという方にもフレンドリーなオ フィシャルサイト、ブラウザ環境でKubernetesのハンズオンチュートリアルが可能な環境もあり • Karbonの有効化操作とKubernetesクラスターデプロイ操作 – https://qiita.com/hanakara_milk/items/c7e52a71a94b309049e1 ▪ Prism Central上でのKarbonの有効化から、KarbonのUIを使ったKubernetesクラスターの簡単デプロイま での操作・手順 • (書籍)Kubernetes完全ガイド 第2版 – https://book.impress.co.jp/books/1119101148 ▪ Kubernetesクラスターとkubectlの準備ができて、いざKubernetesを基礎からじっくり学ぶぞ!と言う方 にはこの1冊

Slide 47

Slide 47 text

• N U T A N I X | C O N F I D E N T I A L