2018年8月5日日曜日

prometheus&grafana install for docker(mac)

1)docker fileを作成する。

vi docker-compose_gra.yml
============= docker-compose_gra.yml ===========================
version: '3'
services:
  prometheus:
    image: prom/prometheus:v2.2.0
    container_name: prometheus
    volumes:
      - ./prometheus.yml:/Users/User_Home/prometheus/prometheus.yml
      - ./prometheus-data:/prometheus
    ports:
      - 9090:9090
  grafana:
    image: grafana/grafana:5.1.2
    container_name: grafana
    volumes:
      - ./grafana-data:/var/lib/grafana
    ports:

      - 3000:3000
================================================================

◾️ポイント:
/Users/User_Home/は、個人でフォルダを生成する


2)prometheus.ymlを作成する。

vi prometheus.yml
======================== prometheus.yml =====================================
global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.
  # Attach these labels to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
    monitor: 'codelab-monitor'
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']
=============================================================================


2)ファイルの実行を行う
docker-compose -f docker-compose_gra.yml up -d


参考ページ:

https://hakengineer.xyz/2018/05/12/post-1185/

kubernetes(pod数の増やし方)ダッシュボード編

kubernetesのダッシュボードからpod数を増やす方法について記載します。


podとは、コンテナの数を示す。


1)ダッシュボードの画面(Overview)から対象のpodから赤枠を選ぶ



2)Scaleを選択する。


3)増やしたいpod数を入力する
(今回、5つにしてみました。)


4)以下のようにpod数が増えたのが確認できます。







kubernetes(wordpressを生成する)for Mac

1)mysqlのパスワードを設定する

kubectl create secret generic mysql-pass --from-literal=password=yourpassword


2)以下、wordpress用(wordpress-deployment.yaml)のymlファイルを生成する

*****wordpress-deployment.yaml******
apiVersion: v1
kind: Service
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  ports:
    - port: 80
  selector:
    app: wordpress
    tier: frontend
  type: LoadBalancer
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: wp-pv-claim
  labels:
    app: wordpress
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
---
apiVersion: apps/v1 #  for k8s versions before 1.9.0 use apps/v1beta2  and before 1.8.0 use extensions/v1beta1
kind: Deployment
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: frontend
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: wordpress
        tier: frontend
    spec:
      containers:
      - image: wordpress:4.8-apache
        name: wordpress
        env:
        - name: WORDPRESS_DB_HOST
          value: wordpress-mysql
        - name: WORDPRESS_DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-pass
              key: password
        ports:
        - containerPort: 80
          name: wordpress
        volumeMounts:
        - name: wordpress-persistent-storage
          mountPath: /var/www/html
      volumes:
      - name: wordpress-persistent-storage
        persistentVolumeClaim:
          claimName: wp-pv-claim
****************************************


3)以下、wordpress用(mysql-wordpress-pd.yml)のymlファイルを生成する

**** mysql-wordpress-pd ****************

apiVersion: v1
kind: Service
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
spec:
  ports:
    - port: 3306
  selector:
    app: wordpress
    tier: mysql
  clusterIP: None
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
  labels:
    app: wordpress
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
---
apiVersion: apps/v1 # for k8s versions before 1.9.0 use apps/v1beta2  and before 1.8.0 use extensions/v1beta1
kind: Deployment
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: wordpress
        tier: mysql
    spec:
      containers:
      - image: mysql:5.6
        name: mysql
        env:
        - name: Pass@1234
          valueFrom:
            secretKeyRef:
              name: mysql-pass
              key: password
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-pv-claim
***********************************************


ポイント:
「---」で区切ることにより、それぞれの設定ファイルを一箇所に書くことができる。




4)mysqlを立ち上げる
kubectl apply -f mysql-deployment.yaml

5)wordpressを立ち上げる
kubectl create -f wordpress-deployment.yaml


6)ダッシュボードでも生成されたのが確認できる。




補足:初期インストールを行う場合、ブラウザ上で
127.0.0.1:80にすれば、初期画面に推移する。



◾️検証環境の削除
# 一気に削除する場合
$ kubectl delete all,pvc,secret --all
# 設定ファイルを使って削除する場合
kubectl delete -f wordpress-deployment.yaml
kubectl delete -f mysql-deployment.yaml



kubernetes(ダッシュボードの設定) for Mac

docker (kubernetes)をインストール


dockerアプリからpreferencesを開き、kubernetesを有効にする








以下を実行する。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml


$ kubectl proxy


もし、以下の表示が出ていた場合、別で8001ポートを使用している場合があるので
検索にヒットしたら消すこと!

iMac:~ hidenari$ kubectl proxy
F0804 20:52:47.305893    5825 proxy.go:154] listen tcp 127.0.0.1:8001: bind: address already in use


以下のコマンドで検索を行う
$ sudo lsof -i -P | grep "LISTEN"


以下のコマンドで対象のポートを消すことができる。
$ kill -9 [消したいポート番号]


対象のポートを消したら、以下を再考すること
$ kubectl proxy


以下のアドレスがダッシュボードのアドレスになる。
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

ダッシュボードの画面




削除:
$ kubectl delete -f kubernetes-dashboard.yaml





1)アカウント用の設定ファイルを作成する
vi kube-system

*******kube-system************
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system
***************************************


2)上記で生成したファイルを実行する。
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')


3)表示された “token:” をコピーする。



4)以下のアドレスに移動する。
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

5)Tokenを選択して、"Enter token"に上記の赤枠をペーストする。




2018年8月4日土曜日

Helm (docker)

Deis が開発した Kubernetes のパッケージマネージメントツール がHelm 

Rancher2.0

KubernetesをGUI上で一括で管理できる。

  -google,aws等のクラウドなどとも連携可能。


<導入例>raspberry piをベースに検討しているので、現状未検証。


sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/server:preview

Rancher for Mac

1)以下を実行する。
sudo docker run -d -p 8080:8080 rancher/server


2)ブラウザで http://localhost:8080 を開きいて「ADMIN」->「Settings」で
固定アドレスの設定に置き換える。


dockerの管理用に検討



2018年8月2日木曜日

nohupコマンド

ターミナルを閉じると、flaskが終了してしまうので
以下のnohupコマンドを利用する。

nohup python hello2.py &



赤字の部分がポイント!



2018年8月1日水曜日

flask テストコード

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return "Hello World!"

if __name__ == '__main__':

    app.run(host='0.0.0.0', port=5000)



上記、記載がないと、外部からのアクセスができないので注意すること!

flaskのインストール(raspberry pi)

以下、pipが導入されていることが前提の手順になる。



$ easy_install virtualenv
$ virtualenv env
$  . env/bin/activate
$ easy_install Flask
$ pip install Flask


flaskは、pythonのフレームワークになる。

pythonのインストール(raspberry pi)

◻️以下、pythonのインストール方法

sudo apt-get install python-dev
sudo apt-get install python-pip

  








【AI×GitOps】Docker Composeから始めるRaspberry Pi 5 Kubernetesクラスタへの自動デプロイ設計

現在構築を進めている動画管理システム開発において、いきなりKubernetes(K8s)に展開するのではなく、 Docker Composeを中間地点に挟んで段階的にK8s+Argo CD(GitOps)へ移行するアーキテクチャ設計 をまとめました。 Bionic(AIアシスタン...