Opensourcetechブログ

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

kubernetes の検索結果:

kubernetes dashboardを使う

… はじめに 今回は、kubernetes-dashboardを使ってみます。 なお、kubernetesは以下の記事で作成したクラスターを使っています。 DualStack(IPv4 & IPv6)のkubernetesクラスター構築(v1.26.00・ubuntu22.04) https://www.opensourcetech.tokyo/entry/20230314/1678782139 kubernetes-dashboardとは kubernetes-dashboa…

kube-proxyのmodeをiptablesからipvsに変更する

…。 はじめに 前回(kubernetesにおけるPodへの負荷分散状況の確認(Service/Deployment経由))の記事でトラフィックの分散をkube-proxyが担っていることが分かりました。 なので今回さらに深堀りということで、kube-proxyの動作モードをデフォルト(iptables)からipvsに変更してトラフィック分散の挙動を確認してみようと思います。 なお、kubernetesはこちらの記事で作ったものを使っています。 kube-proxy動作モードの…

kubernetesでstatic podを起動させる

… はじめに 今回は、kubernetesでstatic podを起動させてみます。 なお、作業はこちらの記事で作成したkubernetesクラスター v1.26.00で実施します。 static podとは 通常のPod(コンテナ)は、yamlを適用(apply)するとkubernetesのAPIサーバによって起動されます。 Podが起動されるNodeは、nodeSelectorやnodeアフィニティなどで決定されます。 ※詳細は、こちら。 static podはそれとは異な…

kubernetesにおけるPodへの負荷分散状況の確認(Service/Deployment経由)

… はじめに 今回は、kubernetesでPod(コンテナ)へのアクセスってどのような分散がされるのか確認してみます。 具体的には、こんな環境で実施します。 環境構築 まず、以下の記事を参考に"Deployment1"と"Deployment2"を作成します。 nginxコンテナ(Pod)のコンテンツ(index.html)をConfigMapで提供・更新する(kubernetes) https://www.opensourcetech.tokyo/?page=1679832…

kubectl topコマンドを実施する(metrics-serverの導入)

… はじめに 今回は、kubernetes環境でkubectl topコマンドを実施できるようにします。 なお、作業はこちらの記事で作成したkubernetesクラスター v1.26.00で実施します。 kubectl topとは kubectl topにあるように、PodやNodeのCPUとメモリーの使用量を表示するコマンドです。 ※https://kubernetes.io/ja/docs/tasks/debug/debug-cluster/resource-metrics…

nginxコンテナ(Pod)のコンテンツ(index.html)をConfigMapで提供・更新する(kubernetes)

…ちらの記事で作成したkubernetesクラスター v1.26.00で、 nginxコンテナ(Pod)のコンテンツファイル(index.html)をConfigMapを使って提供、またコンテンツファイルの更新をやってみます。 実施する内容 以下のように進めていきます。 ①コンテンツファイル index.html(ConfigMap)の作成 ※Deploymentで指定する ②nginxコンテナ(Deployment)のデプロイ ③コンテナの公開(Service) ④クライアン…

NGINX Ingress Controller + Ingressによるサービス公開(kubernetes v1.26)

…ちらの記事で作成したkubernetesクラスター v1.26.00で、 NGINX Ingress ControllerとIngressを使って外部クライアントへのサービス公開をやってみます。 なお、サービス公開はIPv4のみ(Single Stack)とIPv4&IPv6(Dual Stack)で行います。 Ingressとは Ingressとは、クラスター内のServiceに対する外部からのアクセス(主にHTTP)を管理するAPIオブジェクトです。 ※https://k…

MetalLBとService(type:LoadBalancer)による外部クライアントへのサービス公開(kubernetes v1.26.00 on ubuntu22.04)

…ちらの記事で作成したkubernetesクラスター v1.26.00で、 MetalLBとService(type:LoadBalancer)を使って外部クライアントへのサービス公開をやってみます。 なお、サービス公開はDual Stack(IPv4&IPv6)で行います。 Serviceとは kubernetesにおけるServiceは、起動済みのPod(コンテナ)へと外部からアクセスする手段の一つであり、以下の4種類があります。 ClusterIP:kubernetesク…

Dual Stack環境のkubernetesにおけるServiceの挙動

…l Stack環境のkubernetes(v1.26.0)におけるServiceの挙動(IPv4とIPv6のどっちが有効になるの?)に関するメモです。 なお、Dual Stack環境のkubernetesクラスターはこちらで構築したものを使っています。 やってみること 以下のようにkubernetes上にnginxのDeploymentsがあるので、 それを公開(Service)して挙動を確かめます。 ※kubectl create deployments nginx --i…

kubectlコマンドの補完やalias

