docker kubernetes dashboardインストールの導入の詳細

10202 ワード

1.環境の説明:
1).アーキテクチャ:
注:今回の実験サーバー環境はcentos 7.サービスインストールはyum installを採用した.
192.168.3.7 master 192.168.3.16 node
2).使用するパッケージ:
master: docker kubernetes-master etcd flannel nodes: docker kubernetes-node flannel
3).ソフトウェアバージョン:
docker: 1.10.3 kubernetes*: 1.2.0 etcd: 2.3.7
4).パッケージの説明:
docker:主役、言うまでもなくkubernetes-master:kubernetesサービス側kubernetes-node:kubernetesクライアントetcd:サーバが発見したキー値格納flannel:複数のサーバ上のdockerコンテナ間のネットワーク相互接続を打つ
2.環境初期化:
あなたはすべてdockerをして、初期化して何をするべきで、私はあなたに教えません.既存のyumソースファイルをバックアップして、アリ雲のyumソースをして、epelソース.アドレス:http://mirrors.aliyun.com
3.インストール構成docker:
注意:dockerはnetモードを採用しています.device-mapperパッケージがインストールされていることを確認してください.そうしないとdockerは起動できません.
1).   
# yum install docker -y
2).   
# cat /etc/sysconfig/docker|egrep -v "^#|^$"
OPTIONS=''
DOCKER_CERT_PATH=/etc/docker

4.マスターの構成
1).      .
# yum install kubernetes-master etcd flannel-y
2).   etcd.
# cat /etc/etcd/etcd.conf |egrep -v "^#|^$"
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" ##       
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.3.7:2379" ## etcd    ;  etcd   ,      url

##etcdサービスを開始#systemctl start etcd
3).kubernetesを配置する.
/etc/kubernetesディレクトリには、apiserver:kubernetes apiプロファイルconfig:kubernetesプライマリプロファイルcontroller-manager:kubernetesクラスタ管理プロファイルscheduler:kubernetes schedulerプロファイル
# cd /etc/kubernetes
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" ## kube        
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.3.7:2379" ## kube  etcd url
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=172.17.0.0/16" ##     docker      
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
KUBE_API_ARGS=""

  KUBE_ADMISSION_CONTROL      :   ServiceAccount   ,               .

# cat config |egrep -v "^#|^$"
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://192.168.3.7:8080" ## kube master api url

コントローラ-manager schedulerの2つのファイルはデフォルトの構成を採用すればよい.
5.nodesの構成
1).パッケージをインストールする.
# yum install kubernetes-node flannel -y
2).kubernetes nodeの構成
パッケージのインストールが完了すると、/etc/kubernetesディレクトリの下に次のファイルが表示されます.
config:kubernetesメインプロファイルkubelet:kubelet nodeプロファイルproxy:kubernetes proxyプロファイル
# cd /etc/kubernetes
# cat config |egrep -v "^#|^$"
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://192.168.3.7:8080" ## kube master api url

# cat kubelet |egrep -v "^#|^$"
KUBELET_ADDRESS="--address=0.0.0.0" ## kubelet         
KUBELET_PORT="--port=10250" ## kubelet   
KUBELET_HOSTNAME="--hostname-override=192.168.3.16" ##kubelet hostname, master  kubectl get nodes     
KUBELET_API_SERVER="--api-servers=http://192.168.3.7:8080" ## kube master api url
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""

proxy構成はデフォルトでよい.
6.ネットワーク構成:
masterとnodeはflannelをインストールしました
マスター構成:
# cat /etc/sysconfig/flanneld |egrep -v "^#|^$"
FLANNEL_ETCD="http://192.168.3.7:2379"
FLANNEL_ETCD_KEY="/kube/network"

# etcdctl mk /kube/network/config '{"Network":"172.17.0.0/16"}' ##      ip       ip      .

node構成:
# cat /etc/sysconfig/flanneld |egrep -v "^#|^$"
FLANNEL_ETCD="http://192.168.3.7:2379"
FLANNEL_ETCD_KEY="/kube/network"

