zaki work log

作業ログやら生活ログやらなんやら

Kubernetes

[Kubernetes / Istio] Sock Shopの現k8sバージョン対応とIstio対応デプロイお試し

microservices-demo.github.io 環境 quickstart webアクセス Istio対応 サイドカーインジェクション用namespace Gateway/VirtualService Gateway VirtualService デプロイして実行 Kialiでトラフィックを確認 環境 [zaki@cloud-dev ~]$ kc version --short C…

[Kubernetes / Istio] Kialiでサービスメッシュのトラフィックを俯瞰する

Kialiを使ってサービスメッシュのトラフィックをチェックする。 [zaki@cloud-dev ~]$ kc get pod,deploy,svc -n istio-system -l app=kiali NAME READY STATUS RESTARTS AGE pod/kiali-d45468dc4-jlshb 1/1 Running 5 23d NAME READY UP-TO-DATE AVAILABLE A…

[Azure / AKS] ノードのスケーリング

B2sの2ノード構成のクラスタのノードを増やしたり、B2msインスタンスタイプのノードを追加したり。 ノードのスケールアウト ノードプール名を取得 スケーリング ノードのスケールアップ ノードプールの追加 (参考)VMのインスタンスタイプ ノードプールの削除…

[Kubernetes / kubeadm]クラスタ名を指定してK8sデプロイ(kubeadm config YAML)

kubeadmを使ったクラスタ作成時にクラスタ名を設定する。 何がしたいの? 設定方法 既存のオプションもkubeadm config YAMLに設定 標準の設定YAMLの取得 (参考)構築後のコンテキスト名のリネーム 環境 Ansible自動化の実装例 何がしたいの? kubectl config …

[Kubernetes / kind] kindを使ってDocker上にクラスタを高速作成し、MetalLBも併用してクラスタ横断した通信お試し

