2021年7月13日火曜日

k8s for Raspberry pi4

k8s(ver: 1.21.1)の導入メモを記載する。

◻️SDカードの設定

1)インストール先のSDカードに移動する。

touch ssh


2)修正対象のファイルにペーストを行う

cd /Volumes/boot

vi cmdline.txt

===========

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=4d3ee428-02 rootfstype=ext4 cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh

===========


PARTUUIDについては、cmdline.txtに記載があった情報を複写する。



◻️raspberry piにログインする

以下の方法で該当するraspberry piにログインする。

ssh pi@192.168.xx.xx


◻️OSのアップデート

sudo apt-get upgrade

sudo apt-get install rpi-update


◻️raspi-configの設定

以下を実施を行う

sudo raspi-config


5 Localisation Optionsを選択














L1 Localeを選択











以下言語を選択



































EUC-JPを選択 














再度、5 Localisation Optionsを選択














L2 Timezoneを選択










Asiaを選択








Tokyoを選択




































6 Advanced Optionsを選択











A1 Expand Filesystemを選択

①Yesを選択

②rebootを実施














3)固定IPの設定を行う。

vi /etc/dhcpcd.conf

以下、編集する。














ホスト名の編集を行う

sudo vi /etc/hostname


例)master nodeの場合






ホストの編集を行う。

sudo vi /etc/hosts














4)再起動を行う

sudo reboot


◻️update関連

sudo apt updaye -y

sudo apt update -y

apt upgrade -y

sudo apt upgrade -y


◻️swap off

スワップを切ることで、SDカードの寿命を伸ばせるので実施してみる

sudo dphys-swapfile swapoff

sudo dphys-swapfile uninstall

sudo update-rc.d dphys-swapfile remove

sudo apt-get purge -y --auto-remove dphys-swapfile

sudo swapoff -a

swap off



◻️master & nodeで実施
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

echo "deb [arch=armhf] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
     $(lsb_release -cs) stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list

sudo apt-get update -y
sudo apt-get install docker-ce -y


curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg|sudo apt-key add -
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kube.list
sudo apt-get update -y && sudo apt-get install kubelet kubeadm kubectl -y

 
◻️master & nodeで実施
再起動を行う(理由:dockerコマンドが使用可能にするため)


◻️masterで実施 
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml


◻️nodeで実施
kubeadm join 192.168.13.10:6443 --token hnw70p.6dorxjmyxl78espy \
        --discovery-token-ca-cert-hash sha256:cf8cca43da742fb4ca66e03127b35cff4f00ef3375467f2c1dd24ec7b1c18911

192.168.13.10:6443は、k8sのMasterのIP addressになる。

以下の設定後の様子。


2021年7月9日金曜日

grafana for アラート(Line通知)

 garafanaにて、Line通知を行ってみる。

1)以下に、移動する。
Alert > Notification channels > NewChannel

2)以下を設定する

■New Notification Channel

①Name: 適当な名前にする

②Type: 今回は、Lineを選択

③Default(send on all alaets):   今回はOFF

④Include image:         ONにする


■LINE notift settings

①Token: 以下のサイトから作成した。(取得方法は、割愛)

https://notify-bot.line.me/ja/






























以下、Lineにテスト送信を行ってみた。



raspberry pi4に刷新

raspberry pi3ベースだったのをraspberry pi4に刷新した。 

1) 短いケーブルにしたかったので自作する。
2) raspberry pi3 ->raspberry pi4に刷新















2021年7月7日水曜日

Prometheus&Grafanaの導入(for Raspberry pi)

 現時点で、Prometheus&Grafanaは、ARMベースのCPUで稼働してないので
ソースコードを使って導入を行ってみる。

■go-langの導入
1)go langをインストールする。
apt install golang








2)環境変数を設定する。

# cat >> ~/.bashrc << 'EOF'

> export GOPATH=$HOME/go

> export PATH=$PATH:$GOPATH/bin

> EOF








