KUBE-apiserverのKubernetes v1.14.0クラスタの展開

KUBE-apiserverクラスタ準備

1、KUBE-apiserverサーバの設定

外国のIP ネットワークのIP CPU メモリ ハードディスク
192.168.3.10 172.172.1.1 64 256 1T
192.168.3.11 172.172.1.2 64 256 1T
192.168.3.12 172.172.1.3 64 256 1T
192.168.3.13 172.172.1.4 64 256 1T
192.168.3.14 172.172.1.5 64 256 1T

準備ができバイナリ2、KUBE-apiserver

CD /アプリ/仕事/ K8S
ます。mkdir Kubernetes /サーバー{、}ノード
CD Kubernetes /サーバー
のwget https://dl.k8s.io/v1.14.0/kubernetes-server-linux-amd64.tar.gz
タール-xvf kubernetes- amd64.tar.gz-のLinuxサーバーの
CD Kubernetes /サーバ
は、mkdir -p confに設定、ログのSSL
CDビンは、
rm -rf *.docker_tag
rm -rf *.tar
すべてのバイナリを残します

3、KUBE-apiserver証明書を準備

3.1 KUBE-apiserver CA証明書設定の作成

ます。mkdir -p /アプリケーション/仕事/ K8S / cfssl / K8S
猫<< EOF | ティー/apps/work/k8s/cfssl/k8s/k8s-ca-csr.json
{
"CN": "kubernetes"、
"キー":{
"アルゴ": "RSA"、
"サイズ":2048
}、
「名前「:[
{
"C": "CN"、
"ST": "広東省"、
"L": "広州"、
"O": "niuke"、
"OU": "niuke"
}
]
}
EOF

Kubernetes CA証明書と秘密鍵の生成

ます。mkdir -p /アプリケーション/仕事/ cfssl / PKI / K8S /
cfssl gencertを-initca /apps/work/k8s/cfssl/k8s/k8s-ca-csr.json | \
cfssljson -bare /アプリケーション/仕事/ K8S / cfssl / PKI / K8S / K8S-CA

3.2 Kubernetes APIサーバ証明書プロファイルの作成(脇ノードの5つの大規模なクラスタを設定したIPは、10個のノードの合計が増加)

輸出K8S_APISERVER_VIP =」\
\ "192.168.3.10 \"、\
\ "192.168.3.11 \"、\
\ "192.168.3.12 \"、\
\ "192.168.3.13 \"、\
\ "192.168.3.14 \"、\
\ "192.168.3.15 \"、\
\ "192.168.3.16 \"、\
\ "192.168.3.17 \"、\
\ "192.168.3.18 \"、\
\ "192.168.3.19 \"、\
\ "192.168.31.252 \」、\
\ "192.168.31.253 \"、\
\ "172.172.1.1の\"、\
\ "172.172.1.2の\"、\
\ "172.172.1.3の\"、\
\ "172.172.1.4の\"、\
\ "172.172.1.5の\"、\
\ "172.172.1.6の\"、\
\ "172.172.1.7の\"、\
\ "172.172.1.8の\"、\
\ "172.172.1.9の\"、\
\ "172.172.1.10 \"、\
"&& \
輸出K8S_APISERVER_SERVICE_CLUSTER_IP =" 10.64.0.1" && \
輸出K8S_APISERVER_HOSTNAME = "api.k8s.niuke.local" && \
輸出K8S_CLUSTER_DOMAIN_SHORTNAME = "niuke" && \
輸出K8S_CLUSTER_DOMAIN_FULLNAME = "niuke.local" && \の
猫<< EOF | ティー/apps/work/k8s/cfssl/k8s/k8s_apiserver.json
{
"CN": "kubernetes"、
"ホスト":
"127.0.0.1"、
$ {K8S_APISERVER_VIP}
"$ {K8S_APISERVER_SERVICE_CLUSTER_IP}"、
「$ {K8S_APISERVER_HOSTNAME } "
"kubernetes"、
"kubernetes.default"、
"kubernetes.default.svc"、
"kubernetes.default.svc。$ {K8S_CLUSTER_DOMAIN_SHORTNAME}"、
" kubernetes.default.svc。






{
"C": "CN"、
"ST": "広東省"、
"L": "広州"、
"O": "niuke"、
"OU": "niuke"
}
]
}
EOF

