@zhangyy
2021-07-05T06:10:05.000000Z
字数 6051
阅读 704
kubernetes架构系列
系统:centos7.9x64-1主机名:cat /etc/hosts----192.168.100.11 k8s-master01192.168.100.12 k8s-master02192.168.100.13 k8s-master03192.168.100.100 k8s-master-lb192.168.100.14 k8s-node01192.168.100.15 k8s-node02192.168.100.16 k8s-node03----k8s 1.20.x的 高可用

所有节点关闭firewalld 、dnsmasq、selinux(NetworkManager):systemctl disable --now firewalldsystemctl disable --now dnsmasqsetenforce 0所有节点关闭swap分区:swapoff -a && sysctl -w vm.swappiness=0

时间服务器:vim /etc/chrony.conf----service ntp1.aliyun.com iburst----service chronyd stopservice chronyd startchronyc sources -v

所有节点安装基本工具yum install wget jq psmisc vim net-tools yum-utils device-mapper-persistent-data lvm2 git -y

下载所需要文件:git clone https://github.com/dotbalo/k8s-ha-install.gitgit branch -agit checkout manual-installation-v1.20.x



centos7的源安装: 【全部节点】curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repoyum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

CentOS 8 安装源如下:curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repoyum makecacheyum install -y yum-utils device-mapper-persistent-data lvm2
所有节点安装ipvsyum install ipvsadm ipset sysstat conntrack libseccomp -y

vim /etc/modules-load.d/ipvs.confip_vsip_vs_lcip_vs_wlcip_vs_rrip_vs_wrrip_vs_lblcip_vs_lblcrip_vs_dhip_vs_ship_vs_foip_vs_nqip_vs_sedip_vs_ftpip_vs_shnf_conntrack_ipv4ip_tablesip_setxt_setipt_setipt_rpfilteript_REJECTipipsysctl -psystemctl enable --now systemd-modules-load.servicereboot 重启所有机器

cat <<EOF > /etc/sysctl.d/k8s.confnet.ipv4.ip_forward = 1net.bridge.bridge-nf-call-iptables = 1fs.may_detach_mounts = 1vm.overcommit_memory=1vm.panic_on_oom=0fs.inotify.max_user_watches=89100fs.file-max=52706963fs.nr_open=52706963net.netfilter.nf_conntrack_max=2310720net.ipv4.tcp_keepalive_time = 600net.ipv4.tcp_keepalive_probes = 3net.ipv4.tcp_keepalive_intvl =15net.ipv4.tcp_max_tw_buckets = 36000net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_max_orphans = 327680net.ipv4.tcp_orphan_retries = 3net.ipv4.tcp_syncookies = 1net.ipv4.tcp_max_syn_backlog = 16384net.ipv4.ip_conntrack_max = 65536net.ipv4.tcp_max_syn_backlog = 16384net.ipv4.tcp_timestamps = 0net.core.somaxconn = 16384EOFsysctl --system