3)上記で設定内容を反映させる。

source ~/.bashrc





4)kube-state-metricsのARM用のイメージをビルドしている人のソースコードが
あったので使うことにする。

git clone https://github.com/carlosedp/cluster-monitoring



5)read meに記載している内容のい従ってmakeを実施。

make vendor

6)マニフェストを適応させる。

kubectl apply -f ./manifests/setup/

kubectl apply -f ./manifests/


7)以下、各種podが作成されたことが把握できる。

kubectl get pods -n monitoring



■prometheusの修正を行う

1)マニュフェストの内容を見直しを行う。

sudo vi manifests/prometheus-service.yaml 

①NodePortを追記

②30909を追記



2)再適用を行う

kubectl apply -f manifests/prometheus-service.yaml 




■grafanaの修正

1)マニュフェストの修正を行う。

sudo vi manifests/grafana-service.yaml 

①NodePortを追記

②30300を追記











































2)再適用を行う。

kubectl apply -f manifests/grafana-service.yaml 



■prometheus(2)の編集
1)マニュフェストの内容を見直しを行う。
①externalUrl: http://prometheus.192.168.13.10(master nodeのIP).nip.ioに修正
②retention: 5dに修正する。


































2)最適応を行う
kubectl apply -f manifests/prometheus-prometheus.yaml



3)各種ポートが適応できているようだ。







4Grafanaのログインも可能に




5)Prometheusとの連携設定を行う







6)Prometheusを選択
















7)先ほど、Prometheusのマニュフェストで修正したポート(30909)を指定する



8)ダッシュボードの指定:

Prometheus 2.0 Statsを選択




9)以下のサイトを参考に、カスタマイズされた物をインポートする。
(参照先)

https://www.conversion.co.jp/technology/blog/-/detail/=/blog_id=7390284


(Grafana Dashboard)

https://grafana.com/grafana/dashboards


10)以下にて、監視画面の完成になる。



11)リソースメータも表示された



■各種podについて

①prometheus-operator-alermanager

Alert Manager 本体


②prometheus-operator

Prometheus Operator 本体


③grafana

Prometheusのメトリクス可視化用のGrafana 本体


④kube-state-metrics

Kubernetes のオブジェクトごとのメトリクス出力用 exporter


⑤prometheus-node-exporter

ノードごとのメトリクス出力用 node exporter


⑥prometheus-operator-prometheus

Prometheus 本体











2021年7月2日金曜日

Grafana x Prometheus連携

Prometheus:
イベントの監視と警告に使用される無料のソフトウェアアプリケーション

Grafana:
分析およびインタラクティブな視覚化を可能にする、マルチプラットフォームで動作するオープンソースのWebアプリケーションである。


イメージ:














1)ホーム画面で、Add your first data souceを選択する。 


2)以下、Prometheusを選択











3)次に、PrometheusのURLを指定する。







































4)インポートを行うことで、完了となる。





prometheus for Raspberry pi

Raspberry piによるprometheusの導入方法を記載。


1)インストールを行う。
sudo apt install prometheus prometheus-node-exporter -y

2)簡単ながら、実施に設定を行ってみる






Grafana for Raspberry pi

Raspberry piによる、Grafanaの導入を行ってみる。


1)ソースコードのダウンロードとインストールを行う。
wget https://dl.grafana.com/oss/release/grafana_7.0.4_armhf.deb
sudo apt install ./grafana_7.0.4_armhf.deb

2)grafanaのサービスをスタートさせる。
sudo systemctl status grafana-server.service

3)ログインを行う
以下、初期値になる。
ID   :admin
Pass:admin















Lambda + SSM Run Commandで、数十台のEC2のuserdata結果を一括確認する

コードを1枚貼って、テストイベントを実行するだけで、 全台の確認結果が返ってくる手順です。 [ゴール] Nameタグが web-* / api-* / batch-* のEC2すべてに確認コマンドを流し、 NGの台だけ を結果に表示します。確認対象のuserdata(Ubu...