kubespray 2.11 kubernetes 1.15をインストール

14929 ワード

クベスプラーについて
Kubesprayはオープンソースのkubernetes導入ツールであり、ansibleを統合し、高可用性クラスタ環境、公式サイトアドレスを容易に導入することができる.https://github.com/kubernetes...、本文はkubespray 2.11バージョンでkubernetes 1.15バージョンを配備する実戦である.
重要な前提
今回の実戦は公式推薦のオンラインインストールを採用するため、グーグルミラー倉庫にミラーをダウンロードし、あなたのネットワークがグーグルサービスにアクセスできる必要があります.
きかいじょうほう
今回の実戦は計4台の機械で、それらのホスト名、IPアドレスと役割は以下の通りである.
ホスト名
IPアドレス
さぎょう
ansible
192.168.133.134
ansibleホスト
a001
192.168.133.139
k 8 sクラスタの1番ワークノード
a002
192.168.133.140
k 8 sクラスタの2番ワークノード
a003
192.168.133.141
k 8 sクラスタの3番ワークノード
標準化の設定
今回の実戦のすべての機械は以下の設定をしなければならない.
  • オペレーティングシステム:CentOS Linux release 7.1908
  • だから操作はすべてrootアカウントで実行
  • ファイアウォールを閉じる:
  • systemctl stop firewalld && systemctl disable firewalld
  • selinuxを閉じる:
  • setenforce 0
    sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
  • ipv 4ネットワーク設定:
  • modprobe br_netfilter
    echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
    sysctl -w net.ipv4.ip_forward=1

    ansibleホストパスワードフリーsshログインa 001、a 002、a 003
  • sshはansibleホストに登録する.
  • ssh公開鍵を生成し、コマンドssh-keygenを入力し、4回連続して返送する:
  • [root@ansible ~]# ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:Empen3/RfLndRkS8mKfkq6a2IXtSdqwK7TqKNoHkNEU root@ansible
    The key's randomart image is:
    +---[RSA 2048]----+
    |  .E           . |
    |   .            o|
    |  .   .       o..|
    | +   . .     + o.|
    |= . o o S . ooo..|
    |.o o ..o + o.oo.o|
    |  . .. o=.o  ..o+|
    | o.  .o.o=.... .+|
    |......o+=o=o.  . |
    +----[SHA256]-----+
  • 入力コマンド[email protected]、ansibleのsshをa 001ホストに配布すると、yesとa 001ホストのrootアカウントのパスワードを入力するように要求されます.入力が完了すると、以降ansibleはパスワードなしでa 001ホストにログインできます.
  • [root@ansible ~]# ssh-copy-id [email protected]
    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
    The authenticity of host '192.168.133.139 (192.168.133.139)' can't be established.
    ECDSA key fingerprint is SHA256:DPE2nldWHiOhC4DB9doy7jPWNZVup6XFZ+sR2i1gqz8.
    ECDSA key fingerprint is MD5:fc:21:f7:7f:e8:cd:1a:76:d7:fb:cc:d4:28:91:f3:5a.
    Are you sure you want to continue connecting (yes/no)? yes
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    [email protected]'s password: 
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh '[email protected]'"
    and check to make sure that only the key(s) you wanted were added.
  • コマンドssh-copy-idの入力を継続[email protected][email protected]ホストがa 002およびa 003にパスワードなしでログインできるようにする.
  • これでansibleホストはコマンドsshで[email protected]、ssh [email protected]、ssh [email protected]パスワードなしでa 001、a 002、a 003にログインしました.

  • ansibleホスト操作
  • sshはansibleホストに登録する.
  • ansibleアプリケーションのインストール:
  • yum install -y epel-release ansible
  • インストールpip:
  • easy_install pip
  • pipでjinja 2をインストール:
  • pip2 install jinja2 --upgrade
  • python 36のインストール:
  • yum install python36 -y
  • 作業ディレクトリを作成し、作業ディレクトリに入る:
  • mkdir /usr/local/kubespray && cd /usr/local/kubespray/
  • kubesprayをダウンロードして、私がここでダウンロードしたのはv 2.11.0バージョン:
  • wget https://github.com/kubernetes-sigs/kubespray/archive/v2.11.0.tar.gz
  • 解凍:
  • tar -zxvf v2.11.0.tar.gz
  • 解凍後のディレクトリに入る:
  • cd kubespray-2.11.0/
  • kubesprayのインストールに必要なアプリケーション(pip 3注意):
  • pip3 install -r requirements.txt
  • demo構成情報をディレクトリinventory/myclusterにコピー:
  • cp -rfp inventory/sample inventory/mycluster
  • 中に入ってみると、myclusterディレクトリの下に多くのファイルがコピーされていることがわかります.
  • [root@ansible kubespray-2.11.0]# tree inventory/
    inventory/
    ├── local
    │   ├── group_vars -> ../sample/group_vars
    │   └── hosts.ini
    ├── mycluster
    │   ├── group_vars
    │   │   ├── all
    │   │   │   ├── all.yml
    │   │   │   ├── azure.yml
    │   │   │   ├── coreos.yml
    │   │   │   ├── docker.yml
    │   │   │   ├── oci.yml
    │   │   │   └── openstack.yml
    │   │   ├── etcd.yml
    │   │   └── k8s-cluster
    │   │       ├── addons.yml
    │   │       ├── k8s-cluster.yml
    │   │       ├── k8s-net-calico.yml
    │   │       ├── k8s-net-canal.yml
    │   │       ├── k8s-net-cilium.yml
    │   │       ├── k8s-net-contiv.yml
    │   │       ├── k8s-net-flannel.yml
    │   │       ├── k8s-net-kube-router.yml
    │   │       ├── k8s-net-macvlan.yml
    │   │       └── k8s-net-weave.yml
    │   └── inventory.ini
  • クラスタ情報の設定(現在のディレクトリはkubespray-2.11.0のまま):
  • declare -a IPS=(192.168.133.139 192.168.133.140 192.168.133.141)
  • 配置ansible:
  • CONFIG_FILE=inventory/mycluster/hosts.yml python3 contrib/inventory_builder/inventory.py ${IPS[@]}

    このとき、kubesprayのスクリプトは入力したIP情報に基づいてクラスタ計画を作成し、具体的な情報はinventory/mycluster/hosts.ymlに表示されます.以下に示すように、このファイルを自分で変更することもできます.
    all:
      hosts:
        node1:
          ansible_host: 192.168.133.139
          ip: 192.168.133.139
          access_ip: 192.168.133.139
        node2:
          ansible_host: 192.168.133.140
          ip: 192.168.133.140
          access_ip: 192.168.133.140
        node3:
          ansible_host: 192.168.133.141
          ip: 192.168.133.141
          access_ip: 192.168.133.141
      children:
        kube-master:
          hosts:
            node1:
            node2:
        kube-node:
          hosts:
            node1:
            node2:
            node3:
        etcd:
          hosts:
            node1:
            node2:
            node3:
        k8s-cluster:
          children:
            kube-master:
            kube-node:
        calico-rr:
          hosts: {}
  • 以下のコマンドを実行してインストールを開始します.オンラインインストールは比較的時間がかかりますので、お待ちください.
  • ansible-playbook -i inventory/mycluster/hosts.yml --become --become-user=root cluster.yml

    インストールが完了すると、コンソールは次のような情報を出力します.
    PLAY RECAP ********************************************************************************************************************************************************************************
    localhost                  : ok=1    changed=0    unreachable=0    failed=0   
    node1                      : ok=658  changed=95   unreachable=0    failed=0   
    node2                      : ok=566  changed=77   unreachable=0    failed=0   
    node3                      : ok=475  changed=66   unreachable=0    failed=0   
    
    Sunday 17 November 2019  17:31:19 +0800 (0:00:00.064)       0:09:56.193 ******* 
    =============================================================================== 
    kubernetes/master : kubeadm | Init other uninitialized masters -------------------------------------------------------------------------------------------------------------------- 94.91s
    kubernetes/master : kubeadm | Initialize first master ----------------------------------------------------------------------------------------------------------------------------- 42.95s
    etcd : Install | Copy etcdctl binary from docker container ------------------------------------------------------------------------------------------------------------------------ 14.26s
    download : download_container | Download image if required ------------------------------------------------------------------------------------------------------------------------ 12.87s
    download : download_container | Download image if required ------------------------------------------------------------------------------------------------------------------------ 12.28s
    download : download_container | Download image if required ------------------------------------------------------------------------------------------------------------------------ 10.79s
    etcd : reload etcd ---------------------------------------------------------------------------------------------------------------------------------------------------------------- 10.71s
    download : download_container | Download image if required ------------------------------------------------------------------------------------------------------------------------- 9.71s
    download : download_container | Download image if required ------------------------------------------------------------------------------------------------------------------------- 9.48s
    download : download_container | Download image if required ------------------------------------------------------------------------------------------------------------------------- 8.02s
    download : download_container | Download image if required ------------------------------------------------------------------------------------------------------------------------- 7.88s
    etcd : wait for etcd up ------------------------------------------------------------------------------------------------------------------------------------------------------------ 7.16s
    etcd : Gen_certs | Write etcd master certs ----------------------------------------------------------------------------------------------------------------------------------------- 6.39s
    download : download_container | Download image if required ------------------------------------------------------------------------------------------------------------------------- 5.75s
    download : download_container | Download image if required ------------------------------------------------------------------------------------------------------------------------- 5.53s
    download : download_container | Download image if required ------------------------------------------------------------------------------------------------------------------------- 5.42s
    download : download_container | Download image if required ------------------------------------------------------------------------------------------------------------------------- 5.41s
    download : download_container | Download image if required ------------------------------------------------------------------------------------------------------------------------- 5.06s
    download : download_container | Download image if required ------------------------------------------------------------------------------------------------------------------------- 4.87s
    kubernetes-apps/ansible : Kubernetes Apps | Start Resources ------------------------------------------------------------------------------------------------------------------------ 4.78s

    これで、kubernetesクラスタ環境の導入が完了し、次に環境が利用可能かどうかを簡単に検証します.
    環境の確認
  • ssh登録a 001機器;
  • ノード、サービス、podの表示:
  • [root@node1 ~]# kubectl get nodes
    NAME    STATUS   ROLES    AGE   VERSION
    node1   Ready    master   25m   v1.15.3
    node2   Ready    master   23m   v1.15.3
    node3   Ready       23m   v1.15.3
    [root@node1 ~]# kubectl get services --all-namespaces
    NAMESPACE     NAME                   TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                  AGE
    default       kubernetes             ClusterIP   10.233.0.1            443/TCP                  25m
    kube-system   coredns                ClusterIP   10.233.0.3            53/UDP,53/TCP,9153/TCP   22m
    kube-system   kubernetes-dashboard   ClusterIP   10.233.35.1           443/TCP                  22m
    [root@node1 ~]# kubectl get pods --all-namespaces
    NAMESPACE     NAME                                      READY   STATUS    RESTARTS   AGE
    kube-system   calico-kube-controllers-c6fb79b8b-v24nq   1/1     Running   0          22m
    kube-system   calico-node-46s8t                         1/1     Running   0          23m
    kube-system   calico-node-mcjfs                         1/1     Running   0          23m
    kube-system   calico-node-q989m                         1/1     Running   1          23m
    kube-system   coredns-74c9d4d795-4xz6s                  1/1     Running   0          22m
    kube-system   coredns-74c9d4d795-kh6vl                  1/1     Running   0          22m
    kube-system   dns-autoscaler-7d95989447-gmcrl           1/1     Running   0          22m
    kube-system   kube-apiserver-node1                      1/1     Running   0          24m
    kube-system   kube-apiserver-node2                      1/1     Running   0          23m
    kube-system   kube-controller-manager-node1             1/1     Running   0          24m
    kube-system   kube-controller-manager-node2             1/1     Running   0          23m
    kube-system   kube-proxy-2zhwn                          1/1     Running   0          23m
    kube-system   kube-proxy-59qx8                          1/1     Running   0          23m
    kube-system   kube-proxy-fgpx6                          1/1     Running   0          23m
    kube-system   kube-scheduler-node1                      1/1     Running   0          24m
    kube-system   kube-scheduler-node2                      1/1     Running   0          23m
    kube-system   kubernetes-dashboard-7c547b4c64-x7nfq     1/1     Running   0          22m
    kube-system   nginx-proxy-node3                         1/1     Running   0          23m
    kube-system   nodelocaldns-8khfq                        1/1     Running   0          22m
    kube-system   nodelocaldns-pzx2p                        1/1     Running   0          22m
    kube-system   nodelocaldns-s5kcd                        1/1     Running   0          22m

    dashboardへのアクセス
    dashboardはkubernetesシステムの全体的な状況を表示することができ、dashboardページにアクセスするにはRBACを増やす必要があります.
  • ssh登録a 001機器;
  • 以下のコマンドを実行し、ファイルadmin-user.yamlを作成する:
  • tee admin-user.yaml <
  • 以下のコマンドを実行し、ファイルadmin-user-role.yamlを作成する:
  • tee admin-user-role.yaml <
  • ServiceAccountとClusterRoleBindingの作成:
  • kubectl create -f admin-user.yaml && kubectl create -f admin-user-role.yaml
  • tokenを取得してdashboardページにログインする:
  • kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

    次の図の赤枠はtokenの内容です.
  • ブラウザでdashboardページにアクセスしました.アドレスは:https://192.168.133.139:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/、そのうち192.168.133.139はa 001マシンのIPアドレスであり、a 002 IPアドレスに変更することもできる.
  • httpsプロトコルではないため、ブラウザからセキュリティ・プロンプトがポップアップされる可能性があり、次の図のように選択して続行する:
  • この時点でログイン方式を選択し、トークンを選択して前に得られたtokenを入力するとログインできます.
  • ログインに成功するとシステム情報が表示されます.図:
  • これで、kubespray 2.11のkubernetes 1.15のインストールが完了しました.参考にしてください.
    公衆番号へようこそ:プログラマー欣宸