kubesprayについて
Kubesprayは、あなたが簡単に、高可用性クラスタ環境を展開することができ、オープンソースの展開ツールは、ansible統合kubernetesで、公式サイトのアドレスします。https://github.com/kubernetes-sigs/kubesprayは、この記事ではkubespray2.11バージョンでkubernetes1.15バージョンを展開することです戦闘;
重要な前提条件
公式の実際の使用は、オンラインインストールをお勧めします、そして、したがって、Googleのミラーミラーのダウンロード倉庫に行きますあなたは、Googleのサービスにアクセスすることができ、あなたのネットワークを必要とします。
マシン情報
次のように4台のマシン、そのホスト名、IPアドレス、および役割の実際の合計が記述されている:
|ホスト名| IPアドレス|アクション|
| - | - | - |
| ansible | 192.168.133.134 | ansibleホスト|
| A001 | 192.168.133.139 |ワーキング第一をK8Sノードクラスタ|
| | A002 | |第二クラスタノードK8S上の作業192.168.133.140
| A003 | 192.168.133.141 | K8Sクラスタノード数3作品|
標準セット
戦闘は、すべてのマシンは、以下の手順を実行するように設定されています。
- オペレーティングシステム:CentOSのLinuxリリース1908年7月7日
- だから、rootアカウントの動作が実行されます
- ファイアウォールをオフにします。
systemctl stop firewalld && systemctl disable firewalld
- 閉じるSELinuxの:
setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
- IPv4のネットワーク設定:
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
sysctl -w net.ipv4.ip_forward=1
ansibleホストのSSHパスワードなしのログインA001、A002、A003
- 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]-----+
- コマンドを入力します。sshは、コピー、上記のid [email protected]以上、A001ホスト分散型のsshのansible、入力するように求められますはい、あなたがホストA001を避けることができansibleのsshログインパスワードの後、タイピングを終了した後とA001ホストのrootアカウントのパスワードを:
[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-コピー-IDの[email protected]をし、SSH-コピー、上記のid [email protected]の上、ansibleホスト缶パスワードフリーのログインA002とA003を作ります。
これまでのところ、ansibleホストは、コマンドを使用することができますSSHの[email protected]、SSHの[email protected]を、SSHの[email protected]のパスワードフリーのログインA001、A002、A003アップ。
ansibleホストオペレーティング
- SSHログインansibleホスト。
- インストールansibleアプリケーション:
yum install -y epel-release ansible
- インストールピップ:
easy_install pip
- ピップによってJinja2のをインストールします。
pip2 install jinja2 --upgrade
- インストールpython36:
yum install python36 -y
- 作業ディレクトリを作成し、作業ディレクトリを入力します。
mkdir /usr/local/kubespray && cd /usr/local/kubespray/
- ダウンロードkubespray、私はダウンロードにここにあったv2.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(なお、必要なアプリケーションのインストールPIP3を):
pip3 install -r requirements.txt
- ディレクトリへのデモの構成情報のコピーインベントリのため、/ 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クラスター計画を入力し、特定の情報を見つけることができるインベントリのために、/ 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ログインA001機。
- ビューノード、サービス、ポッド:
[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 <none> 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 <none> 443/TCP 25m
kube-system coredns ClusterIP 10.233.0.3 <none> 53/UDP,53/TCP,9153/TCP 22m
kube-system kubernetes-dashboard ClusterIP 10.233.35.1 <none> 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
アクセスダッシュボード
ダッシュボードには、あなたがRBACを増やす必要がダッシュボードページにアクセスするために、全体的な状況のkubernetesシステムを見ることができます:
- SSHログインA001機。
- ファイルを作成するには、次のコマンドを実行して、ADMIN-user.yamlを:
tee admin-user.yaml <<-'EOF'
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system
EOF
- ファイルを作成するには、次のコマンドを実行して、ADMIN-ユーザーrole.yamlを:
tee admin-user-role.yaml <<-'EOF'
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kube-system
EOF
- ServiceAccountとClusterRoleBindingを作成します:
kubectl create -f admin-user.yaml && kubectl create -f admin-user-role.yaml
- ログインダッシュボードページのトークンの外観を取得します。
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
赤いボックスの下の図は、コンテンツのトークンです。
- 今すぐアクセスするブラウザのダッシュボードページから、アドレスは次のとおりです。https://192.168.133.139:6443 / API / V1 /名前空間/ KUBE-システム/サービス/ HTTPS:kubernetes-ダッシュボード:/プロキシ/、 192.168.133.139は A001ですマシンのIPアドレスは、またa002IPアドレスを交換することができます。
- プロトコルではありませんHTTPSので、ブラウザは以下に示すように、安全のためのヒントをポップアップ表示、選択することに進みます。
- ページでは、ログインに選ぶ選択できるようになるトークンを、あなたが訪問することができ、以前に取得したトークンを入力します。
下図のようにログインに成功した後は、システム情報を確認することができます。
この時点で、kubespray2.11 kubernetes1.15インストールが完了し、私は、これはあなたにいくつかの参照を与えることができることを望みます。プログラマー陳新:国民の関心番号へようこそ