Opensourcetechブログ

OpensourcetechによるNGINX/Kubernetes/Zabbix/Neo4j/Linuxなどオープンソース技術に関するブログです。

kubernetes の検索結果:

Podに環境変数を渡す方法(kubernetes)

…hです。 はじめに KubernetesのPodへ環境変数を渡す方法に関するメモです。 その1 env/valueで定義する root@rke2-1:~# kubectl explain pod.spec.containers.env KIND: Pod VERSION: v1 FIELD: env <[]EnvVar> DESCRIPTION: List of environment variables to set in the container. Cannot be …

hostPathによるPodへのデータ共有(kubernetes)

…hです。 はじめに Kubernetes volume機能のhostPathを使ったデータ共有に関するメモです。 やってみる 早速、やってみます。 root@rke2-1:~# cat pod10.yaml apiVersion: v1 kind: Pod metadata: name: testweb spec: containers: - name: testweb image: nginx volumeMounts: - mountPath: /tmp/aaa name…

LivenessProbe/ReadinessProbe/StartupProbeを使ってみる(kubernetes)

… はじめに 今回は、kubernetesでLivenessProbe・ReadinessProbe・StartupProbeを使ってみます。 それぞれの機能ですが、以下の通りとなります。 LivenessProbe:Pod内コンテナが期待されるサービス応答をするかどうか ReadinessProbe:Pod内コンテナのサービスレベルでの応答可否 StartupProbe:上記2つを開始させる前のコンテナ初回動作確認 本家ドキュメントは、こちら。 https://kuberne…

RKE2(Rancher Kubernetes Engine)のアップグレード

…2(Rancher Kubernetes Engine)の構築 アップグレード手順 以下に記載されています。 構築同様に、基本的にはスクリプトを実行すれば大丈夫です。 https://docs.rke2.io/upgrade/manual_upgrade Server Nodeのアップグレード root@rke2-1:~# curl -sfL https://get.rke2.io | INSTALL_RKE2_CHANNEL=latest sh - [INFO] findi…

RKE2(Rancher Kubernetes Engine)の構築

…回は、RKE2によるkubernetesクラスターの構築をしてみます。 RKE2とは RKE2とは、Rancherの次世代Kubernetes Engineです。 https://docs.rke2.io/ RKE1との違いでいうと、 RKE1ではDockerがCRI(Container Runtime Interface)ランタイムとなっていましたが、RKE2ではcontainerdとなりました。 RKE2構築の前提条件 前提条件は以下に載っており、 今回はUbuntu22…

CKAD対策 Q8&A8

…ntent.com/kubernetes/website/main/content/en/examples/pods/probe/exec-liveness.yamlからダウンロード可 apiVersion: v1 kind: Pod metadata: labels: test: liveness name: liveness-exec spec: containers: - name: liveness image: registry.k8s.io/busybox arg…

CKAD対策 Q7&A7

…ntent.com/kubernetes/website/main/content/en/examples/pods/probe/exec-liveness.yamlからダウンロード可 apiVersion: v1 kind: Pod metadata: labels: test: liveness name: liveness-exec spec: containers: - name: liveness image: registry.k8s.io/busybox arg…

CKAD対策 Q6&A6

…ntent.com/kubernetes/website/main/content/en/examples/pods/probe/exec-liveness.yamlからダウンロード可 apiVersion: v1 kind: Pod metadata: labels: test: liveness name: liveness-exec spec: containers: - name: liveness image: registry.k8s.io/busybox arg…

CKAD対策 Q5&A5

…tive 299d kubernetes-dashboard Active 286d metallb-system Active 298d orange Active 283d kubeuser@master01:~$ kubectl create sa testsa -n ckad serviceaccount/testsa created kubeuser@master01:~$ kubectl get sa -n ckad NAME SECRETS AGE defaul…

CKAD対策 Q4&A4

…tive 298d kubernetes-dashboard Active 284d metallb-system Active 297d orange Active 282d kubeuser@master01:~$ kubectl create ns ckad namespace/ckad created kubeuser@master01:~$ kubectl get ns NAME STATUS AGE blue Active 282d cadvisor Active…

CKAD対策 Q3&A3

…tive 297d kubernetes-dashboard Active 284d metallb-system Active 296d orange Active 281d kubeuser@master01:~$ kubectl create ns ckad namespace/ckad created kubeuser@master01:~$ kubectl get ns NAME STATUS AGE blue Active 281d cadvisor Active…

