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

k8sクラスター構築

Avatar for asuka asuka
May 27, 2021
56

 k8sクラスター構築

2021年のLTスライド

Avatar for asuka

asuka

May 27, 2021
Tweet

More Decks by asuka

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サポートされている