如需内核升级,可以按需操作:CentOS7 需要升级内核至4.18+https://www.kernel.org/ 和 https://elrepo.org/linux/kernel/el7/x86_64/CentOS 7 dnf可能无法安装内核dnf --disablerepo=\* --enablerepo=elrepo -y install kernel-ml kernel-ml-develgrubby --default-kernel使用如下方式安装最新版内核rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgrpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm查看最新版内核yum --disablerepo="*" --enablerepo="elrepo-kernel" list available[root@k8s-node01 ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list availableLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile* elrepo-kernel: mirrors.neusoft.edu.cnelrepo-kernel | 2.9 kB 00:00:00elrepo-kernel/primary_db | 1.9 MB 00:00:00Available Packageselrepo-release.noarch 7.0-5.el7.elrepo elrepo-kernelkernel-lt.x86_64 4.4.229-1.el7.elrepo elrepo-kernelkernel-lt-devel.x86_64 4.4.229-1.el7.elrepo elrepo-kernelkernel-lt-doc.noarch 4.4.229-1.el7.elrepo elrepo-kernelkernel-lt-headers.x86_64 4.4.229-1.el7.elrepo elrepo-kernelkernel-lt-tools.x86_64 4.4.229-1.el7.elrepo elrepo-kernelkernel-lt-tools-libs.x86_64 4.4.229-1.el7.elrepo elrepo-kernelkernel-lt-tools-libs-devel.x86_64 4.4.229-1.el7.elrepo elrepo-kernelkernel-ml.x86_64 5.7.7-1.el7.elrepo elrepo-kernelkernel-ml-devel.x86_64 5.7.7-1.el7.elrepo elrepo-kernelkernel-ml-doc.noarch 5.7.7-1.el7.elrepo elrepo-kernelkernel-ml-headers.x86_64 5.7.7-1.el7.elrepo elrepo-kernelkernel-ml-tools.x86_64 5.7.7-1.el7.elrepo elrepo-kernelkernel-ml-tools-libs.x86_64 5.7.7-1.el7.elrepo elrepo-kernelkernel-ml-tools-libs-devel.x86_64 5.7.7-1.el7.elrepo elrepo-kernelperf.x86_64 5.7.7-1.el7.elrepo elrepo-kernelpython-perf.x86_64 5.7.7-1.el7.elrepo elrepo-kernel安装最新版:yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel –y安装完成后reboot更改内核顺序:grub2-set-default 0 && grub2-mkconfig -o /etc/grub2.cfg && grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)" && reboot开机后查看内核[appadmin@k8s-node01 ~]$ uname -aLinux k8s-node01 5.7.7-1.el7.elrepo.x86_64 #1 SMP Wed Jul 1 11:53:16 EDT 2020 x86_64 x86_64 x86_64 GNU/LinuxCentOS 8按需升级:可以采用dnf升级,也可使用上述同样步骤升级(使用上述步骤注意elrepo-release-8.1版本)rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgdnf install https://www.elrepo.org/elrepo-release-8.1-1.el8.elrepo.noarch.rpmdnf --disablerepo=\* --enablerepo=elrepo -y install kernel-ml kernel-ml-develgrubby --default-kernel && reboot
安装docker-19.03yum install docker-ce-19.03* docker-ce-cli-19.03* -yservice docker startchkconfig docker on配置docker的cgroup:cat > /etc/docker/daemon.json <<EOF{"exec-opts": ["native.cgroupdriver=systemd"]}EOF

下载地址githubk8s github : https://github.com/kubernetes/kubernetes/安装k8s1.20.8tar -zxvf kubernetes-server-linux-v1.20.8-amd64.tar --strip-components=3 -C /usr/local/bin kubernetes/server/bin/kube{let,ctl,-apiserver,-controller-manager,-scheduler,-proxy}

配置etcdtar -zxvf etcd-v3.4.14-linux-amd64.tar.gz --strip-components=1 -C /usr/local/bin etcd-v3.4.14-linux-amd64/{etcd,etcdctl}

vim k8s.sh-------MasterNodes='k8s-master02 k8s-master03'WorkNodes='k8s-node01 k8s-node02 k8s-node03'for NODE in $MasterNodes; do echo $NODE; scp /usr/local/bin/kube{let,ctl,-apiserver,-controller-manager,-scheduler,-proxy} $NODE:/usr/local/bin/; scp /usr/local/bin/etcd* $NODE:/usr/local/bin/; donefor NODE in $WorkNodes; do scp /usr/local/bin/kube{let,-proxy} $NODE:/usr/local/bin/ ; done-------. ./k8s.sh

CNI安装,下载CNI组件wget https://github.com/containernetworking/plugins/releases/download/v0.8.5/cni-plugins-linux-amd64-v0.8.5.tgz所有节点:mkdir -p /opt/cni/bin解压cni并发送至其他节点tar -zxf cni-plugins-linux-amd64-v0.8.5.tgz -C /opt/cni/binvim cni.sh--------MasterNodes='k8s-master02 k8s-master03'WorkNodes='k8s-node01 k8s-node02 k8s-node03'for NODE in $MasterNodes; do ssh $NODE 'mkdir -p /opt/cni/bin'; scp /opt/cni/bin/* $NODE:/opt/cni/bin/; donefor NODE in $WorkNodes; do ssh $NODE 'mkdir -p /opt/cni/bin'; scp /opt/cni/bin/* $NODE:/opt/cni/bin/; done---------. ./cni.sh