7.サービスを開始する.
1).dockerサービスを開始する.
#systemctl start docker#ps aux|grep docker##サービスが正常に起動していることを確認します.起動していない場合は、/var/log/messageに移動して問題を見てください.
2).etcdサービスの起動
# systemctl start etcd
3).masterとnode上のflanneldサービスを起動する
# systemctl start flanneld
IPを表示するとflannel 0のネットワークインタフェースデバイスが表示されます.このアドレスはdocker 0アドレスと一致しています.一致しない場合は、上記のサービスが正常に起動しているかどうかを確認してください.
4).master上で動作k 8 sサービスを開始する.
起動順序:kube-apiserverが先頭.#systemctl start kube-apiserver#systemctl start kube-controller-manager#systemctl start kube-scheduler
以上のサービスが正常に起動しているか確認してください.
5).nodeで動作するk 8 sサービスを開始する.systemctl start kube-proxy#systemctl start kubelet
以上のサービスが正常に起動しているか確認してください.
6).アクセスhttp://kube-apiserver:port http://192.168.3.7:8080 すべてのリクエストurlの表示http://192.168.3.7:8080/healthz/ping 健康状態の確認
8.k 8 s dashboardを開く:
1).  master     .
# kubectl get nodes ##   k8s   .
NAME STATUS AGE
192.168.3.16 Ready 6h
# kubectl get namespace ##   k8s      
NAME STATUS AGE
default Active 17h
2).  master   kube-system namespace
# cd /usr/local/src/docker
# cat kube-namespace.yaml
{
"kind": "Namespace",
"apiVersion": "v1",
"metadata": {
"name": "kube-system"
}
}
# kubectl create -f kube-namespace.yaml
namespace "kube-system" created
# kubectl get namespace ##   k8s      
NAME STATUS AGE
default Active 17h
kube-system Active 17h

3).masterにkube-dashboard.yamlを新規作成する
wget http://docs.minunix.com/docker/kubernetes-dashboard.yaml -O/usr/local/src/docker/kube-dashboard.yaml
ファイルのapiserver-hostを自分のkebu-apiserverに変更してください
podを作成するには:
# kubectl create -f kube-dashboard.yaml deployment "kubernetes-dashboard"created You have exposed your service on an external port on all nodes in your cluster. If you want to expose this service to the external internet, you may need to set up firewall rules for the service port(s) (tcp:31576) to serve traffic.
See http://releases.k8s.io/release-1.2/docs/user-guide/services-firewalls.md for more details. service "kubernetes-dashboard"created
検証:
# kubectl get pods --namespace=kube-system NAME READY STATUS RESTARTS AGE kubernetes-dashboard-3138400848-grtfm 1/1 ContainerCreating 0 27s
コンテナの詳細を表示する手順は、次のとおりです.
# kubectl describe pods kubernetes-dashboard-3138400848-grtfm --namespace=kube-system
複数のnodeがある場合、このコマンドでコンテナがどのnodeに割り当てられているか、起動後に割り当てられたipアドレスなどの情報を見ることができます.結果に「State:Running」が見える場合は、nodeに移動してコンテナの運転状態を確認し、upの状態であるはずです.
4).この時点でhttp://kube-apiserver:port/uiアクセス
http://192.168.3.7:8080/ui
dockerを思う存分使い始めましょう!
9.注意点&問題点:
1).サービスの起動順序,特にmasterに注意し,etcdの起動を確保する場合はapiserverを先に起動する
2).yamlファイルのフォーマットインデントに注意する.
3).作成したpodのstatusがdepeningであることが判明した場合、理由はいくつかあります.その1つは、クライアントがlisten 127.0.0.1のサービスを構成しているため、masterが接続できません.二つ目は、環境の初期化ができていないことです.3つ目はnodeに移行しdocker logsを使用してログを表示することです
4).kubernetes-dashboard.yamlファイルのcontainers imagesアドレスは現在公開されており、09月30日に閉鎖される.
5).自分が海外vpsを持っている場合は、サーバ上でdocker registryを作成できます.まずGoogleのk 8 s dashboardをpullして、それから自分のregistryにpushして、自分でyamlの中のimageを修正すればいいです.