Kubernetes

手元のクラスタ(kind)でgvisorを試す

kindでgvisorを使用できるようにする。 nodeに入る。(自分のケースでは1node構成なので、control-planeになっている。) docker exec -it kind-control kind-control-plane bash gvisorをインストールする。 以下はInstallation - gVisorにあるインストール…

Kubernetesにおけるetcd内のデータの暗号化

問題点:etcdには平文でデータが格納されている。 k8sの各種マニフェストははetcdに平文で保存されている。 secretであっても平文で保存されている。 twoという文字列を隠蔽したくてone-plus-oneというsecretを作成する。 $ k create secret generic one-plu…

NodeRestriction

NodeRestrictionはKuberntesによって提供されるAdmissionPluginでkube-api-serverで--enable-admission-plugins=NodeRestionを指定することで有効化できる。 kubernetes.io 効果1 nodeが他のnodeのラベルを変更することを禁じる。 効果2 nodeにおけるnode-re…

curlでKubernetesAPI

方法 caとclient-certとclient-keyをkubeconfigから抽出する。 k config view --raw | yq .clusters[0].cluster.certificate-authority-data | tr -d '\n' | base64 -d > ca k config view --raw | yq .users[0].user.client-certificate-data | tr -d '\n' …

Kubernetes Authorization

authorization mode kubernetesではauthorizationに関していくつかのモードを提供してくれている。 authorization modeの指定はkube-api-serverで--authorization-modeを使って行う。 よくある、設定は--authorization-mode=Node, RBACになっている。 Kubern…

コンテナのPID namespaceの共有

docker runコマンドの--pidオプションで使用するPID namespaceを指定できる。 このオプションに与える引数は以下の2パターン container:CONTINAER_ID host container:XXXを指定すれば、他のコンテナとPID namespaceを共有できる。 $ docker container run -…

ClusterRoleとRoleBindingの組み合わせ

Namespaced Resource Role Rolebinding Cluster Resource ClusterRole ClusterRolebinding Role系のリソースとBinding系のリソースの組み合わせ 以下は直感的に理解できる。 RoleとRoleBindingの組み合わせ(青線) ClusterRoleとClusterRoleBindingの組み合…

calico cni pluginのADD処理を追ってみる

calicoのCNIが何をしているのかを理解するために、コードリーディングする。 前提としてk8sで動作させている場合の挙動のみを追うようにする。 calicoの提供するCNIプラグイン calicoの提供するCNIプラグインはcalico-cniとcalico-ipamの2つがある。 本記事…

MicroK8sのクライアント環境セットアップ

nodeとして動いているマシン以外のマシンをMicroK8sのクライアント環境としてセットアップする。 より具体的にはtestuserというユーザでnodeとして動いていないマシンでkubectl経由でpodの情報を取得することをこの記事のゴールとする。 MicroK8sのクラスタ…

MicroK8sでマルチノードクラスタのセットアップ

MicroK8sでマルチノードクラスタをセットアップする MicroK8sのインストール VM1でmicrok8sをインストール VM1 $ sudo snap install microk8s --classic VM1 $ sudo usermod -a -G microk8s $USER VM1 $ sudo chown -f -R $USER ~/.kube VM1 $ microk8s stat…

kubernetes④ subresource

CRでsubresourceを利用してみる。[1] subresouce k8sのresourceはそれぞれ独立したAPIエンドポイントを持っており、APIサーバー経由でリソースの取得・作成・変更・削除をおこなうことができる。 subresourceはリソースのプロパティにも独立したAPIエンドポ…

kubertes③ additionalPrinterColumns

additionalPrinterColumnsというものを使うとgetに新しいフィールドを追加できる。 方法 以前の記事で紹介したものを拡張して使う。 kubectlはk8sのマスターノードにあるAPIサーバのクライアント、kubectl get はAPIサーバーから取得したデータをターミナル…

kubertes② 〜CRを作ってみる〜

CR (Custom Resource) KubernetesAPIのエンドポイントで特定のAPIオブジェクトのコレクションを保持するもの。 デフォルトではpodとかdeploymentとかあるが、これを自分でも作れちゃうということ。 実態としてはユーザが定義したデータ構造およびそれの入出…

kubertes① ローカル環境セットアップ

kindで検証環境を作る context list context kubectl config get-contexts show current context kubectl config current-contexts switch context kubectl config use-context CONTEXT_NAME kind デフォルトのクラスタでとりあえずpodをrunしてみる。 kubec…