CKAD対策 Q2&A2

…t kubectl.kubernetes.io/default-container: secretpod kubectl.kubernetes.io/default-logs-container: secretpod kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{},"labels":{"run":"s…

CKAD対策 Q1&A1

…tive 296d kubernetes-dashboard Active 283d metallb-system Active 296d orange Active 281d kubeuser@master01:~$ kubectl create ns ckad namespace/ckad created kubeuser@master01:~$ kubectl get ns NAME STATUS AGE blue Active 281d cadvisor Active…

クラウド環境(Azure/GCP/AWS)におけるkubernetesの永続ボリューム(ストレージ)利用

…GCP/AWS)上のkubernetesにおいて永続ボリューム(ストレージ)として何が使えるのか、調べてみました。 kubernetesにおけるストレージ利用 kubernetesでPodなどの永続的な(消えない)データ保続先を定義する場合、以下があります。 ①Pod → PVC(Persistent Volume Claim、ボリューム使用要求) → PV(Persistent Volume、ボリューム領域) ②Pod → PVC → Storage Class → CSI…

Cloud Native Community Japan Kickoff meetupに参加してきた!

…の動機づけと始め方(Kubernetes Upstream Training)の紹介がありました。 ・kubernetesなどへの貢献はしてみたいがどう始めればいいの? ・コミニケーションのコツ ・記述したコードのレビュー依頼 ・Upstream(開発) Training などの話がありました。 Keycloakの最新開発動向 日立 田畑義之さんから4月にCNCF incubating projectとなった認証・認可を担うOSS「Keycloak」の最新開発動向を紹介があり…

kubernetes環境における送信元IPアドレスの保持(externalTrafficPolicy: Local)

… はじめに 今回は、kubernetes環境における送信元IPアドレスの保持について確認してみます。 以下の記事にあるService(LoadBalancer)環境を使って確認していきます。 https://www.opensourcetech.tokyo/entry/20230316/1678966960 試験環境の構築 まず、試験用の環境構築。 namespace(名前空間)の作成。 kubeuser@master01:~/20231008$ cat ns.yaml ap…

Linux Kernel CapabilityをKubernetes Podで設定する

… はじめに 今回は、kubernetesのPodにLinux Kernel Capabilityを設定してみます。 Linux Kernel Capabilityとは LinuxカーネルのCapability(権限)は、プロセスの特権とアクセス権を制御するための仕組みです。Linuxはセキュリティとアクセス管理の観点から、プロセスが実行できる操作やリソースへのアクセスを制御するためにCapabilityを使用します。 通常、Linuxではスーパーユーザー権限(root権限)を…

kubernetesノードのリソース不足

… はじめに 今回は、kubernetesノードにおけるリソース(CPU/メモリー)不足に関するトピックです。 リソース不足になった場合 Podなどのデプロイでエラーが発生します。 例えば、CPUリソースが不足の場合以下のようなメッセージが出ます。 Warning FailedScheduling 11s (x3 over 5m18s) default-scheduler 0/2 nodes are available: 1 Insufficient cpu. preempti…

Node AffinityによるPod起動ノードの管理(kubernetes)

… はじめに 今回は、kubernetesにおけるNode Affinityを使ったPod起動ノートの制御をしてみます。 Node Affinityとは Node Affinityですが、ノードや既存Podに付与されたラベルを使用してPodを起動するノードを制御する方法です。 同じようなものとして、nodeSelectorがありますが、 それよりも柔軟・複雑な制御が可能です。 ※必須条件・オプション条件の指定や複数条件(OR/AND)の指定など https://kubernet…

nodeSelectorによるPod起動ノードの制御(kubernetes)

… はじめに 今回は、kubernetesにおけるnodeSelectorを使ったPod起動ノートの制御をしてみます。 nodeSelectorとは 仕組みとしてはシンプルで、 ノードに付与されたラベルを指定して、そのノード上にPodを起動するというものです。 https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ nodeSelectorを使ってみる では、実際にやってみましょう! まず…

kubernetesのラベルにbool型を指定する際には準拠するYAMLの仕様(version1.1)に気を付けた方がいい

…hです。 はじめに kubernetesのラベルでbool型を使ってちょっとはまったので、それに関するメモです。 やってみたこと kubernetesのノードに gpu: onというラベルを付与して、nodeSelectorを使うとPodを起動できなかったというものになります。 ラベルの付与。 kubeuser@master01:~/nodeSelector$ kubectl get nodes --show-labels NAME STATUS ROLES AGE VERS…

