こちらを参考に、CentOS7上にkubernetesクラスタを構築した手順をまとめました。
実行環境は次の通りです。
- CentOS 7.4
- kubernetes v1.5.2
- flanneld 0.7.1
- etcd 3.2.22
- Docker 1.13.1
##kubernetesのインストール
etcd, kubernetes, flannelをインストール
- etcd: クラスタ間の管理情報共有機能
- flannel: コンテナ間の内部VXLANネットワーク
# vi /etc/hosts
10.44.59.239 master
yum -y install etcd kubernetes flannel
etcdの設定(外部からの接続を許可)と起動
# vi /etc/etcd/etcd.conf
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
# systemctl start etcd
# systemctl enable etcd
flannelの設定 (内部仮想ネットワークのアドレスを指定) と起動
# etcdctl mk /atomic.io/network/config '{"Network":"172.17.0.0/24"}'
# systemctl start flanneld
# systemctl enable flanneld
##kubernetesの設定
RSA鍵の発行
# openssl genrsa -out /etc/kubernetes/serviceaccount.key 2048
##マスターサーバの指定
# vi /etc/kubernetes/config
# How the controller-manager, scheduler, and proxy find the apiserver
KUBE_MASTER="--master=http://10.44.59.239:8080"
##自マシンのホスト名とAPI Serverの設定
# vi /etc/kubernetes/kubelet
KUBELET_HOSTNAME="--hostname-override=master"
KUBELET_API_SERVER="--api-servers=http://10.44.59.239:8080"
KUBELET_ADDRESS="--address=10.44.59.239" に変更 (2019/1/22 追記 ※)
##API Serverの設定
- KUBE_API_ADDRESSにマスターサーバーのIPアドレスを指定
- KUBE_API_ARGSに作成したRSA鍵のパスを指定
# vi /etc/kubernetes/apiserver
KUBE_API_ADDRESS="--insecure-bind-address=10.44.59.239"
KUBE_ETCD_SERVERS="--etcd-servers=http://10.44.59.239:2379"
KUBE_API_ARGS="--service_account_key_file=/etc/kubernetes/serviceaccount.key"
##controller-manager
鍵ファイルの設定
# vi /etc/kubernetes/controller-manager
# Add your own!
KUBE_CONTROLLER_MANAGER_ARGS="--service_account_private_key_file=/etc/kubernetes/serviceaccount.key"
サービスの起動
# systemctl start kube-apiserver
# systemctl start kube-controller-manager
# systemctl start kube-scheduler
# systemctl start kube-proxy
# systemctl start kubelet
# systemctl enable flanneld
# systemctl enable etcd
# systemctl enable kube-apiserver
# systemctl enable kube-controller-manager
# systemctl enable kube-scheduler
# systemctl enable kube-proxy
# systemctl enable kubelet
kubectlコマンドによる設定
# kubectl config set-cluster cluster --server=http://master:8080
# kubectl config set-credentials cluster-admin --username=admin --password=XXXXX
# kubectl config set-context cluster --cluster=cluster --user=cluster-admin
# kubectl config use-context cluster
設定確認
# kubectl config view
apiVersion: v1
clusters:
- cluster:
server: http://master:8080
name: cluster
contexts:
- context:
cluster: cluster
user: cluster-admin
name: cluster
##クラスタ情報の確認
# kubectl cluster-info
Kubernetes master is running at http://master:8080
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
node情報の確認
# kubectl get nodes
NAME STATUS AGE
master Ready 10m
##firewallの設定
workerとの通信用に、2379、8080ポートを開ける
# firewall-cmd --add-port=2379/tcp --zone=public --permanent
# firewall-cmd --add-port=8080/tcp --zone=public --permanent
# firewall-cmd --reload