2020年9月4日金曜日

helm by windows

helmとは、k8s上でyamlを作成する必要がなく
簡単にパッケージ感覚でインストールをしてくれるツールになる。

前提:

docker desktop(wsl2)

参照先:
https://helm.sh/ja/docs/intro/using_helm/


1)helmのインストールを実施
choco install kubernetes-helm

2)helm導入後に以下のコマンドで、パッケージの検索が可能
helm search wordpress

3)実際にwordpressを導入してみる

例:helm install [任意の名前] [パッケージ名]

helm install wordpress stable/wordpress


念のため、導入されているのか確認してみる



2020年9月1日火曜日

nodeの状態がNot readyの件

 1)追加したnode2のステータスがNotReadyになっている。



2)node2にて、状態の確認を行なってみると、ネットワークのエラーが表示されている



3)masterにて、flannelの導入を行なっていなかったので導入を行う。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml




4)再度、マスターにて、確認を行うとReadyになっていることが把握できる。



5)念のため、Flannelの状態も確認してみる。(問題なく、稼働しているようだ!)







2020年8月21日金曜日

k8s yamlに記載する項目について

yamlに記載する内容についておさらい。 


Kubernetesオブジェクトを.yamlファイルに記載して作成する場合、下記に示すフィールドに値をセットしておく必要があります:

  • apiVersion - どのバージョンのKubernetesAPIを利用してオブジェクトを作成するか
  • kind - どの種類のオブジェクトを作成するか
  • metadata - オブジェクトを一意に特定するための情報、文字列のnameUID、また任意のnamespaceが該当する
  • spec - オブジェクトの望ましい状態

specの正確なフォーマットは、Kubernetesオブジェクトごとに異なり、オブジェクトごとに特有な入れ子のフィールドを持っています。Kubernetes API リファレンスが、Kubernetesで作成できる全てのオブジェクトに関するspecのフォーマットを探すのに役立ちます。 例えば、Podオブジェクトに関するspecのフォーマットはPodSpec v1 coreを、またDeploymentオブジェクトに関するspecのフォーマットはDeploymentSpec v1 appsをご確認ください。


参照先:
https://kubernetes.io/ja/docs/concepts/overview/working-with-objects/kubernetes-objects/

2020年8月17日月曜日

nodeのメンテナンス方法について

1)masterにログインして、対象のノードに対して以下のコマンドを投入する。

kubectl drain [node名]
kubectl uncordon [node名]


参照ページ:
https://kubernetes.io/docs/tasks/administer-cluster/cluster-management/#maintenance-on-a-node

2020年8月16日日曜日

nodeの切り離し方法について

1)Masterにログインする


2)以下のコマンドでmasterから切り離しを行う
kubectl delete node [node名]



nodeのステータスがNotReadyからReadyにする対策方法

Master側でkubectl get nodeを実施した時に
一部のnode(rasp-node2)だけNotReadyになっているので対処を行う。 

rasp-node2にログインする

1)systtemctl status kubeletを実施したところ
以下のメッセージが表示される

Unable to update cni config: No networks found in /etc/cni/net.d


2)以下のコマンドを実施する

systemctl daemon-reload
systemctl enable kubelet && systemctl restart kubelet


再度、Masterにログインして、kubectl get nodeを実施したところ
以下の結果になる


2020年8月14日金曜日

新規で、nodeを追加時に行うこと

新規で作成したNodeをMasterに参加させたい場合、以下のコマンドを行うこと 


kubeadm token create --print-join-command

注意:上記発行後、24時間経過すると使用期限を失われるので
再度、kubeadm token createコマンドを投入すること!!



kubectlが使用不可になっている件

 1)kubectlコマンドを投入すると、以下のメッセージが出てしまい接続拒否されてします。




2)journalctlコマンドを投入する

swapが有効になっているのでkubectlコマンドの稼働が出来ないようだ



3)swapを完全に停止を行う

sudo systemctl stop dphys-swapfile

sudo systemctl disable dphys-swapfile



4)念のためにリブートを実施して、kubectlコマンドを実施すると

想定通りに利用可能であることを確認


注意:

システム起動直後に、kubectlコマンドを投入すると、接続拒否されるので

数分待ってから実施する。



2020年7月2日木曜日

チューニング for nginx(その2)

 configの設定例

=================
user www-data;
pid /var/run/nginx.pid;
worker_processes auto;
worker_rlimit_nofile 100000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
events {
    worker_connections 2048;
    multi_accept on;
    use epoll;
}
http {
    server_tokens off;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    access_log off;
    error_log /var/log/nginx/error.log crit;
    keepalive_timeout 10;
    client_header_timeout 10;
    client_body_timeout 10;
    reset_timedout_connection on;
    send_timeout 10;
    limit_conn_zone $binary_remote_addr zone=addr:5m;
    limit_conn addr 100;
    include /etc/nginx/mime.types;
    default_type text/html;
    charset UTF-8;
    gzip on;
    gzip_http_version 1.0;
    gzip_disable "msie6";
    gzip_proxied any;
    gzip_min_length 1024;
    gzip_comp_level 6;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/json;
    open_file_cache max=100000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}