Kubernetes APIサーバー証明書と秘密鍵を生成します

cfssl gencertを\
-ca = /アプリケーション/仕事/ K8S / cfssl / PKI / K8S / K8S-ca.pem \
-ca-キー= /アプリケーション/仕事/ K8S / cfssl / PKI / K8S / K8S-CA-key.pem \
-config = /アプリケーション/仕事/ K8S / cfssl / CA-config.json \
-profile = kubernetes \
/apps/work/k8s/cfssl/k8s/k8s_apiserver.json | \
cfssljson -bare /アプリケーション/仕事/ K8S / cfssl / PKI / K8S / k8s_server

3.3 Kubernetesのウェブフックの証明書プロファイルの作成

cat << EOF | tee /apps/work/k8s/cfssl/k8s/aggregator.json
{
  "CN": "aggregator",
  "hosts": [""], 
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "GuangDong",
      "L": "GuangZhou",
      "O": "niuke",
      "OU": "niuke"
    }
  ]
}
EOF

##### 生成 Kubernetes webhook 证书和私钥
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/aggregator.json | \
    cfssljson -bare /apps/work/k8s/cfssl/pki/k8s/aggregator

配布ディレクトリに3.4 CP証明書

cd /apps/work/k8s/kubernetes/server
cp -pdr /apps/work/k8s/cfssl/pki/k8s ssl/k8s
mkdir -p ssl/etcd
cp -pdr /apps/work/k8s/cfssl/pki/etcd/{etcd-ca.pem,etcd_client-key.pem,etcd_client.pem} ssl/etcd

前記基準ノードの唯一の他の例を書くことKUBE-apiserverスタートアップコンフィギュレーションファイルを作成します

4.1暗号config.yaml世代

cd /apps/work/k8s/kubernetes/server/config
export ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64)
cat > encryption-config.yaml <<EOF
kind: EncryptionConfig
apiVersion: v1
resources:
  - resources:
      - secrets
    providers:
      - aescbc:
          keys:
            - name: key1
              secret: ${ENCRYPTION_KEY}
      - identity: {}
EOF

4.2 TLSブートストラップトークンを作成する(あなたはまた、後期を作成することができますが、これはトークンです)

cd /apps/work/k8s/kubernetes/server/config
head -c 16 /dev/urandom | od -An -t x | tr -d ' '
75045e3b5c47255e0f03922d18dc3bec
vi token.csv
75045e3b5c47255e0f03922d18dc3bec,kubelet-bootstrap,10001,"system:bootstrappers"

4.3 Apiserverプロファイルの特別な指示

設定パラメータは、これはサーバ証明書を生成しますkubelet場合は、本番環境の4.3.1 kubelet-認証局の設定パラメータが推奨され、手動で証明書サーバーが自動的に発行されていない署名しなければならない、もちろん、また、証明書を発行するために、自分のスケジュールされたタスクやガジェットを書き込むことができます
4.3.2ターゲット-RAM-MBパラメータ基準ノード60のnode_numsのノード60の文書2000ノード2000 * 60 = 120 000 MBのメモリサイズであります

約1500 MAX-要求-機内= 1500ノード3000に配置4.3.3 MAX-要求-機内パラメータ2000ノードは、max-要求-機内= 3000よりも大きいです

4.3.4 MAX-変異-要求-機内に配置された500〜1000個のパラメータ2000ノード1000以上3000との間に配置されました

唯一の実際の環境では、これらの基準を調整します

4.4 Apiserverプロフィール

