まず、環境の説明
猫の/ 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。
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
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 } }
ノード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 } }
节点三:
! 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 } }
在三个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
即可在master节点看到:
到此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
则表示初始化成功
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文件中
修改为:
3.然后部署:
看到所有状态都是running则部署成功
4、加入其他的master节点
kubeadm join 192.168.10.16:8443 --token 4r7i1t.pu099ydf73ju2dq0 \
--discovery-token-ca-cert-hash sha256:65547a2b5633ea663cf9edbde3a65c3d1eb4d0f932ac2c6c6fcaf77dcd86a55f \
--control-plane --certificate-key e8aeb23b165bf87988b4b30a80635d35e45a14d958a10ec616190665c835dc6a
在任意节点执行:
kubectl get node
5.进行测试master高可用:
down掉master1
在其他节点查看
五、加入worker节点
kubeadmは192.168.10.16:8443 --token 4r7i1t.pu099ydf73ju2dq0 \参加
65547a2b5633ea663cf9edbde3a65c3d1eb4d0f932ac2c6c6fcaf77dcd86a55f:--discoveryトークン-CA-CERT-ハッシュSHA256を