この記事は3年以上前に書かれた記事で内容が古い可能性があります
Kubernetes超入門(Vagrant・CentOS7)〜(2)マスターサーバ設定〜
2019-10-15
マスターサーバの設定
Kubernetes超入門(Vagrant・CentOS7)〜(1)環境づくり〜の続き
先ほど作成したマスターサーバ「kubemaster」の設定をしていく
マスターサーバにログイン
Last login: Mon Oct 14 06:29:15 2019 from 10.0.2.2 |
[vagrant@localhost ~]$ sudo su |
必要なものをインストール
ざっくりしか理解していないが
etcdは設定情報を複数サーバで共有するもの
flannelはサーバ間のネットワーク通信を可能にするもの
インストールできているか確認
Failed to set locale, defaulting to C |
etcd.x86_64 3.3.11-2.el7.centos @extras |
flannel.x86_64 0.7.1-4.el7 @extras |
kubernetes.x86_64 1.5.2-0.7.git269f928.el7 @extras |
kubernetes-client.x86_64 1.5.2-0.7.git269f928.el7 @extras |
kubernetes-master.x86_64 1.5.2-0.7.git269f928.el7 @extras |
kubernetes-node.x86_64 1.5.2-0.7.git269f928.el7 @extras |
etcdの設定
etcdの設定をする
設定ファイルは「/etc/etcd/etcd.conf」
「ETCD_LISTEN_CLIENT_URLS」の値を変更する
設定できたので、etcdサービスを起動する
flannelの設定
flannelの設定をしていく
ノード間のネットワーク設定をするということ
「/etc/sysconfig/flanneld」の「FLANNEL_ETCD_PREFIX」の値を確認しておく
FLANNEL_ETCD_PREFIX= "/atomic.io/network" |
先ほど確認した「/atomic.io/network」のkeyを設定しにいく
{ "Network" : "172.17.0.0/16" } |
設定されたか確認
{ "Network" : "172.17.0.0/16" } |
設定できたのでflannelを起動
kubernetesの設定
一旦「/etc/kubernetes/」配下の設定ファイルを確認する
apiserver config controller-manager kubelet proxy scheduler |
「apiserver」は、文字通りapiを提供しているサービス。Kubernetesを操作するために必要なサービス
「controller-manager」は、コントローラたちを管理するサービス。コントローラはリソースがうまいこと使われるように管理するもの、とざっくり理解
「kubelet」はpodの状態を管理するサービス。マスターサーバでは使わないので今回は起動しない
「proxy」はノードのルーティングを管理するサービス
「scheduler」は、podをどのノードで起動するかなどを決めるサービス
ここでやることは
鍵を作成して「apiserver」「controller-manager」「config」に鍵の場所に付いて設定を追加すること
まずは鍵の作成
「/etc/kubernetes/apiserver」の設定変更
「KUBE_API_ADDRESS」「KUBE_API_ARGS」に設定追加
& lt ; KUBE_API_ADDRESS="--insecure-bind-address=192.168.33.10" |
> KUBE_API_ADDRESS="--insecure-bind-address=127.0.0.1" |
& lt ; KUBE_API_ARGS="--service_account_key_file=/etc/kubernetes/serviceaccount.key" |
> KUBE_API_ARGS="" |
「/etc/kubernetes/controller-manager」の設定変更
「KUBE_CONTROLLER_MANAGER_ARGS」に設定追加
& lt ; KUBE_CONTROLLER_MANAGER_ARGS="--service_account_private_key_file=/etc/kubernetes/serviceaccount.key" |
> KUBE_CONTROLLER_MANAGER_ARGS="" |
「/etc/kubernetes/config」の設定変更
「KUBE_MASTER」に設定追加
設定ができたので起動していく
kubectlの設定
「kubectl」はkubernetesを操作するためのコマンドツール
これが先ほど起動した「kube-apiserver」経由でapiを叩きにいく
コマンドを打つユーザーや場所で設定をする
必ずしもマスターサーバでなくても良いが、今回はマスターサーバで設定する
ユーザーはvagrantユーザーで設定してみる
※環境に合わせて設定ください
まずはvagrantユーザーに移動
[vagrant@localhost ~]$ whoami |
設定していく
$ kubectl config set -credentials myself --username=admin --password=vagrant |
Cluster "local-server" set . |
$ kubectl config set -context default-context --cluster= local -server --user=myself |
Context "default-context" set . |
$ kubectl config use-context default-context |
Switched to context "default-context" . |
$ kubectl config set contexts.default-context.namespace default |
Property "contexts.default-context.namespace" set . |
kubectlコマンドが打てるか確認
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump' . |
うまくいった
SSL/TLS証明書の設定
いまいちなぜ必要か理解していないが、
ここでSSL/TLS証明書の設定が必要らしいので淡々と設定していく
$ sudo mkdir -p /etc/kubernetes/ca |
独自証明書作成(「ca.key」「ca.crt」)
$ sudo openssl genrsa -out ca.key 2048 |
$ sudo openssl req -x509 -new -nodes -key ca.key -subj "/CN=192.168.33.10 " -days 10000 -out ca.crt |
サーバー鍵作成(「server.key」)
$ sudo openssl genrsa -out server.key 2048 |
KubernetesサービスIPアドレス確認
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE |
kubernetes 10.254.0.1 <none> 443/TCP 15m |
csr.confファイル作成(新規作成)
subjectAltName = @alt_names |
DNS.2 = kubernetes.default |
DNS.3 = kubernetes.default.svc |
DNS.4 = kubernetes.default.svc.cluster |
DNS.5 = kubernetes.default.svc.cluster. local |
authorityKeyIdentifier=keyid,issuer:always |
basicConstraints=CA:FALSE |
keyUsage=keyEncipherment,dataEncipherment |
extendedKeyUsage=serverAuth,clientAuth |
subjectAltName=@alt_names |
サーバー証明書の署名リクエストファイルを作成(「server.csr」)
$ sudo openssl req -new -key server.key -out server.csr -config csr.conf |
サーバー証明書を作成(「server.csr」)
$ sudo openssl x509 -req - in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000 -extensions v3_ext -extfile csr.conf |
subject=/C=JP/ST=dummy/L=dummy/O=dummy/OU=dummy/CN=192.168.33.10 |
証明書が作成できたので、
「apiserver」「controller-manager」の設定ファイルに場所を教えてあげる
「/etc/kubernetes/apiserver」の「KUBE_API_ARGS」を変更
※「KUBE_API_ADDRESS」は変更済み
$ sudo vi /etc/kubernetes/apiserver |
$ diff /etc/kubernetes/apiserver /etc/kubernetes/apiserver.backup |
& lt ; KUBE_API_ADDRESS="--insecure-bind-address=192.168.33.10" |
> KUBE_API_ADDRESS="--insecure-bind-address=127.0.0.1" |
& lt ; KUBE_API_ARGS="--client-ca- file =/etc/kubernetes/ca/ca.crt \ |
& lt ; --tls-cert- file =/etc/kubernetes/ca/server.crt \ |
& lt ; --tls-private-key- file =/etc/kubernetes/ca/server.key \ |
& lt ; --service-account-key- file =/etc/kubernetes/serviceaccount.key" |
> KUBE_API_ARGS="" |
「/etc/kubernetes/controller-manager」の「KUBE_CONTROLLER_MANAGER_ARGS」を変更
$ sudo vi /etc/kubernetes/controller-manager |
$ diff /etc/kubernetes/controller-manager /etc/kubernetes/controller-manager.backup |
& lt ; KUBE_CONTROLLER_MANAGER_ARGS="--service-account-private-key- file =/etc/kubernetes/serviceaccount.key \ |
& lt ; --root-ca- file =/etc/kubernetes/ca/ca.crt \ |
& lt ; --cluster-signing-cert- file =/etc/kubernetes/ca/ca.crt" |
> KUBE_CONTROLLER_MANAGER_ARGS="" |
マスターサーバの設定はここまで
次はコンテナ稼働ノードの設定をするので、マスターサーバからログアウトしておく
Connection to 127.0.0.1 closed. |
続きはKubernetes超入門(Vagrant・CentOS7)〜(3)ノード設定〜