マスターのK8Sインストール

設定と起動KUBE-apiserver
KUBE-apiserver.serviceを作成します
/usr/lib/systemd/system/kube-apiserver.service
[Unit]
Description=Kubernetes API Service
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target
After=etcd.service
[Service]
EnvironmentFile=-/etc/kubernetes/config
ExecStart=/usr/local/bin/kube-apiserver \
        --anonymous-auth=false \
        --basic-auth-file=/etc/kubernetes/basic_auth_file \
        $KUBE_LOGTOSTDERR \
        $KUBE_LOG_LEVEL \
        $KUBE_ALLOW_PRIV \
        --etcd-servers=https://172.16.20.206:2379,https://172.16.20.207:2379,https://172.16.20.208:2379 \
        --advertise-address=172.16.20.206 \
        --bind-address=0.0.0.0 \
        --insecure-bind-address=0.0.0.0 \
        --service-cluster-ip-range=10.254.0.0/16 \
        --admission-control=ServiceAccount,NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota \
        --authorization-mode=RBAC,Node \
        --runtime-config=rbac.authorization.k8s.io/v1beta1 \
        --kubelet-https=true --enable-bootstrap-token-auth=true \
        --token-auth-file=/etc/kubernetes/token.csv \
        --service-node-port-range=30000-32767 \
        --tls-cert-file=/etc/kubernetes/ssl/kubernetes.pem \
        --tls-private-key-file=/etc/kubernetes/ssl/kubernetes-key.pem \
        --client-ca-file=/etc/kubernetes/ssl/ca.pem \
        --service-account-key-file=/etc/kubernetes/ssl/ca-key.pem \
        --etcd-cafile=/etc/kubernetes/ssl/ca.pem \
        --etcd-certfile=/etc/kubernetes/ssl/kubernetes.pem \
        --etcd-keyfile=/etc/kubernetes/ssl/kubernetes-key.pem \
        --enable-swagger-ui=true \
        --apiserver-count=3 \
        --allow-privileged=true \
        --audit-log-maxage=30 \
        --audit-log-maxbackup=3 \
        --audit-log-maxsize=100 \
        --audit-log-path=/var/lib/audit.log \
        --event-ttl=1h
Restart=on-failure
Type=notify
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
説明

RBACモデルを使用して、認可で指定--authorizationモード= RBACセキュアポート、認証のための要求を拒否失敗しました。
KUBE-スケジューラ、同じマシン上に展開KUBE-コントローラー・マネージャの船とKUBE-apiserver、彼らは非セキュアポートを使用KUBE-apiserver通信;
kubelet、KUBE-プロキシ、他のノードのノード上に展開kubectlは、セキュアポートへのアクセスKUBE-apiserverを通じて、あなたは最初にTLS証明書の認証を渡す必要があり、その後、RBACによって許可した場合、
KUBE-プロキシの使用によりkubectl指定されたユーザーに関連した証明書は、グループオブジェクトは、RBACの承認によって達成されていない。
kubelet TLSブートストラップメカニズムは、もはや、--kubelet-証明書機関を指定した場合- kubelet -client-証明書と--kubelet、クライアント-エラー;:キーオプション、「不明な権限X509によって署名された証明書 」 そうでない場合は、後続のKUBE-apiserverチェックkubelet証明書が発生
--admission制御値がServiceAccountが含まれている必要があります。
--bind-アドレスは127.0.0.1にすることはできません。
ランタイム-config設定apiVersionは、ランタイムを表しますrbac.authorization.k8s.io/v1beta1
--service- クラスタ-IP-範囲指定のサービスクラスタIPアドレス、ルートのアドレス部が到達することはできません。
kubernetesオブジェクトがデフォルトetcd /レジストリパスに格納され、--etcd-prefixパラメータによって調整することができます。

