■Kubernetes node サーバの払い出し
ご利用のIaaSが提供するサーバの払い出し方法に従って、作成してください。 ご利用のIaaSがFUJITSU Cloud service for OSSの場合、サービスポータルまたはAPI等を使用して作成します。 詳細はIaaSドキュメントを参照してください。
払い出しを行う際に、下記の設定を行う必要があります。既存のKubernetes nodeの設定を参考に設定してください。 既存のサーバの確認操作についてはIaaSサービスポータルユーザーズガイドを参照してください。
ネットワークは2つ割り当てる必要があります。
払い出し後に、既存のKubernetes nodeの設定を参考にネットワークの設定を行ってください。
また、払い出し後に、既存のKubernetes nodeの設定を参考にIaaSポータル等から拡張ボリューム(ブロックストレージ)を作成、および、払い出したKubernetes nodeサーバへの接続を行ってください。
作成したサーバにSSHで接続し、下記の設定を行います。
■NTPの設定
既存のKubernetes nodeの設定に合わせて設定してください。
■Docker/Docker-Composeインストール
【CentOSの場合】と記載された手順については、サーバのOSがCentOSの場合のみ実施してください。
【RHELの場合】と記載された手順については、サーバのOSがRed Hat Enterprise Linuxの場合のみ実施してください。
【RHELの場合】RHUIをセットアップします。
FUJITSU Cloud Service for OSS ポータルの以下を参照し、RHUI設定用ファイルをセットアップしてください。
RHUI設定用ファイル > Red Hat Update Infrastructure 3.0移行手順 > クライアントパッケージの取得
SELinuxを無効化します。
> sudo su # sed -i "s/\(^SELINUX=\).*/\1disabled/" /etc/selinux/config
カーネルパラメーターを設定します。
# sysctl net.ipv4.conf.all.forwarding=1 # echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
OSを再起動します。
# reboot
管理者権限に変更します。
> sudo su -
sudoが使えない場合は、以下を実行してください。
> su -
【RHELの場合】firewalldサービスを停止・無効化します。
# systemctl stop firewalld # systemctl disable firewalld
メディアパックに入っている下記のパッケージを任意の場所にコピーします。
【CentOSの場合】
【RHELの場合】
Dockerのインストールを実行します。
【CentOSの場合】
コピーしたパッケージの存在するディレクトリで実行してください。
# yum -y localinstall yum-utils-1.1.31-46.el7_5.noarch.rpm \ device-mapper-persistent-data-0.7.3-3.el7.x86_64.rpm \ lvm2-2.02.177-4.el7.x86_64.rpm \ lvm2-libs-2.02.177-4.el7.x86_64.rpm \ device-mapper-1.02.146-4.el7.x86_64.rpm \ device-mapper-event-1.02.146-4.el7.x86_64.rpm \ device-mapper-event-libs-1.02.146-4.el7.x86_64.rpm \ device-mapper-libs-1.02.146-4.el7.x86_64.rpm \ docker-ce-18.03.0.ce-1.el7.centos.x86_64.rpm # systemctl enable docker # systemctl start docker # useradd -g docker docker
【RHELの場合】
# yum install -y \ yum-utils-1.1.31 \ device-mapper-persistent-data-0.7.3 \ lvm2-2.02.180 \ docker-1.13.1-88.git07f3374.el7 # systemctl enable docker
【RHELの場合】Dockerの設定を行います。
# sed -i \ -e "s/DOCKER_STORAGE_OPTIONS=.*/DOCKER_STORAGE_OPTIONS=\"--storage-driver devicemapper\"/g" \ /etc/sysconfig/docker-storage # sed -i \ -e "s/OPTIONS=.*/OPTIONS='--log-driver=json-file --signature-verification=false'/g" \ /etc/sysconfig/docker # sed -i \ -e "s/--exec-opt native.cgroupdriver=.*/--exec-opt native.cgroupdriver=cgroupfs/g" \ -e '/--seccomp-profile=/d' \ /usr/lib/systemd/system/docker.service
【RHELの場合】設定の反映を行います。
# systemctl daemon-reload
【RHELの場合】LVMの設定を実施します。
# vgcreate docker /dev/vdb # lvcreate --wipesignatures y -n thinpool docker -l 95%VG # lvcreate --wipesignatures y -n thinpoolmeta docker -l 1%VG # lvconvert -y \ --zero n \ -c 512K \ --thinpool docker/thinpool \ --poolmetadata docker/thinpoolmeta
以下のファイルを作成してください。
/etc/lvm/profile/docker-thinpool.profile
activation { thin_pool_autoextend_threshold=80 thin_pool_autoextend_percent=20 }
下記コマンドを実行してください。
# lvchange --metadataprofile docker-thinpool docker/thinpool
以下のファイルを作成してください。
/etc/docker/daemon.json
【CentOSの場合】
{ "insecure-registries": [ "172.16.1.0:4567" ], "log-driver": "json-file", "log-opts": { "max-file": "10", "max-size": "10m" }, "storage-driver": "devicemapper", "storage-opts": [ "dm.directlvm_device=/dev/vdb" ] }
【RHELの場合】
{ "insecure-registries": [ "172.16.1.0:4567" ], "log-driver": "json-file", "log-opts": { "max-file": "10", "max-size": "10m" }, "storage-driver": "devicemapper", "storage-opts": [ "dm.thinpooldev=/dev/mapper/docker-thinpool", "dm.use_deferred_removal=true", "dm.use_deferred_deletion=true" ] }
【RHELの場合】設定の反映を行います。
# systemctl daemon-reload
【RHELの場合】Dockerを起動します。
# systemctl start docker
docker-composeのインストールを実行します。
メディアパックからコピーしたパッケージの存在するディレクトリで実行してください。
【CentOSの場合】
# chown root:docker /etc/docker/daemon.json # systemctl restart docker # easy_install pip-9.0.3.tar.gz # pip install pip-9.0.3-py2.py3-none-any.whl # pip install docker_compose-1.21.0-py2.py3-none-any.whl # exit >
【RHELの場合】
# easy_install pip-9.0.3.tar.gz # pip install pip-9.0.3-py2.py3-none-any.whl # pip install docker_compose-1.21.0-py2.py3-none-any.whl # exit >
■Dockerイメージのload
メディアパックに入っている下記のファイルをコピーしてください。
コピーしたファイルの存在するディレクトリで実行してください。
> sudo su # docker load -i gcr.io_kubernetes-helm_tiller_v2.9.1.tar.gz # docker load -i k8s.gcr.io_defaultbackend_1.3.tar.gz # docker load -i k8s.gcr.io_etcd-amd64_3.1.12.tar.gz # docker load -i k8s.gcr.io_k8s-dns-dnsmasq-nanny-amd64_1.14.8.tar.gz # docker load -i k8s.gcr.io_k8s-dns-kube-dns-amd64_1.14.8.tar.gz # docker load -i k8s.gcr.io_k8s-dns-sidecar-amd64_1.14.8.tar.gz # docker load -i k8s.gcr.io_kube-apiserver-amd64_v1.10.12.tar.gz # docker load -i k8s.gcr.io_kube-controller-manager-amd64_v1.10.12.tar.gz # docker load -i k8s.gcr.io_kube-proxy-amd64_v1.10.12.tar.gz # docker load -i k8s.gcr.io_kube-scheduler-amd64_v1.10.12.tar.gz # docker load -i k8s.gcr.io_pause-amd64_3.1.tar.gz # docker load -i quay.io_coreos_flannel_v0.10.0-amd64.tar.gz # docker load -i quay.io_kubernetes-ingress-controller_nginx-ingress-controller_0.15.0.tar.gz # exit >
■DNSの設定
既存のKubernetes nodeの設定に合わせて設定してください。
■yumリポジトリの設定
> sudo su
上記コマンドの後、以下のファイルを作成してください。
/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/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
その後、以下を入力し権限を設定してください。
# chown root:root /etc/yum.repos.d/kubernetes.repo # chmod 644 /etc/yum.repos.d/kubernetes.repo # exit >
■Kubernetesインストール
メディアパックに入っている下記のパッケージをコピーしてください。
【CentOSの場合】
【RHELの場合】
コピーしたパッケージの存在するディレクトリで実行してください。
下記の$IPADDRには、az1_common_management_networkに割り当てたIPアドレスを指定します。
【CentOSの場合】
> sudo su # yum -y localinstall ebtables-2.0.10-16.el7.x86_64.rpm \ 6cf7336247f0cee728548c92956baeb267d544740c7e80e7b3c0aa37209367b4-kubeadm-1.10.12-0.x86_64.rpm \ fe33057ffe95bfae65e2f269e1b05e99308853176e24a4d027bc082b471a07c0-kubernetes-cni-0.6.0-0.x86_64.rpm \ socat-1.7.3.2-2.el7.x86_64.rpm \ 3d82ae28cd39aa5f80b5b68b74d63b4a4c84b31ba7973c08b8ae72c1e4eaeade-kubectl-1.10.12-0.x86_64.rpm \ 2f6f9dbc0cefa96e1282ec67151f4975781be2cc95c0575b8e8a3fd7ba2e19ad-kubelet-1.10.12-0.x86_64.rpm \ 53edc739a0e51a4c17794de26b13ee5df939bd3161b37f503fe2af8980b41a89-cri-tools-1.12.0-0.x86_64.rpm \ tcp_wrappers-libs-7.6-77.el7.x86_64.rpm # sed -i 's/cgroup-driver=systemd/cgroup-driver=cgroupfs/' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf # sed -ri 's/cluster-dns=[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/cluster-dns=10.1.0.10/' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf # echo "Environment=\"KUBELET_EXTRA_ARGS=--node-ip=$IPADDR\"" >> /etc/systemd/system/kubelet.service.d/10-kubeadm.conf # systemctl enable kubelet # systemctl daemon-reload # systemctl restart kubelet # exit
【RHELの場合】
> sudo su # yum -y install ebtables-2.0.10-16.el7 \ socat-1.7.3.2-2.el7 \ tcp_wrappers-libs-7.6-77.el7 # yum -y localinstall \ 6cf7336247f0cee728548c92956baeb267d544740c7e80e7b3c0aa37209367b4-kubeadm-1.10.12-0.x86_64.rpm \ fe33057ffe95bfae65e2f269e1b05e99308853176e24a4d027bc082b471a07c0-kubernetes-cni-0.6.0-0.x86_64.rpm \ 3d82ae28cd39aa5f80b5b68b74d63b4a4c84b31ba7973c08b8ae72c1e4eaeade-kubectl-1.10.12-0.x86_64.rpm \ 2f6f9dbc0cefa96e1282ec67151f4975781be2cc95c0575b8e8a3fd7ba2e19ad-kubelet-1.10.12-0.x86_64.rpm \ 53edc739a0e51a4c17794de26b13ee5df939bd3161b37f503fe2af8980b41a89-cri-tools-1.12.0-0.x86_64.rpm # sed -i 's/cgroup-driver=systemd/cgroup-driver=cgroupfs/' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf # sed -ri 's/cluster-dns=[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/cluster-dns=10.1.0.10/' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf # echo "Environment=\"KUBELET_EXTRA_ARGS=--node-ip=$IPADDR\"" >> /etc/systemd/system/kubelet.service.d/10-kubeadm.conf # systemctl enable kubelet # systemctl daemon-reload # systemctl restart kubelet # exit
■カーネルパラメーターの設定
/etc/sysctl.confに下記のパラメーターを設定し保存後、sysctl -pコマンドを実行します。
■kubeadm設定
Kubernetes masterサーバでトークンを発行します。
> sudo kubeadm token create
上記で発行されたトークンを指定して、クラスタに参加します。
> sudo kubeadm join --token <トークン> \ 172.16.2.0:6443 --discovery-token-unsafe-skip-ca-verification --ignore-preflight-errors=CRI
■ログローテーションのインストール
【CentOSの場合】
メディアパックに入っている下記のパッケージをコピーしてください。
コピーしたパッケージの存在するディレクトリで実行してください。
> sudo yum -y localinstall logrotate-3.8.6-15.el7.x86_64.rpm
【RHELの場合】
> sudo yum install -y logrotate-3.8.6-15.el7
■ログローテーションの設定
下記の2つのファイルを作成します。
/etc/logrotate.d/syslog
/var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler { size 5M daily rotate 14 missingok sharedscripts compress postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
/etc/logrotate.d/tuned
/var/log/tuned/tuned.log { size 1M daily rotate 14 missingok copytruncate }
作成したファイルの権限を変更します。
> sudo chown root:root /etc/logrotate.d/syslog > sudo chown root:root /etc/logrotate.d/tuned > sudo chmod 644 /etc/logrotate.d/syslog > sudo chmod 644 /etc/logrotate.d/tuned
■LoadBalancerへのインスタンスの追加
上記の名前を持つLoadBalancerの負荷分散対象(メンバー)として、追加したサーバのインスタンスIDの追加を行ってください。
ご利用のIaaSがFUJITSU Cloud service for OSSの場合、作成したサーバのインスタンスIDを確認した上で、APIを使用してインスタンスIDの追加を行う必要があります。 インスタンスの登録についての詳細はIaaS APIリファレンスを参照してください。
API Proxyへの振分け設定の追加手順については「操作ガイド」の「振り分け先ノードの追加および削除」を参照してください。