kubeadm展開K8S:v1.16.3高可用性クラスタ

まず、環境の説明

猫の/ etc / hosts

192.168.10.11ノード1#MASTER1

192.168.10.14ノード4#MASTER2

192.168.10.15 NODE5#master3

注:それは、独自の仮想マシンの動作中にこれだけマスターノードの展開ですので、操作ワーカーノードが実行するには、私が操作が可能に基づいて、一緒に書き込みます。


第二に、環境設定<マスターと労働者を実行>

 1.設定アリ雲のyumソース(オプション)

-oカール/etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

RM -rfの/ var /キャッシュ/ yumをyumを&& makecache

2、インストールの依存関係

yumの接続追跡ipvsadmのipset JQ sysstatのカールiptablesのlibseccomp -y EPEL-リリースをインストールします

3、ファイアウォールをオフにします

systemctl停止firewalld && systemctl無効firewalld

iptablesの-F &&のiptables -X &&のiptables -F -t NAT &&のiptables -X -t NAT &&のiptables -P FORWARD ACCEPT

図4は、SELinuxを無効にします

setenforce 0

など/ selinuxに/設定/ -i "S / SELINUX =施行/ SELINUX =無効/ gを" sedの

5、スワップパーティションを切ります

するswapoff -a

sedの-iの/ etc / fstabに '/スワップ/ / ^ \(。* \)$ /#\ 1 / gのS'

6、LKM

猫> /etc/sysconfig/modules/ipvs.modules << EOF

#!/ binに/ bashの

modprobeは - ip_vs

modprobeは - ip_vs_rr

modprobeは - ip_vs_wrr

modprobeは - ip_vs_sh

modprobeは - nf_conntrack_ipv4

modprobeは - br_netfilter

EOF

のchmod 755 /etc/sysconfig/modules/ipvs.modules && bashの/etc/sysconfig/modules/ipvs.modules

7、設定カーネルパラメータ

猫<< EOF | ティー/etc/sysctl.d/k8s.conf

net.bridge.bridge-NF-コールのiptables = 1

net.bridge.bridge-NF-コール-ip6tablesを= 1

net.ipv4.ip_forward = 1

net.ipv4.tcp_tw_recycle = 0

vm.swappiness = 0

vm.overcommit_memory = 1

vm.panic_on_oom = 0

fs.inotify.max_user_watches = 89100

fs.file-MAX = 52706963

fs.nr_open = 52706963

net.ipv6.conf.all.disable_ipv6 = 1

net.netfilter.nf_conntrack_max = 2310720

EOF

のsysctl -p /etc/sysctl.d/k8s.conf

 8、インストールドッカー

ヤムヤム-utilsのインストール-yデバイスマッパー永続データLVM2

yumを-config設定マネージャ--add-レポhttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yumをmakecache速いです

yumをインストール-yドッキングウィンドウ-CE-18.09.6

ドッキングウィンドウを起動しsystemctl

ドッキングウィンドウを有効にsystemctl


インストールが完了した後のコマンドは、意志がDROPにFORWARDチェーンのデフォルトポリシーをiptablesのそれ以外のドッキングウィンドウ、設定を開始します

またKubeadmはそうでもdaemon.json変更、systemdに設定したのcgroupドライブにお勧めします

-iは/usr/lib/systemd/system/docker.serviceを "13I ExecStartPost =は/ usr / sbinに/ iptablesの-P FORWARD ACCEPT" SED

ティー/etc/docker/daemon.json << - 'EOF'

{ "EXEC-OPTS":[ "native.cgroupdriver = systemdに"]}

EOF

systemctlデーモンリロード

systemctl再起動ドッカ

 9、およびインストールkubeadm kubelet

猫<< EOF> /etc/yum.repos.d/kubernetes.repo

[Kubernetes]

名前= Kubernetes

BASEURL = HTTPS://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

= 1を有効に

gpgcheck = 0

repo_gpgcheck = 0