====================
[解説]
worker_processes auto; 
-> Nginx本体のプロセス数、autoにしてnginx内部判定に任せるのは賢明

worker_rlimit_nofile 100000; 
-> workerプロセスが最大に開けるファイル数の制限。このように設定したら、ulimit -a以上の
ファイル数を処理できるようになり、too many open files問題を回避できる

worker_connections 2048; 
-> 一つのworkerプロセグが開ける最大コネクション数

multi_accept on; 
-> できるだけクライアントからのリクエストを受け取る

use epoll; 
-> Linuxカーネル2.6以上の場合はepoll、BSDの場合kqueue

server_tokens off; 
-> セキュリティ対策です、エラー画面のnginxバージョン番号を非表示

sendfile on; 
-> ハードディスクio処理とsocket-io処理のバランスを取るため、onにしてください。

tcp_nopush on; 
-> 一つのデータパッケージに全てのヘッダー情報を含まれる

tcp_nodelay on; 
-> データをキャウッシュしないで、どんどん送信させる、リアルタイムアプリに最適

keepalive_timeout 10; 
-> keep-aliveタイムアウト時間、少し短くしとく

client_header_timeout 10;
 -> クライアントタイムアウト時間、少し短くしとく

client_body_timeout 10; 
-> クライアントタイムアウト時間、少し短くしとく

reset_timedout_connection on; 
-> 非アクティブクライアントのコネクションをクロースする

send_timeout 10;
-> クライアントへの送信タイムアウト

limit_conn_zone $binary_remote_addr zone=addr:5m; 
-> 各種keyの共有メモリ設定

limit_conn addr 100; 
-> keyの最大コネクション数、例:addrは100に設定する
(一つのIPアドレスは100コネクションんをリクエストできる)

gzip on; 
-> 転送内容をgzipで圧縮、推薦

gzip_http_version 1.0; 
-> 圧縮httpバージョン

gzip_disable "msie6"; 
-> ie6圧縮禁止

gzip_proxied any; 
-> 全てのプロキシも圧縮

gzip_min_length 1024; 
-> gzip 圧縮を行うデータの最小サイズです。これより小さいデータは圧縮されません。

gzip_comp_level 6; 
-> 圧縮レベル設定、1-9

gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/json; 
-> 圧縮ファイルタイプ

open_file_cache max=100000 inactive=20s; 
-> キャッシュをオープンする同時に最大数とキャッシュ時間も指定する、20秒以上の非アクティブファイルをクリアする

open_file_cache_valid 30s; 
-> open_file_cacheの検知間隔時間をチェックする

open_file_cache_min_uses 2; 
-> open_file_cacheの非アクティブファイルの最小ファイル数

open_file_cache_errors on; 
-> ファイルのエラー情報もキャッシュする



設定したら、nginxサービスを再起動して有効させる。

sudo service nginx restart

2020年6月4日木曜日

docker-compose(wordpress編)

nginx x php-fpmベースのdocker-composeを作成してみた



公式:


1行目:version
対応したDocker Engineに沿って記載する
(2020/6月の時点で、バージョン2.x以上で良いと思う)

参照先:



2行目:service
各種ミドルウェア(今回の場合、dbとnginxとwordpressを指す)を記述する前に
宣言的に記載する。

3行目:db
dbのコンテナを示す。

4行目:image
docker imageを示す。
主にdocker hubのレジストリサービスに登録しているimageから取得している。

5行目 - 6行目:Volumes
マウントしたい、ディレクトリ を示す

7行目:restart
実行時に再起動するのか決める

8行目 - 12行目:environment
環境変数を示す。

13行目 -14行目:port
ポート番号を示す。


16行目:wordpress
ミドルウェアを指す

17行目:image
wordpressのimageを指定した。

18行目:restart
実行時に再起動するのか決める

19行目 - 21行目:environment
環境変数を示す。

22行目 - 24行目:Volumes
マウントしたい、ディレクトリ を示す

26行目:nginx
ミドルウェアを指す

27行目:image
nginxのimageを指定した。

28行目 - 29行目:ports
ポート番号を示す

30行目 -34行目:Volumes
マウントしたい、ディレクトリ を示す

35行目:restart
実行時に再起動するのか決める

36行目 - 37行目:environment
環境変数を示す。



■メモ

バージョン3からdepends_onは不要になったようだ>

参照先:
https://matsuand.github.io/docs.docker.jp.onthefly/compose/compose-file/




2020年6月1日月曜日

raspberry pi for k8s x docker-compose

以前にも記載したが、別の方法を記述してみる。

git clone https://github.com/docker/compose.git
cd compose
git checkout 1.25.3
./script/build/linux
cd dist
./docker-compose-Linux-armv7l version
sudo cp docker-compose-Linux-armv7l /usr/local/bin/docker-compose
cd /usr/local/bin
sudo chown root:root docker-compose
sudo chmod 755 docker-compose

ローカルLLMでコーディングさせるポイント

 簡単な指示で、依頼するとコンテキストオーバーで記憶喪失になって コードの内容が一致しないことが起こるので、work.mdみたいな作業メモを取らせたるのがよい 途中から、別スレッドに再実施する場合でも、work.mdが引き継ぎとして 参照して実施してくれるのがポイント