Mar 2, 2018

JJUG Kubernetes Meetup

JJUGのKubernetes勉強会に行ってきました。 寺田さんの資料が分かりやすかったので、メモ取らなくても良かったかも?と思いつつも一応アップしておきます。
ハンズオン資料 yoshioterada/k8s-Azure-Container-Service-AKS–on-Azure

PodはContainerをまとめたもの。1つでも良い
Container間の関係が密接な場合は1つにまとめることを推奨
Pod毎にIPAddressやPort番号が付与される
負荷分散をさせたい場合はPodをまとめて公開できる
Podを直接管理するのではなく、Deploymentという単位で管理する
iptableでServer-Pod間のマッピングを管理する
AKSはAzureのManaged Service、Master部分はMicrosoftが管理する。k8sのVerUpをサービスを停止せずに1コマンドで可能
ACSはManagedではないので、Master部分をユーザーが構築する
Alpine Linuxを使うとDockerコンテナのサイズを節約できる。ただし全てのライブラリが入っているわけではないので注意
openjdk:8-jre-alpine
Deployment manifefst yaml
replicasでPod数を指定する
labelsの名前を使ってサービスを抜き出す際に使えるのでちゃんと書いたほうが良い
Rolling Upgrade
minReadySeconds, progressDeadlineSeconds, maxSurge, maxUnabailableを設定する

Liveness
initialDelaySeconds コンテナが起動した段階でサービスがまだ起動していない状態でヘルスチェックが走るのを避ける

Readiness
サービスが利用可能になっているかを確認する

Podの一覧を取得する
kubectl get pokubectl get po -w

PodのCPU, Memoryリソースを確認する
kubectl top cmd your-pod-name
制限をかけるにはrequests, limitsを使用する
1CPUが1000m

yamlを書く際のヘルプ
kubectl explain deployment.spec

Podにログインする
kubectl exec -it your-pod-name /bin/sh

ログを参照する
kubectl logs -it your-pod-name
kubectl logs -it your-pod-name -c container-name

認証情報などをyamlに書く際はsecretsを使用する

直接yamlを書き換える方法
kubectl edit svc/your-service-name

Istioとは?
k8sの設定を変えずに追加機能を使えるようになる
Podの中にProxyが追加される
CanlyやCircuitBreaker周りで便利な機能があり
k8sのバージョンを確認する(yamlやコマンドの書き方が変わってくるので常に意識する)
kubectl get node
Podを直接扱わないこと。Deploymentにしておけば自動で再起動がかかる
Master経由で操作し、Nodeにはアクセスできないようにすること

draftを利用するとHelmのパッケージを作成してくれる
Heptio Arkがバックアップ&リストアに最近よく使われている