LinuCエヴァンジェリストの鯨井貴博@opensourcetechです。 はじめに kubectlコマンドの補完に関するメモです。 こちらを参考にしています。 Linuxのbashなどであればファイルパスなどtabキーで補完できますが、 同じようにkubectlも使えれば楽だよなぁっていう技です。 CKAの試験時にも使える便利な技なので、覚えておくといいかと思います。 やってみる 具体的には、以下のような場面で補完出来れば操作が楽になります。 ※kubectl get po…

DualStack(IPv4 & IPv6)のkubernetesクラスター構築(v1.26.00・ubuntu22.04)

… はじめに 今回は、Kubernetes v1.26.00のDual Stack(IPv4 & IPv6の両方使える)構築を行っていきます。 ※kubernetesでは、v1.16からDual Stackが利用可能となっている。 構築する環境 ・Clusterの構成 Master Node 1台 & Worker Node 2台 ※KVM上のVMを使いました。 virt-install --name master01 --ram 4096 --disk size=40 --v…

kubectlで"error: You must be logged in to the server (Unauthorized)"となって認証されない場合の復旧方法

…cetechです。 kubernetesでerror: You must be logged in to the server (Unauthorized)となって認証が通らなくなった際の復旧に関するメモです。 はじめに 具体的には、以下のようになった場合です。 そのままですが、Unauthorized(認証出来ん!)っていうてますね。 kubeuser@kubenewmaster1:~$ k get nodes error: You must be logged in to…

kubernetesクラスター(api-server)にREST API(curlなど)でアクセスする

…echです。 今回はkubernetesクラスターのapi-serverにREST API(curlなど)でアクセスしてみます。 はじめに kubernetesクラスターにおけるアクセスの認証では、通常configファイル($HOME/.kube/configなどにある)が使われています。 kubeuser@kubenewmaster1:~$ cat .kube/config apiVersion: v1 clusters: - cluster: certificate-au…

リモートアクセス(SSH/RDPなど)の踏み台サーバ Apache Guacamoleを使ってみる

…ion name="kubernetes newmaster1"> <protocol>ssh</protocol> <param name="hostname">192.168.1.201</param> <param name="port">22</param> <param name="username">user01</param> <param name="password">01010101</param> <param name="ignore-cert">tr…

CLOUD NATIVE TRAIL MAPを読み解く!

…、2018年頃から kubernetes を意識し始めました。 www.opensourcetech.tokyo www.opensourcetech.tokyo また、2022年3月20日にCKA(Certified Kubernetes Administrator)を取得しました。 そして、2022年12月よりkubernetesの研修販売を開始したのですが、 改めてkubernetesが含まれる CLOUD NATIVE TRAIL MAPを読み解き、 Cloud Na…

KubeDay Japan 2022に参加してきました!

… CNCFが開催するKubernetesやCloud Nativeに関するカンファレンスで、12/7にインターコンチ(横浜)で開催されました。 events.linuxfoundation.org https://events.linuxfoundation.org/kubeday-japan/ インターコンチ、初めて来ましたがいいところですね♪ 会場は、3F。 受付・スポンサーブース(夕方はレセプション会場となる)・セッション会場(2部屋)が配置されています。 キーノートセ…

初めてのAKS(Azure Kubernetes Service) on Microsoft Azure

…AKS(Azure Kubernetes Service)を使ってみます! https://qiita.com/advent-calendar/2022/azure AKSとは? Microsoft Azure上で利用できるKubernetesのマネージドサービスです。 ※kubernetes環境を用意してくれるので、利用者はアプリケーションのデプロイすればいいだけというものです。 https://azure.microsoft.com/ja-jp/free/ アカウントを持…

kubeadmで構築したkubernetesクラスターのアップグレード(v1.23 to v1.24)

…に https://kubernetes.io/blog/2022/05/03/kubernetes-1-24-release-announcement/ 5/3にkubernetesの新バージョンStargazerがリリースされました。 なので手元にあるv1.23のKubernetesクラスターを、v1.24にアップグレードします。 アップグレード方法は、以下の公式ドキュメントに記載されています。 https://kubernetes.io/docs/tasks/admin…

kubenetesクラスター(v1.22.0)の構築(kubeadm) on Ubuntu Server 20.04.3 LTS

…)にkubeadmでkubernetesクラスターを構築してみます。 KVMでのVM作成方法 virt-install --name kube_newmaster --ram 4096 --disk size=50 --vcpus 2 --os-variant ubuntu20.04 --network bridge=virbr0 --graphics none --console pty,target_type=serial --location /home/ubuntu/…

helmを使ったkubernetesクラスターへのサービス展開

…は、helmを使ってKubernetesのクラスターへサービスを展開してみます。 helmとは? そのままですが、kubernetes用のパッケージマネージャです。 分かりやすい例だと、RPM系におけるyum・Debian系におけるaptなどと同じような関係となります。 https://helm.sh/ja/ 少し補足しておくと、CNCF(Cloud Native Computing Foundation)のあるプロジェクトの中で、Graduated(成熟したプロジェクト)の…

