Help us understand the problem. What is going on with this article?

Kubernetesお試しコマンドまとめ

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が見れる
stylez
WEB・業務システム、インフラ構築・運用監視まで、幅広い開発実績と経験豊富なエンジニアによる自社開発体制で、スピーディかつ高クオリティのシステム開発を手掛けています。AWSをはじめ各種クラウドやベンダーパートナーとして総合的なITサービスや、独自移行ツールを使ったマイグレーション、サーバーレスなシステム構築、コンテナを利用したDevOpsコンサルティングなどを提供しています。
https://www.stylez.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away