Upgrade to Pro — share decks privately, control downloads, hide ads and more …

k8sクラスター構築

Asuka
May 27, 2021
20

 k8sクラスター構築

2021年のLTスライド

Asuka

May 27, 2021
Tweet

Transcript

  1. Kubernetesとは コンテナ化したアプリケーションのデプロイ、スケーリング、および管理を行うための、 オープンソースのコンテナオーケストレーションシステム by Wikipadia VM | Node VM |

    Node VM | Node VM | Node k8s Container (Pod) Routing (Service) Container Container Container https://k8s:80 :80 :80 :80 :80 ※イメージ できること: deploy, auto scale, auto healing and more.
  2. Kubernetesとは コンテナ化したアプリケーションのデプロイ、スケーリング、および管理を行うための、 オープンソースのコンテナオーケストレーションシステム by Wikipadia VM | Node VM |

    Node VM | Node VM | Node k8s Container Routing Container Container Container https://k8s:80 :80 :80 :80 :80 ※イメージ かっこいいから 自宅にも欲しい!! できること: deploy, auto scaling, auto healing and more.
  3. クラスタ構築 条件 - RAM 2GB以上 - CPU 2 cores以上 -

    Swap無効化 - Cgroupの有効化 インストールは公式ドキュメント通りにやれば大体できる
  4. クラスタ構築 Container Runtime - v1.20からDockershimが非推奨になるらしい? → Containerd採用 - v1.20はまだ Dockerを使うのがインストールが楽

    → v1.21からDocker以外も楽になった Cluster Network - クラスタを組んでもNetwork Plugin(CNI)を入れないとコンテナを デプロイできない - よく分からない → Flannel採用 $ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  5. 用途 Docker in Dockerを用いたセルフホスト環境 VM | Node VM | Node

    VM | Node VM | Node k8s Docker in Docker DockerHubからDocker in Dockerをデプロイする
  6. 用途 Docker in Dockerを用いたセルフホスト環境 VM | Node VM | Node

    VM | Node VM | Node k8s Docker in Docker DockerHubからコンテナ Registryをデプロイする Registry
  7. 用途 Docker in Dockerを用いたセルフホスト環境 VM | Node VM | Node

    VM | Node VM | Node k8s Docker in Docker Registry push Service (NodePort: 30000) 10.16.1.1:30000/sample:latest DinDからRegistryへコンテナ ImageをBuild & Push
  8. 用途 Docker in Dockerを用いたセルフホスト環境 VM | Node VM | Node

    VM | Node VM | Node k8s Docker in Docker Registry push sample deploy Service (NodePort: 30000) 10.16.1.1:30000/sample:latest クラスタ上のRegistryからデプロイ apiVersion: v1 kind: Pod metadata: name: sample spec: containers: - name: webapp image: 10.16.1.1:30000/sample ports: - containerPort: 8080
  9. 用途 Docker in Dockerを用いたセルフホスト環境 VM | Node VM | Node

    VM | Node VM | Node k8s Docker in Docker Registry push sample deploy Service (NodePort: 30000) 10.16.1.1:30000/sample:latest クラスタ上のRegistryからデプロイ apiVersion: v1 kind: Pod metadata: name: sample spec: containers: - name: webapp image: 10.16.1.1:30000/sample ports: - containerPort: 8080 自己完結!!
  10. 用途 TLSを適切に設定できない場合、insecure registryとしてContainer runtimeに設定す る必要がある # vim /etc/containerd/config.toml [plugins."io.containerd.grpc.v1.cri".registry.mirrors."10.16.1.1:30000"] endpoint

    = ["http://10.16.1.1:30000"] [plugins."io.containerd.grpc.v1.cri".registry.configs] [plugins."io.containerd.grpc.v1.cri".registry.configs."10.16.1.1:30000".tls] insecure_skip_verify = true
  11. 最後に 1. 本番運用するときは、 a. TLSを適切に設定するべき b. ManagedなRegistryを利用するべき c. ManagedなK8sを利用するべき 2.

    PoEを利用すると配線はスッキリするが、ファンの騒音がひどい a. RaspPiは電源タップを買ってファンレス運用するのがおすすめ 3. M1 Mac利用者は v1.21~を利用しよう a. v1.21は Go v1.16でbuildされているため、Nativeサポートされている