cd /apps/work/k8s/kubernetes/server/conf
vi kube-apiserver
KUBE_APISERVER_OPTS="--logtostderr=false \
        --bind-address=192.168.3.10 \
        --advertise-address=192.168.3.10 \
        --secure-port=5443 \
        --insecure-port=0 \
        --service-cluster-ip-range=10.64.0.0/16 \
        --service-node-port-range=30000-65000 \
        --etcd-cafile=/apps/kubernetes/ssl/etcd/etcd-ca.pem \
        --etcd-certfile=/apps/kubernetes/ssl/etcd/etcd_client.pem \
        --etcd-keyfile=/apps/kubernetes/ssl/etcd/etcd_client-key.pem \
        --etcd-prefix=/registry \
        --etcd-servers=https://172.172.0.1:2379,https://172.172.0.2:2379,https://172.172.0.3:2379 \
        --etcd-servers-overrides=/events#https://172.172.0.4:2379;https://1172.172.0.5:2379;https://172.172.0.6:2379 \
        --client-ca-file=/apps/kubernetes/ssl/k8s/k8s-ca.pem \
        --tls-cert-file=/apps/kubernetes/ssl/k8s/k8s_server.pem \
        --tls-private-key-file=/apps/kubernetes/ssl/k8s/k8s_server-key.pem \
        --kubelet-certificate-authority=/apps/kubernetes/ssl/k8s/k8s-ca.pem \       
        --kubelet-client-certificate=/apps/kubernetes/ssl/k8s/k8s_server.pem \
        --kubelet-client-key=/apps/kubernetes/ssl/k8s/k8s_server-key.pem \
        --service-account-key-file=/apps/kubernetes/ssl/k8s/k8s-ca.pem \
        --requestheader-client-ca-file=/apps/kubernetes/ssl/k8s/k8s-ca.pem \
        --proxy-client-cert-file=/apps/kubernetes/ssl/k8s/aggregator.pem \
        --proxy-client-key-file=/apps/kubernetes/ssl/k8s/aggregator-key.pem \
        --requestheader-allowed-names=aggregator \
        --requestheader-group-headers=X-Remote-Group \
        --requestheader-extra-headers-prefix=X-Remote-Extra- \
        --requestheader-username-headers=X-Remote-User \
        --enable-aggregator-routing=true \
        --anonymous-auth=false \
        --experimental-encryption-provider-config=/apps/kubernetes/config/encryption-config.yaml \
        --enable-admission-plugins=AlwaysPullImages,DefaultStorageClass,DefaultTolerationSeconds,LimitRanger,NamespaceExists,NamespaceLifecycle,NodeRestriction,OwnerReferencesPermissionEnforcement,PodNodeSelector,PersistentVolumeClaimResize,PodPreset,PodTolerationRestriction,ResourceQuota,ServiceAccount,StorageObjectInUseProtection MutatingAdmissionWebhook ValidatingAdmissionWebhook \
        --disable-admission-plugins=DenyEscalatingExec,ExtendedResourceToleration,ImagePolicyWebhook,LimitPodHardAntiAffinityTopology,NamespaceAutoProvision,Priority,EventRateLimit,PodSecurityPolicy \
        --cors-allowed-origins=.* \
        --enable-swagger-ui \
        --runtime-config=api/all=true \
        --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname \
        --authorization-mode=Node,RBAC \
        --allow-privileged=true \
        --apiserver-count=3 \
        --audit-log-maxage=30 \
        --audit-log-maxbackup=3 \
        --audit-log-maxsize=100 \
        --kubelet-https \
        --event-ttl=1h \
        --feature-gates=RotateKubeletServerCertificate=true,RotateKubeletClientCertificate=true \
        --enable-bootstrap-token-auth=true \
        --token-auth-file=/apps/kubernetes/config/token.csv \
        --audit-log-path=/apps/kubernetes/log/api-server-audit.log \
        --alsologtostderr=true \
        --log-dir=/apps/kubernetes/log \
        --v=2 \
        --endpoint-reconciler-type=lease \
        --max-mutating-requests-inflight=600 \
        --max-requests-inflight=1600 \
        --target-ram-mb=120000"

4.5 apiserver systemdにファイルを作成します

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

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

EnvironmentFile=-/apps/kubernetes/conf/kube-apiserver
ExecStart=/apps/kubernetes/bin/kube-apiserver $KUBE_APISERVER_OPTS
Restart=on-failure
RestartSec=5
User=k8s 
[Install]
WantedBy=multi-user.target

配布ansibeホストを作成するには、4.6

CD /アプリケーション/仕事/ K8S / kubernetes /
またはホスト
[マスター]
192.168.3.10
192.168.3.11
192.168.3.12
192.168.3.13
192.168.3.14

4.7アカウントK8Sを実行しているリモートサービスを作成します。

ansible -i host master -m shell -a "useradd k8s -s /sbin/nologin -M"

4.8リモートディレクトリを作成します。

ansible -i host master -m shell -a "mkdir -p /apps/kubernetes/kubelet-plugins/volume"

文書の4.9分布

ansible -i host master -m copy -a "src=server/ dest=/apps/kubernetes/"

アカウントを実行するように設定4.10