gpgkey = HTTPS://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

にyumキャッシュほとんど作ります

yumをインストール-yオムレツkubeadm kubectl

オムレツ有効systemctl

vimの/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf

#のcgroupドライバkubeletを設定します。

KUBELET_KUBECONFIG_ARGS = - のcgroup-ドライバ=にsystemd

systemctlデーモンリロード

systemctl再起動kubelet.service

図10に示すように、必要な画像を引っ張っ

kubeadm設定画像一覧| SED -eさん/ ^ /ドッキングウィンドウプル/ G '-eさん#k8s.gcr.io#registry.cn-hangzhou.aliyuncs.com / google_containers#G' | SH -x

ドッキングウィンドウの画像| grepのregistry.cn-hangzhou.aliyuncs.com/google_containers | awkの{印刷 "ドッキングウィンドウタグ"、$ 1 ":" $ 2、$ 1 ":" $ 2} '| SED -eさん/ registry.cn-hangzhou.aliyuncs.com \ /google_containers/k8s.gcr.io/2 '| SH -x

ドッキングウィンドウの画像| grepのregistry.cn-hangzhou.aliyuncs.com/google_containers | awkの{ "" "$ 1 "" ドッキングウィンドウRMI" 印刷 ":" "" $ 2} '| SH -x


第三に、インストールとkeepalivedのhaproxy <マスターを実行>

    Kubernetesは主に高可用性制御プレーンの可用性を指し、それは単にEtcdマスターアセンブリノードとマスターノードによる組立作業がロードバランシングのそれぞれに接続されているセットの数です。

マスターノードは、アセンブリと共に布と混合etcd。

1655691657-5c9d7c966ba63_articlex.png

Etcd混合布方法:
    以下のマシンのリソースを必要と
    シンプルを展開するために、管理に役立つ
    簡単にスケールアウト
    リスクは、ホストは、マスターとetcdが少なく、衝撃クラスタの冗長性が比較的大きいことだろう、ハングアップ。

    3.1masterインストール

yumをインストール-y keepalivedのhaproxy

    3.2設定ファイルを変更:( haproxy 3つのノードが同じです)

グローバル
    127.0.0.1 LOCAL2を記録
    chroot環境の/ var / libに/ haproxy
    pidファイル/var/run/haproxy.pid
    MAXCONN 4000
    ユーザーhaproxy
    グループhaproxy
    デーモン
    統計ソケットを/ var / libに/ haproxy /統計
デフォルト
    モードのhttp
    ロググローバル
    オプションHTTPLOG
    オプションdontlognull
    オプションのhttpサーバクローズ
    127.0.0.0/8除くforwardforオプション
    オプションの再ディスパッチ
    リトライ3
    タイムアウトHTTPリクエスト10S
    タイムアウトキュー1メートル
    タイムアウト接続10S
    タイムアウトクライアント1メートル
    タイムアウトサーバー1メートル
    タイムアウトのhttp-キープアライブ10S
    タイムアウトチェック10S
    MAXCONN 3000
統計情報を聞きます
    バインド*:1080
    管理者認証統計:awesomePassword
    統計リフレッシュ5S
    統計レルムHAProxy \統計
    統計URI /管理?統計
フロントエンドkubernetes-apiserver
   モードTCP
   バインド*:8443
   オプションtcplog
   default_backendのkubernetes-apiserver
バックエンドkubernetes apiserver
    バランスラウンドロビン
    モードTCP
    サーバノード1 192.168.10.11:6443チェック間5000秋2上昇2重量1
    サーバノード4 192.168.10.14:6443チェック間5000秋2上昇2重量1
    192.168.10.15:6443チェック間5000秋2上昇2重量NODE5サーバー1

画像20191202094604889.png

画像20191202094652145.png

    3.3は、設定ファイルを変更keepalivedの

    ノード:

keepalivedのための設定ファイル
global_defs {
   ROUTER_ID LVS_DEVEL
}
vrrp_script check_haproxy {
    スクリプト「/etc/keepalived/check_haproxy.sh」
    インターバル3
    重量-2
    秋10
    上昇2
}
vrrp_instance VI_1 {
    状態MASTER
    インタフェースens33番号、物理NICのホスト名
    virtual_router_id 51
    優先順位100
    advert_int 1
    認証{
        AUTH_TYPE PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        同じネットワークセグメント内に独自のIPへ192.168.10.16 #VIP
    }
        track_script {
            check_haproxy
    }
}

画像20191202094310230.png

    ノードII:

keepalivedのための設定ファイル
global_defs {
   ROUTER_ID LVS_DEVEL
}
vrrp_script check_haproxy {
    スクリプト「/etc/keepalived/check_haproxy.sh」
    インターバル3
    重量-2
    秋10
    上昇2
}
vrrp_instance VI_1 {
    状態のバックアップ
    interface ens33
    virtual_router_id 51
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.16
    }
        track_script {
            check_haproxy
    }
}

画像20191202094945411.png

    节点三:

! Configuration File for keepalived
global_defs {
   router_id LVS_DEVEL
}
vrrp_script check_haproxy {
    script "/etc/keepalived/check_haproxy.sh"
    interval 3
    weight -2
    fall 10
    rise 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 60
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.16
    }
        track_script {
            check_haproxy
    }
}

画像20191202095054417.png

    在三个master执行:

cat > /etc/keepalived/check_haproxy.sh <<EOF
#!/bin/bash
systemctl status haproxy > /dev/null
if [[ \$? != 0 ]];then
        echo "haproxy is down,close the keepalived"
        systemctl stop keepalived
fi
EOF
chmod +x /etc/keepalived/check_haproxy.sh
systemctl enable keepalived && systemctl start keepalived 
systemctl enable haproxy && systemctl start haproxy
systemctl status keepalived && systemctl status haproxy
#如果keepalived状态不是running,则从新执行
systemctl  restart  keepalived

画像20191202095418729.png

画像20191202095516642.png

    即可在master节点看到:

画像20191202100007379.png

到此keepalived和haproxy准备完成。


四、初始化集群

kubeadm init \
  --kubernetes-version=v1.16.3 \
  --pod-network-cidr=10.244.0.0/16 \
  --apiserver-advertise-address=192.168.10.11 \
  --control-plane-endpoint 192.168.10.16:8443 --upload-certs

画像20191202100726540.png

则表示初始化成功

    1.为需要使用kubectl的用户进行配置

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

    2.安装Pod Network

    安装canal网络插件

wget https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/canal/rbac.yaml

wget https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/canal/canal.yaml

这里需要修改canal.yaml文件中

修改为:画像20191202101116352.png

画像20191202101159522.png


    3.然后部署:

画像20191202101256768.png

看到所有状态都是running则部署成功

image-20191202102258807.png

image-20191202102603851.png

    4、加入其他的master节点

kubeadm join 192.168.10.16:8443 --token 4r7i1t.pu099ydf73ju2dq0 \
    --discovery-token-ca-cert-hash sha256:65547a2b5633ea663cf9edbde3a65c3d1eb4d0f932ac2c6c6fcaf77dcd86a55f \
    --control-plane --certificate-key e8aeb23b165bf87988b4b30a80635d35e45a14d958a10ec616190665c835dc6a

image-20191202102928765.png

在任意节点执行:

kubectl  get  node

image-20191202104142213.png

    5.进行测试master高可用:

    down掉master1

image-20191202104718838.png

在其他节点查看

image-20191202110046704.png


五、加入worker节点

kubeadmは192.168.10.16:8443 --token 4r7i1t.pu099ydf73ju2dq0 \参加
    65547a2b5633ea663cf9edbde3a65c3d1eb4d0f932ac2c6c6fcaf77dcd86a55f:--discoveryトークン-CA-CERT-ハッシュSHA256を

おすすめ

転載: blog.51cto.com/14268033/2455507