Skip to content

Kubernetes Introduction

Updated: at 06:35

Kubernetes Introduction

目次

  1. [[#この発表を通して得られる効果|この発表を通して得られる効果]]
  2. [[#動機|動機]]
  3. [[#コンテナことはじめ|コンテナことはじめ]]
    1. [[#コンテナことはじめ#What is container?|What is container?]]
    2. [[#コンテナことはじめ#build, ship and run|build, ship and run]]
    3. [[#コンテナことはじめ#料理で例えると…|料理で例えると…]]
    4. [[#コンテナことはじめ#docker command samples|docker command samples]]
  4. [[#About Kubernetes|About Kubernetes]]
  5. [[#周辺技術|周辺技術]]
  6. [[#How-to|How-to]]
    1. [[#How-to#リソースの定義(sample)|リソースの定義(sample)]]
    2. [[#How-to#リソースの追加・削除・確認|リソースの追加・削除・確認]]
    3. [[#How-to#Kubernetes Cluster 構築方法|Kubernetes Cluster 構築方法]]
  7. [[#注意点|注意点]]
  8. [[#まとめ|まとめ]]
  9. [[#Appendix|Appendix]]
    1. [[#Appendix#よく使われるサービス|よく使われるサービス]]

この発表を通して得られる効果

動機

コンテナことはじめ

What is container?

build, ship and run

料理で例えると…

docker command samples

  1. [build]Dockerfileを作成
FROM ubuntu:24.04
WORKDIR /work
COPY entrypoint.sh /work/entrypoint.sh
CMD ["/bin/bash", "/work/entrypiont.sh"]
  1. [build]docker imageを生成
docker image build -t testimage:latest -f Dockerfile .
  1. [ship]docker imageをpush
docker image tag testimage:latest xxxxxxx/testimage:latest
docker image push xxxxxxx/testimage:latest
  1. [run]docker imageからコンテナの実行
docker container run -it xxxxxx/testimage:latest

What is Kubernetes

|128

Tips

名前

アイコンの由来

|64

Google内でのKubernetesのもともとのコードネームはProject Sevenであり、スター・トレックのキャラクターで、優しいBorgである、セブン・オブ・ナインの名前に由来する。Kubernetesのロゴの輪にある7つのスポークは、このコードネームに由来している。

Kubernetes - Wikipedia

Key points

Why we need Kubernetes

周辺技術

Kubernetes Official Architecture Image

|512

Components

Node

Cluster

Pod

Deployment

Service

[!reason] スケーリングや障害発生のタイミングでPodが削除・起動されるたびに、新たに作成されるPodには毎回異なるIPアドレスが払い出されます。したがって、あるPodにアクセスしようとしたときに「アクセスしたいPodに今割り当てられているIPアドレスが何かわからない」という問題があります。そこでServiceはPod集合に対して1つの共通IPアドレスを付与し、具体的なPodへの接続やロードバランシングを可能にします。 [改訂新版]イラストでわかるDockerとKubernetes

サービスの外部公開方法としては以下の選択肢が存在する。

Volume

Variables

How-to

リソースの定義(sample)

---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: sandbox
  labels:
    run: nginx
spec:
  type: LoadBalancer
  ports:
    - port: 80
      protocol: TCP
  selector:
    run: nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: sandbox
spec:
  selector:
    matchLabels:
      run: nginx
  replicas: 6
  template:
    metadata:
      labels:
        run: nginx
      namespace: sandbox
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          resources:
            limits:
              memory: "32Mi"
              cpu: "500m"
            requests:
              memory: "16Mi"
              cpu: "25m"
          ports:
            - containerPort: 80

リソースの追加・削除・確認

kubectlコマンドを使用する

Kubernetes Cluster 構築方法

注意点

まとめ


Appendix

よく使われるサービス