ansible -i host master -m shell -a "chown -R k8s:root /apps/kubernetes"

4.11は、バイナリの権限を実行することができます

ansible -i host master -m shell -a "chmod u+x /apps/kubernetes/bin/*"

4.12分布KUBE-apiserver.service

ansible -i host master -m copy -a "src=kube-apiserver.service dest=/usr/lib/systemd/system/kube-apiserver.service"

対応するサーバのIPアドレスを変更するように変更、リモート・サーバへのアクセス4.13 --bind-アドレス= 192.168.3.10 \ --advertiseアドレス= 192.168.3.10 \

5、KUBE-apiserverを開始

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

図6に示すように、サーバのインストールマスタVIP K8S-VIP-01 / K8S-VIP-02の作用

6.1説明:資源の合理的利用上のドメイン名の使用における2回のマスタVIPアクセス圧力の多くではありませんVIPこのネットワークを追加することはできません成熟したDNS +障害検出がない場合、言葉の使用は、バックエンドサーバポートのVIP圧力をVIP複数のノードの限られた数は、ポートの状況の純損失を生成します

CPUリソースを消費するサーバ構成VIP 8コア16グラムのhaproxy非常に時間を6.2 haproxyをインストールしてデプロイ

6.2.1のダウンロードhaproxy
mkdir -p /apps/work/k8s/haproxy
cd  /apps/work/k8s/haproxy
wget https://www.haproxy.org/download/1.9/src/haproxy-1.9.8.tar.gz
6.2.2はビルド依存関係をインストールhaproxy
yum -y install epel-release
 yum install -y git patch gcc gcc-c++ \
 readline-devel zlib-devel libffi-devel \
 openssl openssl-devel make autoconf \
 libtool bison libxml2 libxml2-devel libxslt-devel \
 libyaml-devel python python-docutils cmake imake \
 expat-devel libaio libaio-devel bzr ncurses-devel wget \
 libjpeg libjpeg-devel libpng libpng-devel freetype \
 freetype-devel pcre-devel curl-devel libmcrypt \
 libmcrypt-devel libunwind libunwind-devel rsyslog
6.2.3インストールjemalloc
git clone https://github.com/jemalloc/jemalloc.git
cd jemalloc
./autogen.sh 
./configure 
make -j$(nproc) 
make -j$(nproc) install_bin install_include install_lib
echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf
ldconfig
ln -sf /usr/local/lib/libjemalloc.so /usr/lib/ 
ln -sf /usr/local/lib/libjemalloc.so /usr/lib64/ 
yum -y install  systemd-devel
6.3.4インストールhaproxy
useradd  haproxy -s /sbin/nologin -M
cd  ../
tar -xvf haproxy-1.9.8.tar.gz
cd haproxy-1.9.8
make CPU="generic" TARGET="linux2628" USE_SYSTEMD=1 USE_PCRE=1 USE_PCRE_JIT=1  USE_OPENSSL=1 USE_ZLIB=1 USE_REGPARM=1  USE_LINUX_TPROXY=1 ADDLIB="-ljemalloc"  DEFINE=-DTCP_USER_TIMEOUT=18 PREFIX=/apps/haproxy
make install PREFIX=/apps/haproxy
 mkdir -pv /apps/haproxy/{conf,run,log} 
6.3.5設定haproxy
cd /app/haproxy/conf
vim haproxy.conf
global  
                maxconn 100000  
                chroot /apps/haproxy
                user haproxy

                group haproxy 

                daemon  
                pidfile /apps/haproxy/run/haproxy.pid  
                #debug  
                #quiet 
                stats socket /apps/haproxy/run/haproxy.sock mode 600 level admin
                log             127.0.0.1 local2 

                nbproc 8
                cpu-map 1 0
                cpu-map 2 1
                cpu-map 3 2
                cpu-map 4 3
                cpu-map 5 4
                cpu-map 6 5
                cpu-map 7 6
                cpu-map 8 7
                stats bind-process 8

defaults  
                log     global
                mode    tcp
                option  tcplog
                option  dontlognull
                option  redispatch  
                retries 3 
                maxconn 100000
                timeout connect     30000 
                timeout client      50000  
                timeout server 50000  