KUBE-apiserverを開始
systemctl daemon-reload
systemctl enable kube-apiserver
systemctl start kube-apiserver
systemctl status kube-apiserver
KUBEコントローラマネージャ構成
KUBE-コントローラmanager.serviceを作成します
/usr/lib/systemd/system/kube-controller-manager.service
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
[Service]
EnvironmentFile=-/etc/kubernetes/config
ExecStart=/usr/local/bin/kube-controller-manager \
        $KUBE_LOGTOSTDERR \
        $KUBE_LOG_LEVEL \
        $KUBE_MASTER \
        --address=127.0.0.1 \
        --service-cluster-ip-range=10.254.0.0/16 \
        --cluster-name=kubernetes \
        --cluster-signing-cert-file=/etc/kubernetes/ssl/ca.pem \
        --cluster-signing-key-file=/etc/kubernetes/ssl/ca-key.pem  \
        --service-account-private-key-file=/etc/kubernetes/ssl/ca-key.pem \
        --root-ca-file=/etc/kubernetes/ssl/ca.pem \
        --leader-elect=true
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
説明

= --master HTTP:// {} MASTER_IP:8080:非セキュアポート8080とKUBE-apiserver通信、
ポッドクラスタ内の指定--cluster-CIDR CIDR範囲は、ネットワークは、(それぞれのノードとの間までルーティングされなければなりません)保証flanneld;
;クラスタサービスCIDRの範囲内--serviceクラスタ-IP-範囲指定のパラメータ、ネットワークはKUBE-apiserverをしなければならないパラメータ一貫した、到達不能ノード間でルーティングする必要があります
* --cluster-signing-指定された証明書とブートストラップTLS用に作成された証明書と秘密鍵ファイルに署名するために使用される秘密鍵、
証明書を検証するために使用される--root-CA-KUBE-apiserverファイルは、後に指定され、コンテナはポッドServiceAccountになりますCA証明書ファイルに配置され、
同じマシン上で現在KUBE-apiserver期待スケジューラ及びコントローラマネージャが原因--address値は、127.0.0.1でなければならない
マスタクラスタは、複数のマシンで構成される展開するとき--leaderエレクト= trueを選出作業状態でKUBEコントローラマネージャプロセス

スタート
systemctl daemon-reload
systemctl enable kube-controller-manager
systemctl start kube-controller-manager
検証
kubectl get componentstatuses
NAME                 STATUS      MESSAGE                                                                                     ERROR
scheduler            Unhealthy   Get http://127.0.0.1:10251/healthz: dial tcp 127.0.0.1:10251: connect: connection refused   
controller-manager   Healthy     ok                                                                                          
etcd-1               Healthy     {"health":"true"}                                                                           
etcd-2               Healthy     {"health":"true"}                                                                           
etcd-0               Healthy     {"health":"true"}
KUBE-スケジューラの設定
KUBE-scheduler.serviceを作成します
/usr/lib/systemd/system/kube-scheduler.service
[Unit]
Description=Kubernetes Scheduler Plugin
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
[Service]
EnvironmentFile=-/etc/kubernetes/config
ExecStart=/usr/local/bin/kube-scheduler \
            $KUBE_LOGTOSTDERR \
            $KUBE_LOG_LEVEL \
            $KUBE_MASTER \
            --leader-elect=true \
            --address=127.0.0.1
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
スタート
systemctl daemon-reload
systemctl start kube-scheduler
検証
kubectl get componentstatuses
NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok                  
controller-manager   Healthy   ok                  
etcd-0               Healthy   {"health":"true"}   
etcd-1               Healthy   {"health":"true"}   
etcd-2               Healthy   {"health":"true"}

kubectl get cs    (上面命令的简写)
NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok                  
controller-manager   Healthy   ok                  
etcd-0               Healthy   {"health":"true"}   
etcd-2               Healthy   {"health":"true"}   
etcd-1               Healthy   {"health":"true"}

おすすめ

転載: blog.51cto.com/phospherus/2445747