kube_schedulerのKubernetes v1.14.0クラスタの展開

準備1、kube_schedulerクラスタ

上記のリストにないようなサーバーや他のサーバーのKUBE-apiserver展開におけるデフォルトのkube_scheduler・デプロイメント構成
のバイナリファイルを、したがって、一緒にKUBE-apiserverに含まれるとのバイナリディストリビューションをダウンロードしていません

図2に示すように、証明書kube_schedulerアクセス​​KUBE-apiserverを生成

cat << EOF | tee /apps/work/k8s/cfssl/k8s/k8s_scheduler.json
{
  "CN": "system:kube-scheduler",
  "hosts": [""], 
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "GuangDong",
      "L": "GuangZhou",
      "O": "system:kube-scheduler",
      "OU": "Kubernetes-manual"
    }
  ]
}
EOF

##  生成 Kubernetes Scheduler 证书和私钥
cfssl gencert \
    -ca=/apps/work/k8s/cfssl/pki/k8s/k8s-ca.pem \
    -ca-key=/apps/work/k8s/cfssl/pki/k8s/k8s-ca-key.pem \
    -config=/apps/work/k8s/cfssl/ca-config.json \
    -profile=kubernetes \
    /apps/work/k8s/cfssl/k8s/k8s_scheduler.json | \
    cfssljson -bare /apps/work/k8s/cfssl/pki/k8s/k8s_scheduler

3. kube_scheduler.kubeconfigを作成します。

cd /apps/work/k8s/kubernetes/server/config
kubectl config set-cluster kubernetes \
    --certificate-authority=/apps/work/k8s/cfssl/pki/k8s/k8s-ca.pem \
    --embed-certs=true \
    --server=https://192.168.3.10:5443 \
    --kubeconfig=kube_scheduler.kubeconfig

kubectl config set-credentials system:kube-scheduler \
    --client-certificate=/apps/work/k8s/cfssl/pki/k8s/k8s_scheduler.pem \
    --embed-certs=true \
    --client-key=/apps/work/k8s/cfssl/pki/k8s/k8s_scheduler-key.pem \
    --kubeconfig=kube_scheduler.kubeconfig
kubectl config set-context kubernetes \
    --cluster=kubernetes \
    --user=system:kube-scheduler \
    --kubeconfig=kube_scheduler.kubeconfig
kubectl config use-context kubernetes --kubeconfig=kube_scheduler.kubeconfig
说明:--server=https://192.168.3.10:5443  为每台kube-apiserver IP加端口不使用vip ip 连接

図4に示すように、いくつかの特別なパラメータを示すkube_scheduler

=レガシー・ポリシー設定を使用本当の自分自身のスケジューリング方法作成
= /アプリを--policy-config設定ファイルを / / kubernetesのconfig /スケジューラポリシー-config.json 自身のスケジューリングアルゴリズム
VIスケジューラポリシー-config.jsonを

{
"kind" : "Policy",
"apiVersion" : "v1",
"predicates" : [
{"name" : "PodFitsHostPorts"},
{"name" : "PodFitsResources"},
{"name" : "NoDiskConflict"},
{"name" : "NoVolumeZoneConflict"},
{"name" : "MatchNodeSelector"},
{"name" : "HostName"}
],
"priorities" : [
{"name" : "LeastRequestedPriority", "weight" : 1},
{"name" : "BalancedResourceAllocation", "weight" : 1},
{"name" : "ServiceSpreadingPriority", "weight" : 1},
{"name" : "EqualPriority", "weight" : 1}
],
"hardPodAffinitySymmetricWeight" : 10
}

説明:これはデフォルトのスケジューリング・アルゴリズムが変更されませんで

5、構成など、すべてのサーバー構成を起動しkube_scheduler作成

说明: --address不能是服务器ip如果写服务器的ip kubectl get cs 就会报错
cd /apps/work/k8s/kubernetes/server/conf
vi kube-scheduler
KUBE_SCHEDULER_OPTS=" \
                   --logtostderr=false \
                   --address=0.0.0.0 \
                   --leader-elect=true \
                   --kubeconfig=/apps/kubernetes/config/kube_scheduler.kubeconfig \
                   --authentication-kubeconfig=/apps/kubernetes/config/kube_scheduler.kubeconfig \
                   --authorization-kubeconfig=/apps/kubernetes/config/kube_scheduler.kubeconfig \
                   --alsologtostderr=true \
                   --kube-api-qps=100 \
                   --kube-api-burst=100 \
                   --log-dir=/apps/kubernetes/log \
                   --v=2"

6、スタートアップファイルKUBE-scheduler.serviceを作成

cd /apps/work/k8s/kubernetes/
vi kube-scheduler.service
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/kubernetes/kubernetes

[Service]
LimitNOFILE=1024000
LimitNPROC=1024000
LimitCORE=infinity
LimitMEMLOCK=infinity

EnvironmentFile=-/apps/kubernetes/conf/kube-scheduler
ExecStart=/apps/kubernetes/bin/kube-scheduler $KUBE_SCHEDULER_OPTS
Restart=on-failure
RestartSec=5
User=k8s

[Install]
WantedBy=multi-user.target

7、KUBE-スケジューラ設定ファイルのスタートアップファイルを配布

说明:  使用ansible 分发时kube_scheduler.kubeconfig  server=https://192.168.3.10:5443 可以使用参数进行分发
server=https://{{ ansible_ssh_host }}:5443 这样就不用每次修改修改 ansible_ssh_host 参数就是连接远程服务器ip
 分发 kube_scheduler.kubeconfig 
 ansible -i host master -m  template -a "src=server/config/kube_scheduler.kubeconfig dest=/apps/kubernetes/config owner=k8s group=root mode=644" 
分发:kube-scheduler 
ansible -i host master -m copy -a "src=server/conf/kube-scheduler dest=/apps/kubernetes/conf owner=k8s group=root mode=644"
分发:kube-scheduler.service
ansible -i host master -m copy -a "src=kube-scheduler.service dest=/usr/lib/systemd/system/kube-scheduler.service"

8、KUBE-スケジューラを起動します

ansible -iホストマスター-mシェル-a "systemctlデーモン・リロード"
ansible -iホスト・マスター・-mシェル-a "systemctl KUBE-スケジューラ有効"
ansible -iホストマスター-mシェル-a "をKUBE-スケジューラーを開始systemctl"
ansible -iホストマスター-mシェル-a "systemctlステータスKUBE-スケジューラ"

9.チェックするかどうかの設定KUBE-スケジューラ

kubectl get cs
[root@jenkins kubernetes]# kubectl get cs
NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok                  
controller-manager   Unhealthy  Get http://127.0.0.1:10252/healthz: net/http: HTTP/1.x                   
etcd-5               Healthy   {"health":"true"}   
etcd-4               Healthy   {"health":"true"}   
etcd-3               Healthy   {"health":"true"}   
etcd-1               Healthy   {"health":"true"}   
etcd-2               Healthy   {"health":"true"}   
etcd-0               Healthy   {"health":"true"}   

次へ:kube_controller_managerクラスタKubernetes v1.14.0の展開に基づいて展開するKubernetesの生産設備

おすすめ

転載: blog.51cto.com/juestnow/2404594