LoginSignup
6
3

More than 3 years have passed since last update.

Kubernetesお試しコマンドまとめ

Last updated at Posted at 2020-01-23

Kubernetes試していきましょう

  • Kubernetesのリソースをざっくり知ろう
    • 中でもアプリケーション開発者が特に利用するのは以下の3種類
      • Workloads
      • Discovery&LB
      • Config&Storage
  • Workloads
    • Pod
    • ReplicationController
    • ReplicaSet
    • Deployment
  • Discovery & LB
    • Service
    • ClusterIP
    • ExternalIP(ClusterIPの一種)
    • NodePort
    • LoadBalancer
    • Headless(None)
    • ExternalName
    • NoneSelector
    • Ingress
  • Config&Storage
    • Secret
    • ConfigMap
    • PersistentVolumeClaim

試してみるファイル

『Kubernetes完全ガイド』の以下のファイル

  • chapter04
    • sample-pod.yaml
  • chapter05
    • sample-rs.yaml
  • chapter06
    • sample-deployment.yaml
    • sample-nodeport.yaml

Kubernetesの状況確認コマンド

  • kubectl cluster-info
  • kubectl get nodes

podとは?

  • sample-pod.yamlを実行
    • kubectl apply -f sample-pod.yaml
    • kubectl get pod
  • podにログインする方法を試してみる
    • kubectl exec -it sample-pod /bin/bash
      • 何もインストールされていない、、、
    • IPアドレスを調べてみましょう
      • kubectl describe pod sample-pod
    • 調べたIPに対してhttpアクセスしてみましょう
      • kubectl run --image=centos:6 --restart=Never --rm -i testpod -- curl -s http://IPアドレス:80

podまとめ

  • podは作成できた。でも同じネットワークからじゃないとアクセスできない?
  • コンテナ1つできただけ?
  • Kubernetesってオートスケールとか自動復旧とかしてくれるんじゃないの?

ReplicaSetとは?

  • sample-rs.yamlを実行
    • kubectl apply -f sample-rs.yaml
    • kubectl get rs
    • kubectl get pod
  • podが3つできている
    • 1個消してみる
      • kubectl delete pod sample-rs-XXXX
    • podが消えて、新しいのが1つ立ち上がってる

ReplicaSetまとめ

  • 1つのファイルを適用しただけで3つのコンテナができた
  • いい感じに自動復旧してくれる

Deploymentとは?

  • sample-deployment.yamlを実行
    • kubectl apply -f sample-deployment.yaml --record
    • kubectl get pod
    • kubectl get rs
    • kubectl get deployment
    • kubectl describe deployment sample-deployment
  • nginxのバージョンを上げてみましょう
    • kubectl set image deployment sample-deployment nginx-container=nginx:1.13
    • 確認
      • kubectl rollout status deployment sample-deployment
    • ロールバックや履歴
      • kubectl rollout history deployment sample-deployment
      • kubectl rollout history deployment sample-deployment --revision XX
      • kubectl rollout undo deployment sample-deployment --to-revision XX

Deploymentまとめ

  • 1つのファイルを適用しただけでpodとReplicaSetができた
  • アップデートやロールバックも簡単にできた

NodePortとは?

  • sample-nodeport.yamlを実行
    • kubectl apply -f sample-nodeport.yaml
    • kubectl get svc
    • curl -s http://localhost:30080
  • どのpodにアクセスしているか分かりづらいので工夫する
    • podに乗り込む
      • kubectl exec -it sample-deployment-XXXXXX /bin/bash
    • hostnameを表示するようにする
      • hostname > /usr/share/nginx/html/index.html
    • わかりやすくなったと思うので
      • curl -s http://localhost:30080 ### NodePortまとめ
  • 外部からアクセスできているし、負荷分散もされている

PersistentVolumeClaimとは?

PersistentVolumeは基本的にネットワーク越しにディスクをアタッチするタイプのディスクとなります。

  • ということで手元では試せないです(なにか方法あれば教えて下さい)

hostpathを試す

  • sample-hostpath.yamlを実行
    • kubectl appky -f sample-hostpath.yaml
  • hostの/etcをpodの/srvにマウントしていることの確認
    • kubectl exec -it sample-hostpath cat /etc/os-release | grep PRETTY_NAME
      • podのos-verisonが見れる
    • kubectl exec -it sample-hostpath cat /srv/os-release | grep PRETTY_NAME
      • podがhostの/etcをマウントしているのでhostのos-versionが見れる
6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3