resolvers  dns1
        nameserver dns1  114.114.114.114:53
        nameserver dns2  8.8.8.8:53
        resolve_retries 3
        timeout resolve 10s
        timeout retry 10s
        hold other 30s
        hold refused 30s
        hold nx 30s
        hold timeout 30s
        hold valid 10s
        hold obsolete 30s

listen admin_stat  
        # 监听端口  
        bind 0.0.0.0:57590 
        # http的7层模式  
        mode http  
        #log global  
        # 统计页面自动刷新时间  
        stats refresh 30s  
        # 统计页面URL  
        stats uri /admin?stats  
        # 统计页面密码框上提示文本  
        stats realm Haproxy\ Statistics  
        # 统计页面用户名和密码设置  
        stats auth admin:123456admin
        # 隐藏统计页面上HAProxy的版本信息  
        #stats hide-version  
        stats enable
frontend kube-apiserver-https
  mode tcp
  bind :6443
  default_backend kube-apiserver-backend
backend kube-apiserver-backend
  mode tcp
  server 192.168.3.10-api 192.168.3.10:5443 check
  server 192.168.3.11-api 192.168.3.11:5443 check
  server 192.168.3.12-api 192.168.3.12:5443 check
  server 192.168.3.13-api 192.168.3.13:5443 check
  server 192.168.3.14-api 192.168.3.14:5443 check