kubernetes APIリソース一覧とショートネームについて

…hです。 はじめに kubernetesでkubectlのコマンド入力を省略形(ショートネーム)で行っている方をみかけたので、 ちょっと調べてみました。 例えば、以下のような使い方です。 kubeuser@kubemaster1:~$ kubectl get po NAME READY STATUS RESTARTS AGE nginx-6c67f5ff6f-5vbvf 1/1 Running 0 6d7h nginx-6c67f5ff6f-lfl8l 1/1 Running…

LENS(開発統合環境)でkubernetesクラスターを操作する

…S(開発統合環境)でkubernetesクラスターを操作するメモです。 以下の記事で作成したkubernetesクラスターを追加対象としています。 kubenetesクラスターの構築(kubeadm) on Ubuntu Server 20.04.3 LTS https://www.opensourcetech.tokyo/entry/20211201/1638364936 LENSとは? Mac OS/Linux/Windowsなどにインストールして、 kubernetes…

calico.yamlに書かれていること

…e_type": "kubernetes", "nodename": "__KUBERNETES_NODE_NAME__", "mtu": __CNI_MTU__, "ipam": { "type": "calico-ipam" }, "policy": { "type": "k8s" }, "kubernetes": { "kubeconfig": "__KUBECONFIG_FILEPATH__" } }, { "type": "portmap", "snat": tru…

kuernetes yamlファイルの書き方

… はじめに 今回は、kubernetesを使う際に必要となるyamlファイルの書き方に関するメモです。 何となくこんな感じで書けばいいんだろうと、他の方が使っているファイルを真似ていますが、 「ルールってあるの?」と思ったので調べてみました。 yamlの例 公式サイトを見ると、 以下の例が載っています。 apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 kind: Deployment metad…

Podが"Pending"のまま起動しない原因(kubernetes)

…hです。 はじめに KubernetesでPodが"Pending"のまま起動しない原因に関するメモです。 事象の発生 以下のように、Deployment(Pod)を含むをapplyします。 kubeuser@kubemaster1:~$ kubectl apply -f nginx.yaml deployment.apps/nginx created kubeuser@kubemaster1:~$ kubectl get pods NAME READY STATUS RES…

"Terminating"のまま削除できないPodの強制削除(kubernetes)

…hです。 はじめに KubernetesでPodが"Terminating"のまま、削除できない事象を回避するメモです。 事象の発生 以下のように、DeploymentとPodがあるので削除します。 kubeuser@kubemaster1:~$ kubectl get all NAME READY STATUS RESTARTS AGE pod/nginx-6c67f5ff6f-6hkw8 1/1 Running 0 2d17h pod/nginx-6c67f5ff6f-7…

kubernetesのデータベースetcdをバックアップする

… はじめに 今回は、Kubernetesのデータベースであるetcdのバックアップです。 etcdはkubernetesに関する構成情報などを格納しているので冗長構成としますが、 さらに定期的なバックアップをして耐障害性を高めます。 データのありか etcdのデータ格納先ですが、etcd導入に使われたyamlファイルに記載されています。 具体的には、19行目にある" - --data-dir=/var/lib/etcd"です。 kubeuser@kubemaster1:~$ …

Kubernetes API-Serverへkubectlではなく、curl(http api)でアクセスをする方法

…chです。 今回は、Kubernetesでkubectlコマンドではなく、curl(http api)を使ってアクセスする方法の紹介です。 はじめに kubernetesでは、Pod(コンテナ)などの状態をkubectlコマンドで取得しますが、 クラスターの内部ではAPI-Serve経由で通信が行われています。 この代わりに、apiのURLを直接指定することで同様のことを実施することが可能です。 認証情報の準備 では、kubectlで情報を取得するときにはどこにある認証情報が…

kubenetesクラスターの構築(kubeadm) on Ubuntu Server 20.04.3 LTS

…Mにkubeadmでkubernetesクラスターを構築してみます。 今回構築する構成ですが、以下になります。 なお、kubernetes公式の構築ドキュメントは、以下です。 https://kubernetes.io/ja/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ ここからはクラスターに参加する全ノードで実施します。 始める前に まず、インストール開始前の確認です。 swapが有効になっ…

etcdを使ってみる!

… etcdといえば、kubernetesで使われているkey value store(クラスタの全情報を持っている)として有名です。 https://kubernetes.io/ja/docs/concepts/overview/components/ 本家サイトは、以下。 https://etcd.io/ key value storeとは? キーバリューストア、色々なところで聞きますが、いまいちピンときづらいですね。 なので、表(RDBやExcel)と比較すると、以下のよ…

Opensourcetech by Takahiro Kujirai