DockerでKubernetesを動かす。 何をいってるかわからないかもしれないけど、コンテナをK8sノードとして動かすものです。 下の図のような感じで、Kubernetesノードとして動作するコンテナがDockerで動く、というものです。 (なので、podがこのコンテナの中で…

[AWS/EKS] eksctlでバージョン指定してクラスタ作成

検証なんかでeksctlでバージョン指定してKubernetesクラスタを作成したいときは、--versionを使用する。 $ time eksctl create cluster \ --name eks-1-15 \ --region ap-northeast-1 \ --nodegroup-name eks-ng-1-15 \ --node-type t3.micro \ --nodes 1 \ …

[Kubernetes] Istio (v1.6.5) Getting Started (オンプレK8sでBookInfoを動かしてwebアクセス)

Istioを入れてサービスメッシュなサンプルアプリ(BookInfo)を動かすところまで。 環境 Istio インストール download istioctl install Istio サンプルアプリケーションのデプロイ namespace作成 デプロイ podへの外部からのアクセス設定 外部からのアクセス …

Kubernetes日本語ドキュメント(kubeadm部分)で初めてのOSSコントリビュートした話

Kubernetes日本語化プロジェクトの翻訳お手伝いで、初めてOSSへのコントリビュートをしてみたのでその時の話について。 きっかけ 担当のアサイン 作業の流れ CLAの署名 初めてのfork コミットメッセージ 翻訳で困ったとき ローカルでの動作確認 本家側の変更…

[Kubernetes v1.18 / Calico メモ] デプロイ時にpodのCIDR設定を気にする必要がなくなってます

kubeadm使ったKubernetesクラスタのCNIにCalicoを使う際のカスタムアドレスの指定が簡単(というか不要)になっていたのでメモ CalicoのデフォルトCIDR kubeadm v1.17 / Calico v3.11 kubeadm v1.18 / Calico v3.14 remove flannel CalicoのデフォルトCIDR kub…

[Kubernetes] オンプレK8sでもtype:LoadBalancer Serviceが使えるようになるMetalLBを入れてみた

クラウドサービスのマネージドK8sだと気軽に使ってしまうtype:LoadBalancer Service、kubeadmとかで作ったオンプレK8sだとそのままだと使えないんだけど、このツイートで「MetalLB」というのを知って(過去にも聞いてたことはあったかもしれないけど、、いろ…

[AWS/EKS] eksctlでよく使いそうなクラスタ・ノードグループ作成のオプション (コマンドメモ)

前回はうっかりオプション何もなしでクラスタ作ってしまったので、eksctlで作成できるEKSクラスタ、オプションを指定してノードの設定などいろいろ初期設定してみる。 新規作成時のオプション デプロイ可能なpod数について ノードにsshしてみる ノードグルー…

[AWS/EKS] eksctlコマンドを使ってK8sクラスタをコマンド1発で作成・削除

EKSのCLIツールであるeksctlを使ってEKSクラスタを作った時のメモ。 必要な操作はすべて公式ドキュメントに載っているので、野良記事を参考にせずに公式ドキュメントを見ること。 docs.aws.amazon.com CLIツールをインストール EKSクラスタの作成 認証情報 v…

[Kubernetes] オンプレK8sでもRook-Cephを使ってpvのダイナミックプロビジョニングを試してみる

Rook v1.3のRook Ceph Storage Quickstartに沿って、クラウドのマネージドK8sやvSphere VolumeのようなIaaSのストレージ機能が何もないオンプレベアメタルなKubernetesクラスタでもPersistentVolumeのダイナミックプロビジョニングが使えることを試してみま…

Ansible Night オンライン!2020.06 でKubernetes構築(kubeadm)の自動化でLT登壇した振り返り

登壇から1週間空いてしまいましたが、「Ansible Night オンライン! 2020.06」で(人生2度目の)LT枠で登壇をしましたので、振り返りたいと思います。 ansible-users.connpass.com 発表スライド 内容について 申し込み(CfP) 企画の参加 初めてのオンライン発表…

[Kubernetes] podに任意のログを発生させてkubectl logs -fの出力を自由にコントロールしたい

podのログの監視ツール作成みたいな作業をしているときに「任意のログをpod内に発生させたい!」ということがあったので、その方法について。 TL;DR 解説 podで動作確認 普通のLinux OS上で確認 TL;DR ログを発生させたい対象podのシェル上(kubectl exec -it…

[Kubernetes] Helm getting started

2020.11追記: 使用するリポジトリについて、以前はドキュメントにも載っていた https://kubernetes-charts.storage.googleapis.com がサービス終了し、新しく https://charts.helm.sh/stable を使用するようになっています。 Helmバージョン3.4.1からは旧リ…

[kubectl / oc] ネームスペースの作成と削除と切り替え (コマンドメモ)

kubectxを使わずkubectlで済ます方法。 namespaceを作る kubectl create dry-run マニフェストから namespace切り替え namespace削除 kubectl delete マニフェストから OpenShiftだと 作成 切り替え 削除 namespaceと違うとこ 環境 namespaceを作る kubectl …

[Ansible] playをまたいだ変数保持をdelegate_toとfact変数で行う (Ansibleでkubeadmのworkerノード追加)

task(1)の実行結果を保持してtask(2)の入力にする、であればregisterを使って可能だけど、play(A)の実行結果を保持してplay(B)の入力にするには、、、registerで保持できる変数のスコープはplay内(←この認識は誤り)で、環境変数なんかはAnsibleから更新する…

[kubectl / oc]コンテキストやクラスタ情報の確認 (コマンドメモ)

OpenShiftだとoc loginやoc project使ってあまり意識しないので簡単にまとめ。。 設定情報 $ kubectl config view apiVersion: v1 clusters: - cluster: certificate-authority-data: DATA+OMITTED server: https://k8s-master.esxi.jp-z.jp:6443 name: kube…

[kubernetes] トークン・証明書の失効後のkubeadmを使ったmasterノードの追加

masterノードをHA構成でクラスタデプロイしたときに使用した、以下のトークンがどちらも失効したあとに別のmasterノードをクラスタに追加したい場合。 [zaki@k8s-master01 ~]$ kubeadm token list TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS 1s127v…

[kubernetes] kubeadmを使ったmasterノードのHA構成クラスタ

kubeadm使ってmasterをHA構成にするには、kubeadm initのパラメタにLBを指定して構築する。 kubernetes.io 環境(使用バージョン)はkubeadm 1.18 [zaki@k8s-master01 ~]$ kubeadm version kubeadm version: &version.Info{Major:"1", Minor:"18", GitVersion:…

[kubernetes] kubeadmで構築した後トークン失効後にworkerノードを追加する

kubeadmでクラスタ構築するとworkerノード追加のためのコマンドが表示されて簡単にノード追加できるが、使用するtokenの期限が(デフォルトでは24時間で)切れてしまうため、同じ引数でkubeadm joinしてもこの通り、失敗する。 [zaki@k8s-worker03 ~]$ sudo ku…

[kubectl / oc] get eventなどの一覧表示を時系列で表示してみる(--sort-by)

大抵のオブジェクトには、作成されたタイミングで.metadata.creationTimestampという定義が付与されます。 これを、kubectl/ocの汎用オプションの--sort-byに指定することで、出力の表示順を作成日でソートできます。 使い勝手が良いのは、デフォルトでは時…

[Kubernetes] kubeadmを使ってCentOSへk8sクラスタをデプロイしてみた (firewalld有効版)

今回は(今回も)CentOS 7.7 1908 Minimalを素で入れて、公式ツールであるkubeadmを使ってKubernetesクラスタを作ってみた。 何だかんだで一度もやったことがなかった基礎… kubernetes.io kubernetes.io 追記2: masterを複数ノードにする場合は、kubeadm init…

[oc / kubectl] run --commandを使って何もしないpodや一定時間後に任意のリターンコードで終了するpodをデプロイ

tail -f /dev/nullやsleep,exitを使ってデバッグや動作確認用に。 run実行で作成されるworkloadsリソースについては以下も参照。 zaki-hmkc.hatenablog.com usage runningするだけで何もしないpod 60秒後に実行完了するpod 60秒後にエラーで完了するpod 任意…

oc runでPod単体デプロイするとoc adm drainで退避できないので注意 (作業ログ)

oc run --restart=NeverでPod単体で動作させると、oc adm drainでノードをサービスアウトさせようとしても、Podが退避されないのでその様子の実行ログ。 この記事の補足的な内容。 zaki-hmkc.hatenablog.com 環境 [zaki@okd4-manager ~]$ oc version Client …

[oc / kubectl] runでデプロイできるpodとその親リソースについて (廃止予定オプション--generatorの動作)

oc runを使ったPodのデプロイについて。 OpenShift v4では、oc runを使ってDeploymentConfigやDeploymentを作成するとDEPRECATEDの警告が表示さるようになった。(正確にはv4.1は触ったことないからわからない) k8sバージョン1.18で無くなる模様。 github.com…

[oc / kubectl] コマンドや引数の補完設定 【completion】

bashを使っているのであれば $ source <(oc completion bash) とか $ source <(kubectl completion bash) で。 OCP v3でmasterノードでばかり作業してると、たまにCRCとかクラスタ外部サーバで作業すると、「あれ?」となってしまうので備忘録。 なお、実行…

[kubectl / oc] custom-columnsを指定して欲しい情報だけリストアップする

custom-columnsの簡単な使い方について。 お題 OCP v4の場合 OCP v3の場合 jsonpath(参考) custom-columns 凡例 お題 例えばcluster-admin権限でログインしてる状態でoc get sccすると、、、 OCP v4の場合 $ oc get scc NAME AGE anyuid 54d hostaccess 54d …

[kubectl / oc] jsonpathフィルター芸

前の記事でjsonpathを使って特定のカラムのみをピックアップする指定について説明したけど、条件を指定するフィルターも使えます。 zaki-hmkc.hatenablog.com kubernetes.io 使用するのは?()という書式。 全体 例1 コンテナ名が"mysql"のpod名を出力 例2 sta…