• 日本語
    • English (英語)
Avintonジャパン株式会社Avintonジャパン株式会社Avintonジャパン株式会社Avintonジャパン株式会社
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
    • プライベートクラウド
    • AIサービス開発
    • AI画像解析 – 無償PoC
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
  • 採用情報
    • Avintonで働く魅力
    • 新卒採用
    • プロジェクトコーディネーター職紹介
    • 求人
    • よくある質問
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ

軽量版Kubernetesディストリビューション – k0s クラスターの構築

  • Python3.8 と OpenCV のインストール (Ubuntu20.04LTS)
  • ルーティング
  • postgreSQLへのshp fileのimport
  • NAT
  • PostGIS exercise
  • 三目並べ – 2.〇×を交互にゲーム盤に入るようにしよう
  • Docker 概要とセットアップ
  • 三目並べ – 3.勝敗がつくようにしよう
  • Docker Engineのubuntu上へのinstall
  • EC2からS3へ自動でぽいぽいアップロードするスクリプトの作成
  • 三目並べ – 4.「スタート」「リセット」ボタンをつけよう
  • 三目並べ – 5.先攻後攻を決めて、コンピュータ対戦にしよう(前編)
  • Apache Zeppelin 基本機能
  • Ruby on Rails を MySQLでセットアップ
  • 機械学習入門者向け Support Vector Machine (SVM) に触れてみる
  • AWSアカウントの作成と必ずやるべきセキュリティ対策
  • Scala 基礎
  • VLAN
  • Apache Spark 基礎
  • 機械学習を用いた画像分類
  • Ruby on Railsによる簡単なウェブアプリケーション
  • 正規表現とパイプ
  • 機械学習エンジニアに必要なスキル
  • Docker, Kubernetesの学び方について
  • Ubuntuの基本設定
  • PostgreSQL Setup
  • REDIS
  • Amazon EC2 インスタンスの初期設定をしよう
  • 軽量版Kubernetesディストリビューション – k0s クラスターの構築
  • Pythonの設定
  • GNS3のセットアップ
  • viエディタ
  • AWSのEC2インスタンスでWordPressブログを公開してみよう
  • Pythonでデータベースを操作する
  • Python2.7とOpenCVのインストール
  • ファイル操作コマンド
  • OpenCVのテストプログラム
  • グループとユーザー
  • Pythonで画像を分類するプログラムを作成する
  • AWS CLIをインストールしてコマンド操作しよう
  • Virtualisation and Container (仮想化とコンテナ) – Ansible, Docker and Kubernetes
  • Windows Server 2012 R2 Hyper-V
  • 困った時に使うコマンド
  • SparkMLによるKaggle Titanic生存者予測
  • PacketTracerのセットアップ
  • 一般グループのユーザーとグループ
  • AWS Route 53を使って独自ドメインのWebページを表示させてみよう
  • Kubernetesクラスター上へのOpenVINOモデルサーバーを使用したサンプルアプリケーションのデプロイ
  • プライバシーポリシー
  • VMware ESXi サーバー構築
  • 三目並べ – 6.先攻後攻を決めて、コンピュータ対戦にしよう(後編)
  • フロントエンド開発のための環境構築
  • フロントエンドのデモンストレーション
  • APIのデモンストレーション
  • CISCO 1800ルータセットアップ
  • ファイル検索コマンド
  • ESXi – Switchの追加とVLAN
  • 質問
  • 仮想化環境のディスク容量を拡張する
  • ユーザー権限とアクセス権
  • 三目並べ – 0.導入
  • テキスト処理
  • ESXi – VyOS
  • データベースへのデータロード
  • 機械学習入門者向け Naive Bayes(単純ベイズ)アルゴリズムに触れてみる
  • CCNA
  • ESXi – 小規模ネットワーク 構築
  • ファイル管理
  • 機械学習入門者向け ChainerRLでブロック崩しの学習
  • AWS CLIを使ってEC2のファイルをS3へアップロードしよう
  • Apache NiFiの環境設定
  • CSV import & export – Node.js, mySQL – 1
  • 機械学習入門者向け ランダムフォレストによる Kaggle Titanic生存者予測
  • NodeJSでWebアプリケーション開発 – Socket.IO編
  • CSV import & export – Node.js, mySQL – 2
  • Apache NiFi データパイプライン基礎
  • PCからルータ、スイッチへのSSH接続設定
  • 【Python入門】Python Numpy チュートリアル
  • SQL 便利な関数
  • PostgreSQLによるデータ分析
  • Apache NiFi Exercise
  • 機械学習入門者向け 分類と回帰の違いをプログラムを書いて学ぼう
  • NodeJSでWebアプリケーション開発 – React編
  • Pythonによるマルチスレッドプログラミング実践
  • Apache SparkとApache Zeppelinの概要と環境構築
  • Certbotを使ってSSL証明書を発行し、HTTP通信を暗号化しよう
  • DockerとApacheを使ってWebサーバーを構築しよう
  • NodeJSでWebアプリケーション開発 – React編
  • Redux基礎 – 主要な概念と用語
  • AmazonEC2とVPCでネットワークとサーバーを構築しよう
  • AWS入門者向け 初心者が最初に理解すべきEC2とVPCの基本的な用語解説
  • Linuxとは
  • Pandasによる構造化データ分析
  • ダイナミックルーティング
  • PostgreSQL – Python – Apache – Bootstrap
  • 三目並べ – 1.ゲーム盤を作ろう
