Skip to content

Instantly share code, notes, and snippets.

@sanoyo
Last active August 12, 2019 10:49
Show Gist options
  • Save sanoyo/4e70acbef2ec4d91f79d122a6c9f766a to your computer and use it in GitHub Desktop.
Save sanoyo/4e70acbef2ec4d91f79d122a6c9f766a to your computer and use it in GitHub Desktop.
Kubernets メモ

Kubernetes

Prometheus

Applicationsをクリック 下記の画面が出てくる Image from Gyazo

サイドバーのmoniteringをクリック これでmoniteringに関する情報だけを表示する Image from Gyazo

kuber sample app

travis ci 適用まで

  1. dockerの中に入る
    docker run -it -v $(pwd):/app ruby:2.3 sh

  2. gemのインストール
    gem install travis --no-document
    rubygems/heroku-buildpack-bundler2#1

  3. travisコマンド travis

  4. travis CIにログインする
    dockerの中に入った状態で、 travis login
    username, password, 2段階認証の情報を入力する。

  5. サービスアカウントを作成する
    GCP「IAMと管理 → サービスアカウント」でサービスアカウントを作成する。
    キーを作成したら、自動的にjsonファイルがダウンロオードされる。

  6. 暗号化
    GCPからダウンロードしたjsonファイルを暗号化する。
    travis encrypt-file service-account.json -r sanoyo/kubernetes-sample-app このコマンドにより、 service-account.json.enc ファイルが作成される。 また、opensslのコマンドも返って来るので、それは.travis.yamlに書き込んでおく。

  7. travis CIのファイルにgcpの設定を書き込む

  8. travis CIに環境変数を設定する
    書くリポジトリの設定ページで環境変数を設定する

  9. travisファイル実装

helm

  1. helmインストール
kubectl create serviceaccount --namespace kube-system tiller

kubectl create clusterrolebinding tiller-cluster-role --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

helm init --service-account tiller --upgrade
  1. ingress-nginxの設定
helm install stable/nginx-ingress --name my-nginx --set rbac.create=true

# エラー内容
「Error: Get https://35.232.72.126/api/v1/namespaces/kube-system/pods?labelSelector=app%3Dhelm%2Cname%3Dtiller: dial tcp 35.232.72.126:443: i/o timeout」

# 対応方法
helm resetで再度試す

これが完了したら、Kubernetesのワークロードにingress-controllerが作成されている。

参考箇所

https://helm.sh/docs/using_helm/#from-script https://helm.sh/docs/using_helm/#quickstart-guide

RBAC

Ingress

L7ロードバランシングを提供するリソースです。

Service, Ingresss

  • Cluster IP
  • Exteernal IP
  • Node P0tt
  • Load Balancer

L7ロードバランサー 特徴

  • レイヤー7で負荷分散が可能です。 (URLやHTTPヘッダーで負荷分散が可能)
  • 10Mbps〜2Gbpsの帯域から選択可能です。
  • サーバー上に構築いただくソフトウエアロードバランサーとなります。

参考記事

Github
https://github.com/kubernetes/ingress-nginx

チュートリアル
https://kubernetes.github.io/ingress-nginx/deploy/#minikube

手順

  • apply kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml

  • ingressをminikubeで使えるようにする minikube addons enable ingress

使用する技術

  • Kubernetes
  • Docker
  • TravisCI
  • GCP

メモ

例えば下記のDeploymentを作成したいとします。 Deploymentで3つのpodを作成します。

その場合の実装は下記のようになります。 毎回下記のように書くのが面倒なので、VSCodeの補間機能使っています。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: client-deployment
spec:
  replicas: 3
  selector:
  # Labelとマッチ
    matchLabels:
      component: web
 # Podのtemplate
  template:
    metadata:
   # ラベルを指定
      labels:
        component: web
    spec:
      containers:
      - name: client
        image: docker-hubのimage
        ports:
        - containerPort: 3000

Podのtemplate

このtemplateをもとにPodの調整・管理を行います。

Kubernetes: Deployment の仕組み

Kubernetes道場 8日目 - ReplicaSet / Deploymentについて

ClusterIP

クラスタの内部からアクセスできるようにする仕組みのことです。

ports

  • name
    ポートの名前を指定する。

  • port
    Serviceで公開しておくportを指定する。

  • targetPort
    Serviceで転送する先のportを指定する。

環境変数の設定方法

参考記事

https://cstoku.dev/posts/2018/k8sdojo-09/

Kubernetesに関するよさそうなメモ

kubeのよさそうな情報源 https://cstoku.dev/posts/2018/k8sdojo-09/ kubeカレンダー https://qiita.com/advent-calendar/2018/k8s-dojo 義テュBソース https://github.com/kubernetes/kubernetes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment