hayashier Tech Blogs
  • hayashier Tech Blogs
  • Author's Books
    • 実践Redis入門 (日本語版)
    • 実践Redis入門 (한국어판)
  • Top Contents
    • Dive Deep Redis
    • Dive Deep Memcached
    • Kubernetes 入門
    • TCP 入門
    • TLS 入門
    • GPG 入門
    • サービス障害が発生した場合の対応方法
    • よく使うトラブルシューティング コマンド実行例 まとめ
    • コピペで使えるELBのアクセスログ解析による事象分析 (ShellScript, Athena)
  • Containers
    • Docker 入門
    • Nomad 導入
    • Dockerを利用してさっと検証環境構築
  • Kubernetes
    • Kubernetes 入門
    • Kubernetes 導入 with Amazon Linux 2
    • EKSを利用してKubernetesでSpring MVCをデプロイ (NLB + Auto Scaling)
  • Load Balancer
    • ALB 認証 導入
    • TLS extensions support with ALB
    • ELB(CLB,ALB,NLB)の種類ごとのHTTPレスポンスの違い
    • ELB(CLB) で WebSocket 通信
  • RDBMS
    • PostgreSQL DBA 入門
    • RDBMS Benchmark Get Started
    • RDBMS サンプルデータ生成 Get Started
    • RDS PostgreSQL Extensions Get Started
    • RDBMS Engine Inspection for Troubleshooting
  • Redis
    • Dive Deep Redis ~ 入門から実装の確認まで
    • Dive Deep Redis Internals ~ GETコマンド実行時の動作 ~
    • RedisのString型は今でも本当に512MBが上限か?
    • Redis 公式ドキュメント まとめ
    • Redis / Memcached Source Code Reading - Overview -
  • Memcached
    • Dive Deep Memcached ~ 入門から実装の確認まで ~
    • Dive Deep Memcached ~ SETコマンド実行時の動作 ~
    • Memcached 公式ドキュメント まとめ
    • memtier_benchmark + memcached-tool の導入
    • Redis / Memcached Source Code Reading - Overview -
  • Hadoop
    • Hadoop Get Started
  • Networking
    • TCP 入門
    • TLS 入門
    • ksnctf: HTTPS is secure, Writeup (TLS 通信解読)
    • オンプレ側ルーター(Cisco 1812J, Juniper SRX210, YAMAHA RTX 1210)から Direct Connect へ BGP 設定
  • Software
    • アルゴリズムとデータ構造 入門
    • デザインパターン 入門
    • ソフトウェアテスト 入門
  • System Admin
    • Shell Script 入門
    • サービス障害が発生した場合の対応方法
    • よく使うトラブルシューティング コマンド実行例 まとめ
    • コピペで使えるELBのアクセスログ解析による事象分析 (ShellScript, Athena)
    • GPG 入門
    • Operation Misc
  • Development
    • ローカル環境のプログラミング言語のバージョンを切り替え macOS
    • /usr/local/Cellar/pyenv/1.2.21/libexec/pyenv: No such file or directoryのエラーの対処方法
  • AWS
    • AWS Misc
    • AWS CLI, AWS SDKのリトライ処理の実装について
    • AWS CLI バージョンアップでエラー発生を解消
    • Elastic Beanstalkで稼働しているアプリケーション(Ruby, Sinatra)をAmazon Linux AMIからAmazon Linux2へ移行
    • Elastic Beanstalkでインスタンス入れ替え後にnginxのデフォルトの画面が表示されてしまう問題の対応
    • Amazon Lightsail に SSL 証明書設置 with Let's Encrypt (自動更新)
    • Amazon Lightsailで10分で作るお手軽Markdownで書く独自ドメインのブログサイト構築
    • Lambdaをローカルでテスト(with Docker)
    • ECS + ALB でダウンタイムなしでデプロイ
    • `Repository packages-microsoft-com-prod is listed more than once in the configuration`のメッセージの解消方法
  • Others
    • Pandoc 導入
    • textlint + prh による文章校正
    • 紙書籍をPDFに変換
    • Sphinx 導入
    • さくっとPocketのブックマークをはてなブックマークに移行
    • Macが突然起動しなくなった話
    • Macでターミナルが開かない (zsh編)
    • ホスト型 IDS Tripwire とネットワーク型 IDS Snort の導入 with CentOS 6
    • JMeter 導入
    • Squid 導入 with Amazon Linux AMI
    • Spring MVCを導入 (+ MySQL, Redis)
    • 外資系企業で働いている場合の確定申告方法 (RSU考慮)
Powered by GitBook
On this page
  • Kubernetes 導入 with Amazon Linux 2
  • 構成
  • マスターノード
  • ワーカーノード
  1. Kubernetes

Kubernetes 導入 with Amazon Linux 2

導入

Kubernetes 導入 with Amazon Linux 2

構成

マスターノード + 1台ワーカーノード

マスターノード

初期設定

$ ssh -i ~/.ssh/id_rsa ec2-user@<public ip>
$ sudo hostnamectl set-hostname 'k8s-master'
$ sudo vim /etc/hosts
$ sudo vim /etc/cloud/cloud.cfg
$ sudo reboot

/etc/cloud/cloud.cfg には以下を追記

preserve_hostname: true

/etc/hosts には以下を追記

172.31.27.122  k8s-master
172.31.22.36   worker-node1

Docker のインストール

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum install --setopt=obsoletes=0 docker-ce-17.03.2.ce-1.el7.centos.x86_64    docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch
$ sudo systemctl enable docker && sudo systemctl start docker

Kubelet, Kubeadm, Kubectl のインストール

$ setenforce 0
$ sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/sysconfig/selinux
$ vi /etc/sysconfig/selinux
$ vim /etc/yum.repos.d/kubernetes.repo 
$ yum install -y kubelet kubeadm kubectl

/etc/yum.repos.d/kubernetes.repo

[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

IPVS によるロードバランシングに必要なモジュールの読み込み

$ modprobe -v ip_vs
$ modprobe -v ip_vs_rr
$ modprobe -v ip_vs_wrr
$ modprobe -v ip_vs_sh

Kubernetes Master の作成

$ swapoff -a 
$ kubeadm init

kubeadm init 実行時に最後に出力される kubeadm コマンドをコピーしておく。

kubeadm join 172.31.27.122:6443 --token xxxxxxxxxxxxxxxxxxxxxx --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

設定ファイルの準備とノードの作成

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ export kubever=$(kubectl version | base64 | tr -d '\n')
$ kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"

正常に設定がされていることを確認。

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS    ROLES     AGE       VERSION
k8s-master   Ready     master    2m        v1.11.1

ワーカーノード

/etc/hosts と /etc/yum.repos.d/kubernetes.repo の内容はマスターノードと同様。

$ sudo hostnamectl set-hostname 'worker-node1'
$ sudo vim /etc/hosts
$ sudo sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/sysconfig/selinux
$ setenforce 0
$ sudo vim /etc/yum.repos.d/kubernetes.repo
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum install -y kubelet kubeadm kubectl
$ systemctl restart docker && systemctl enable docker
$ sudo systemctl restart docker && systemctl enable docker
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum makecache fast
$ sudo yum remove docker docker-common docker-selinux docker-engine
$ sudo yum install docker-ce
$ sudo yum install --setopt=obsoletes=0    docker-ce-17.03.2.ce-1.el7.centos.x86_64    docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch
$ sudo systemctl enable docker && sudo systemctl start docker

Docker がインストールされたことの確認

$ docker -v
Docker version 17.03.2-ce, build f5ec1e2

kubelet の再起動と自動起動有効 + スワップ領域の無効化

$ sudo systemctl restart kubelet && sudo systemctl enable kubelet
$ sudo swapoff -a

kubeadm join の際は、マスターはTCP 6443番ポートでアクセスするので、マスターノードの EC2 インスタンスのセキュリティグループのインバウンドで許可しておく。

$ sudo kubeadm join 172.31.27.122:6443 --token xxxxxxxxxxxxxxxxxxxxxxx --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

マスターからノードの状況確認。正常にインストールされている。

[ec2-user@k8s-master ~]$ sudo kubectl get nodes
NAME           STATUS    ROLES     AGE       VERSION
k8s-master     Ready     master    41m       v1.11.1
worker-node1   Ready     <none>    19m       v1.11.1
PreviousKubernetes 入門NextEKSを利用してKubernetesでSpring MVCをデプロイ (NLB + Auto Scaling)

Last updated 1 month ago