Home Avintonアカデミー 軽量版Kubernetesディストリビューション – k0s クラスターの構築
Kubernetes logo
k0s

Kubernetesクラスターは、リソースの少ないエッジデバイスやミニPC上でも実行できるようになりました。その中でも、k0sは軽量なKubernetesディストリビューションで、少ないリソース使用量でKubernetesクラスターを構築することができます。このチュートリアルでは、4台のMiniPCを使用して、k0sクラスターを構築します。(MiniPCがない場合は、VMを使用して構築することもできます。)

対象は、LinuxやDocker、Kubernetesの基礎知識がある方です。

このチュートリアルは4章構成です。

1. Ubuntu server 20.04 LTSをインストールする
2. ネットワークの設定
3. Control plane nodeにk0sをデプロイする
4. Worker nodeにk0sをデプロイする

必要なデバイスは以下のとおりです。

  • MiniPC 4台 (最低2台: マスターノード + ワーカーノード)
  • Netowork スイッチ (4ポート以上)
  • LANケーブル 4本
  • キーボード + ディスプレイ
  • USBフラッシュメモリー (4GB以上)

例として使用したMini PCのスペックは以下の通りです。

  • 4 core CPU
  • 4GB Memory
  • 60GB Storage
  • イーサネット用LANポート
  • Wifi インターフェース

MiniPCがない場合は、同様のスペックの仮想環境上でも構築できます。

1. Ubuntu server 20.04 LTSをインストールする

4台のMini PC上にUbuntu Server 20.04 LTSをセットアップします。
hostnameは1台にmaster01、他のデバイスにはworker01, worker02など一意なhostnameを付けます。

VMを使用する場合も同様に、Ubuntu Server 20.04を4台のVMにインストールしてください。

1.1. ISOイメージファイルのダウンロード

ローカルのPC上から以下のリンクにアクセスし、Ubuntu Server 20.04 LTSのISOイメージを取得してください。(約1.2GB)

  • https://releases.ubuntu.com/20.04.4/ubuntu-20.04.4-live-server-amd64.iso

1.2 USBブータブルディスクの作成

ローカルのPC上にて、ダウンロードしたISOイメージを使用して、USBブータブルディスクを作成してください。

1.3 インストールの開始

MiniPCにUSBディスクを挿入し、キーボードを使用し、F2キーやF11キーなどを連打し、起動ディスクからインストールを開始します。 (キーはデバイスによって異なります。)

1.4 画面に従ってインストールを進めます。

この時点ではネットワークやWIFIの設定などは空白、または仮の設定で構いません。(後程、設定を行います。)

hostnameは1台にmaster01、他のデバイスにはworker01, worker02など一意なhostnameを付けます。

username, passwordはすべてのデバイス間で同じでもOKです。 例としてavintonというユーザーを作成しました。 SSHはインストールしてOKです。

2. ネットワークの設定

デバイスがインターネットに接続できるように、またデバイス間通信ができるようにネットワークの設定を行います。
この手順はすべてのMini PCに対して共通です。

VMの場合は、管理コンソールよりネットワークの構成を行ってください。 インターネット接続とノード間の接続ができるようにインターフェースを構成してください。

ネットワークの設定は環境によって異なりますが、例では以下のように構成します。

軽量版Kubernetesディストリビューション – k0s クラスターの構築

イーサネットインターフェース

  • master01: 192.168.2.100/24
  • worker01: 192.168.2.101/24
  • worker02: 192.168.2.102/24
  • worker03: 192.168.2.103/24

Wifiインターフェースの設定は、ご使用のWifi環境で異なります。
環境に併せて設定してください。IPアドレスは固定しなくても大丈夫です。

2.1 netplanでnetworkの接続を構成

/etc/netplan/以下に設定ファイル/etc/netplan/99-network-all.yamlを作成します。
Wifiの設定項目は適宜変更してください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: false
      addresses:
        - 192.168.2.100/24
      nameservers:
        addresses: [192.168.2.1]
      routes:
        - to: default
          via: 192.168.2.1
          metric: 50
  wifis:
    wlp2s0b1:
      dhcp4: no
      dhcp6: no
      addresses: ...
      gateway4: ...
      nameservers:
        addresses: [...]
      access-points:
        "...":
          password: "..."

1
sudo netplan --debug apply

2.2 インターネットの疎通を確認

1
ping google.com

2.3 パッケージの更新

1
sudo apt update && sudo apt upgrade -y

2.4 再起動

1
sudo reboot

3. Control plane nodeにk0sをデプロイする