TaintとTolerationsによるPodの配置管理(kubernetes)

…。 はじめに 今回はkubernetesのPod(コンテナ)を特定のノードに配置しないようにTaintとTolerationを使ってみます。 TaintとTolerationsとは Taintは特定のノードにマーキング(Taintは汚れという意味)をして、 それを許容(Tolerarion)するPodのみ配置(スケジューリング)出来るようにするものです。 Taintをノードに付ける 早速、特定ノードにTaintを付けてみます。 まず、現在のノード状態を確認。 kubeuser…

kubernetesのPod(コンテナ)のパケットキャプチャを取得する方法

…。 はじめに 今回はkubernetesのPod(コンテナ)のパケットキャプチャを取得してみようと思います。 ※kubectlのプラグインksniffを使います。 ksniffとは ksniffは、kubernetesクラスター内の指定Podにおけるパケットキャプチャを可能にするkubectlのプラグインです。 ksniff Capture packets in Kubernetes with this open source tool 当然ですが、手元にkuberneteク…

Kubernetes 1.27の新機能(Feature Gate)を有効化し、InPlacePodVerticalScalingを試してみる

… はじめに 今回は、kubernetes 1.27の新機能(Feature Gate)として実装されたInPlacePodVerticalScalingを有効化して使ってみようと思います。 https://kubernetes.io/blog/2023/05/12/in-place-pod-resize-alpha/ Feature Gateとは KubernetesのFeature Gateは、今後正式機能となる候補の位置づけになります。 https://kubernete…

Prometheus・Grafana・各種Exporter(node-exporter・cAdvisor)によるモニタリング

…ちらの記事で作成したkubernetesクラスター(Ubuntu22.04)を利用しています。 ※注意:今回は主に/tmpで作業しているので、実際に環境構築する場合は/usr/localなど各種ソフトウェアを適した場所に配置ください。 ①Prometheusの構築 まずは、Prometheusのパッケージ入手、解凍などです。 Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-67-generic x86_64) * Documen…

KubernetesクラスターのUpgrade(1.26 to 1.27)

…DualStackのkubernetesクラスターを1.26から1.27にアップグレードします。 アップグレード方法 対象となるkubernetesクラスターは、以下の3台構成(master1、worker2)です。 kubeuser@master01:~$ kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAI…

sternを使った複数Podのログ出力(kubernetes)

… はじめに 今回は、kubernetesのPodログ出力ツール、sternを使ってみます。 sternとは sternとは、kubernetesの複数Podのログを出力できるソフトウェアです。 https://github.com/stern/stern よくあるやり方だと、以下のようにkubectl logsを使って指定したPodのログを確認します。 kubeuser@master01:~$ kubectl logs nginx-6cbc9bb4f5-pfhfz /dock…

Deploymentの耐障害性(自動復旧)とオートスケーリング(kubernetes)

… はじめに 今回は、kubernetesのDeploymentの耐障害性(自動復旧)とオートスケーリングを検証してみます。 なお、kubernetesは以下の記事で作成したクラスターを使っています。 DualStack(IPv4 & IPv6)のkubernetesクラスター構築(v1.26.00・ubuntu22.04) https://www.opensourcetech.tokyo/entry/20230314/1678782139 検証すること 検証する内容は、以下の…

helmをインストールする(kubernetes)

… はじめに 今回は、kubernetesへのパッケージ管理ツールであるhelmをインストールします。 なお、kubernetesは以下の記事で作成したクラスターを使っています。 DualStack(IPv4 & IPv6)のkubernetesクラスター構築(v1.26.00・ubuntu22.04) https://www.opensourcetech.tokyo/entry/20230314/1678782139 レポジトリの設定 まず、レポジトリの設定をします。 kub…

Network Policyによるトラフィック制御(kubernetes)

…してみます。 なお、kubernetesは以下の記事で作成したクラスターを使っています。 DualStack(IPv4 & IPv6)のkubernetesクラスター構築(v1.26.00・ubuntu22.04) https://www.opensourcetech.tokyo/entry/20230314/1678782139 Network Policyとは Network Policyとは、kubernetesクラスター内のPod(コンテナ)間の通信制御の為に使われる…

Opensourcetech by Takahiro Kujirai