6.3.6ログ分割のlogrotateを作成
vim /etc/logrotate.d/haproxy
/apps/haproxy/log/*.log {
    rotate 14
    daily
    missingok
    compress
    dateext
    size 50M
    notifempty
    copytruncate
}
haproxyログ収​​集の作成6.3.7
vim /etc/rsyslog.d/49-haproxy.conf
$ModLoad imudp
$UDPServerAddress 127.0.0.1
$UDPServerRun 514

$template HAProxy,"%syslogtag%%msg:::drop-last-lf%\n"
$template TraditionalFormatWithPRI,"%pri-text%: %timegenerated% %syslogtag%%msg:::drop-last-lf%\n"

local2.=info     /apps/haproxy/log/access.log;HAProxy
local2.=notice;local2.=warning   /apps/haproxy/log/status.log;TraditionalFormatWithPRI
local2.error   /apps/haproxy/log/error.log;TraditionalFormatWithPRI
local2.* stop
スタートアップファイルの作成6.3.8 haproxy
vim  /usr/lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
Documentation=man:haproxy(1)
After=syslog.target network.target

[Service]
LimitCORE=infinity
LimitNOFILE=1024000
LimitNPROC=1024000
EnvironmentFile=-/etc/sysconfig/haproxy
Environment="CONFIG=/apps/haproxy/conf/haproxy.conf" "PIDFILE=/apps/haproxy/run/haproxy.pid"
ExecStartPre=/apps/haproxy/sbin/haproxy -f $CONFIG -c -q
ExecStart=/apps/haproxy/sbin/haproxy -Ws -f $CONFIG -p $PIDFILE
ExecReload=/apps/haproxy/sbin/haproxy -f $CONFIG -c -q
ExecReload=/bin/kill -USR2 $MAINPID
KillMode=mixed
Restart=always
Type=notify

[Install]
WantedBy=multi-user.target
6.3.9スタートhaproxy
systemctl start haproxy
systemctl enable  haproxy
http://192.168.4.1:57590/admin?stats 
账号密码:admin:123456admin
6.3.10説明

第二の基準の最初のインストール
haproxyサポートバックエンド負荷ドメイン
の両方外部ルーティングあります

7、keepalivedのインストール

7.1 keepalivedのダウンロード

    mkdir -p /apps/work/k8s/keepalived
    cd /apps/work/k8s/keepalived
wget https://www.keepalived.org/software/keepalived-2.0.16.tar.gz
wget https://ftp.gnu.org/gnu/automake/automake-1.15.1.tar.gz

7.2 keepalivedのインストールを頼ります

yum install -y libnl-devel openssl-devel libnfnetlink-devel ipvsadm popt-devel libnfnetlink kernel-devel 

7.3 keepalivedのインストール

tar -xvf automake-1.15.1.tar.gz
cd  automake-1.15.1
./configure 
make 
make install
cd ../
tar -xvf keepalived-2.0.16.tar.gz
cd  keepalived-2.0.16
automake --add-missing 
automake
./configure --prefix=/apps/keepalived
 make
 make install

7.4は、サービスを開始keepalivedの

 vim keepalived/keepalived.service
 [Unit]
Description=LVS and VRRP High Availability Monitor
After=network-online.target syslog.target 
Wants=network-online.target 

[Service]
Type=forking
LimitNOFILE=1024000
LimitNPROC=1024000
LimitCORE=infinity
LimitMEMLOCK=infinity
PIDFile=/var/run/keepalived.pid
KillMode=process
EnvironmentFile=-/apps/keepalived/etc/sysconfig/keepalived
ExecStart=/apps/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

cp -pdr keepalived/keepalived.service /usr/lib/systemd/system

7.5 keepalivedの設定変更

cd /apps/keepalived/etc/sysconfig
vim keepalived
KEEPALIVED_OPTIONS="-D \
                                           --use-file=/apps/keepalived/etc/keepalived/keepalived.conf"

7.6Keepalivedマスター配置

生成 auth_pass
head -c 16 /dev/urandom | od -An -t x | tr -d ' '
99ce6e3381dc326633737ddaf5d904d2
cd /apps/keepalived/etc/keepalived
vim keepalived.conf
! Configuration File for keepalived

global_defs {
 router_id LVS_DEVEL
}

vrrp_script check_haproxy {
  script "killall -0 haproxy"
  interval 3
  weight -2
  fall 10
  rise 2
}

vrrp_instance VI_1 {
  state MASTER
  interface eth0
  virtual_router_id 51
  priority 250
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass  99ce6e3381dc326633737ddaf5d904d2
  }
  virtual_ipaddress {
    192.168.31.252/19
  }
  track_script {
    check_haproxy
  }
}

7.7Keepalivedバックアップの設定

 ! Configuration File for keepalived

global_defs {
 router_id LVS_DEVEL
}

vrrp_script check_haproxy {
  script "killall -0 haproxy"
  interval 3
  weight -2
  fall 10
  rise 2
}

vrrp_instance VI_1 {
  state BACKUP
  interface eth0
  virtual_router_id 51
  priority 249
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 99ce6e3381dc326633737ddaf5d904d2
  }
  virtual_ipaddress {
    192.168.31.252/19
  }
  track_script {
    check_haproxy
  }
}
7.8 keepalivedのを開始

keepalived.serviceを有効systemctl
keepalived.service開始systemctl
systemctl状態keepalived.service
IPアドレスショーにeth0を

8、管理者管理者の資格情報をK8S-操作ノード操作を作成

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

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_apiserver_admin.json | \
        cfssljson -bare /apps/work/k8s/cfssl/pki/k8s/k8s_apiserver_admin

9、admin.kubeconfigをログに記録管理者管理者を作成

     cd /apps/k8s/
 编辑hosts
 vim /etc/hosts
 192.168.31.252 api.k8s.niuke.local
export KUBE_APISERVER="https://api.k8s.niuke.local:6443"
kubectl config set-cluster kubernetes \
--certificate-authority=/apps/work/k8s/cfssl/pki/k8s/k8s-ca.pem \
--embed-certs=true  \
--server=${KUBE_APISERVER} \
--kubeconfig=admin.kubeconfig

 kubectl config set-credentials admin \
 --client-certificate=/apps/work/k8s/cfssl/pki/k8s/k8s_apiserver_admin.pem \
 --client-key=/apps/work/k8s/cfssl/pki/k8s/k8s_apiserver_admin-key.pem \
 --embed-certs=true \
 --kubeconfig=admin.kubeconfig

kubectl config set-context kubernetes \
--cluster=kubernetes \
--user=admin \
--namespace=kube-system \
--kubeconfig=admin.kubeconfig
kubectl config use-context kubernetes --kubeconfig=admin.kubeconfig
cp admin.kubeconfig ~/.kube/config

クラスタが正常に動作していることをKUBE-apiserverを確認してください

 kubectl cluster-info 
 [root@jenkins tasks]#  kubectl cluster-info 
Kubernetes master is running at https://api.k8s.niuke.local:6443

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

説明:keepalivedのダブルマスターは我々だけ変更する彼らの必要に応じて追加のドメイン名からの主なアクセスを設定することができ、今ここに自分自身を設定することができます。Kubernetes APIサーバー証明書を生成するときにapi.k8s.niuke.localここにドメイン名を使用して、ドメイン名を指定してくださいしてください

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

おすすめ

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