ここからはコントロールプレインノードを設定していきます。
例では、master01をコントロールプレインノードとして設定します。

3.1. k0sをインストールする

1
curl -sSLf https://get.k0s.sh | sudo K0S_VERSION=v1.22.2+k0s.1 sh

3.2 設定ファイルを作成する

1
2
3
mkdir -p /etc/k0s
k0s config create > k0s.yaml
cp k0s.yaml /etc/k0s/k0s.yaml

必要に応じて設定を更新してください。 こちらのページが参考になります。

3.3 k0sを起動する

1
sudo k0s install controller -c /etc/k0s/k0s.yaml --enable-worker --kubelet-extra-args="--node-ip=192.168.2.100 --address=0.0.0.0"

1
sudo k0s start

k0sの状態の確認を行ってください。

1
sudo systemctl status k0scontroller.service

1
2
3
4
5
$ sudo k0s status
Version: v1.22.2+k0s.1
Process ID: 691
Role: controller
Workloads: false

3.4 worker node用のtokenを発行する

1
sudo k0s token create --role=worker > token-worker01

1
2
3
4
$ ls -lt token-worker0*
-rw-rw-r-- 1 avinton avinton 1753 May 11 06:49 token-worker03
-rw-rw-r-- 1 avinton avinton 1757 May 11 06:49 token-worker02
-rw-rw-r-- 1 avinton avinton 1753 May 11 06:49 token-worker01

生成したtokenを各ノードに配布します。例えば、

1
scp worker01 avinton@192.168.2.101:/home/avinton/

 

4. Worker nodeにk0sをデプロイする

配布されたtokenを使用して、各ノードをクラスターに追加します。
以下は各ワーカーノード上で行ってください。
例では、worker01, worker02, worker03をコントロールプレインノードとして設定します。

4.1 k0sのインストール

1
curl -sSLf https://get.k0s.sh | sudo K0S_VERSION=v1.22.2+k0s.1 sh

例えば、

1
sudo k0s install worker --token-file token-worker01 --kubelet-extra-args="--node-ip=192.168.2.101 --address=0.0.0.0"

1
sudo k0s start

4.2 k0sの状態を確認

1
2
3
4
5
$ sudo k0s status
Version: v1.22.2+k0s.1
Process ID: 712
Role: worker
Workloads: true

完了したら上記の手順をすべてのワーカーノードに繰り返します。

4.3. クラスターの状態を確認

すべてのワーカーノードを追加したら、マスターノードからクラスター全体の様子を確認します。

1
2
3
4
5
$ kubectl get node
NAME       STATUS     ROLES    AGE   VERSION
worker01   Ready         45h   v1.22.2+k0s
worker02   Ready         45h   v1.22.2+k0s
worker03   Ready         45h   v1.22.2+k0s

1
2
3
4
5
6
7
8
9
10
11
12
13
$ kubectl get pods -n kube-system
NAME                              READY   STATUS             RESTARTS   AGE
coredns-5c98d7d4d8-dv7g6          1/1     Running            0          6h26m
konnectivity-agent-27cjf          1/1     Running            0          6h26m
konnectivity-agent-6qk4d          1/1     Running            0          6h26m
konnectivity-agent-pccj2          1/1     Running            0          6h25m
kube-proxy-7wkbw                  1/1     Running            0          6h26m
kube-proxy-b7sbv                  1/1     Running            0          6h26m
kube-proxy-zwslm                  1/1     Running            0          6h26m
kube-router-48bgh                 1/1     Running            0          6h26m
kube-router-d4qj6                 1/1     Running            0          6h26m
kube-router-l8rj8                 1/1     Running            0          6h26m
metrics-server-6fbcd86f7b-gv7z5   1/1     Running            0          135m

お疲れ様でした。これでk0sクラスターの構築が完了です。
次のタスクとしてKubernetes上にサンプルアプリケーションのデプロイに進んでください。

あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?

社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?

採用情報

採用情報

採用情報

Avinton SDGs

SDGsへの貢献

Search

タグ

AI AI Big Data Big Data ccna Digital Transformation DX IoT IoT LPIC Python Ruby SDGs Webエンジニア イベント インタビュー インフラエンジニア エンジニア オンラインセミナー キャリアチェンジ コンテナ技術 サーバーエンジニア システム開発 データサイエンス データベース データ分析 データ解析 ネットワークエンジニア ビックデータ 人工知能 仮想化 勉強会 営業 就職活動 技術インターン 採用 新卒 新卒採用 新規事業 機械学習 派遣 深層学習 社員インタビュー 経営者交流会 転職
© 2022 Avinton | All Rights Reserved | プライバシーポリシー
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
    • プライベートクラウド
    • AIサービス開発
    • AI画像解析 – 無償PoC
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
  • 採用情報
    • Avintonで働く魅力
    • 新卒採用
    • プロジェクトコーディネーター職紹介
    • 求人
    • よくある質問
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ
  • 日本語
    • English (英語)
Avintonジャパン株式会社