一 服务器规划

序号角色IP内存CPU系统
1master192.168.100.10144centos7.9
2node-1192.168.100.101244centos7.9
3node-2192.168.100.101344centos7.9
应用版本
docker20.10.5
K8S1.20.4

二 服务器初始化

  • 所有主机执行

2.1 修改主机名称

  • 养成好习惯,避免错误操作服务器
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2
bash

2.2 修改hosts

cat >>  /etc/hosts << EOF
192.168.100.101 k8s-master
192.168.100.102 k8s-node1
192.168.100.103 k8s-node2
EOF

2.3 关闭所有主机防火墙安全机制

  • 永久关闭selinux需要重启服务器
systemctl stop firewalld ; systemctl disable firewalld
#永久关闭——需要重启服务器
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g'  /etc/selinux/config
#临时关闭
 setenforce 0

2.4 关闭交换分区

  • 关闭 swap 主要是为了性能考虑。设计者在设计 k8s 的时候,初衷就是解决性能问题,当Linux内存不足时,会启动swap,将部分内存数据存储到磁盘中,这样会使性能下降,如果你的服务器内存较小,可不关闭swap,安装 k8s 的时候可以指定“- -ignore-preflight-errors=Swap”
#临时关闭
 swapoff -a
#永久关闭——注释掉swap这一行
vim /etc/fstab
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

2.5 修改内核参数

  • 如果容器的宿主机上的 ip_forward 未打开,那么该宿主机上的容器则不能被其他宿主机访问
 modprobe br_netfilter
echo "modprobe br_netfilter" >> /etc/profile
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
 sysctl -p /etc/sysctl.d/k8s.conf

2.6 配置在线源

  • 可选项——可以访问外网配置如下源
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/* /etc/yum.repos.d/bak

2.6.1 配置阿里base源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

2.6.2 配置阿里docker源

 yum-config-manager --add-repo 
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.6.3 配置k8s源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=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 clean all
yum makecache

2.7 配置内网源

链接:https://pan.baidu.com/s/1zAK0zwbQh_aNW2UW_os23Q
提取码:ip7b
–来自百度网盘超级会员V4的分享

  • 包含了kubeadm跟docker
mkdir repo
tar xvf k8s-docker.tar.gz  -C ~/repo
#将rpm包拷贝到其他服务器上
scp -r repo/ k8s-node1:~
scp -r repo/ k8s-node2:~

#创建内网源
cat >>  /etc/yum.repos.d/k8s-docker.repo << EOF
[k8s-docker]
name=k8s-docker
baseurl=file:///root/repo/k8s-docker
enable=1
gpgcheck=0
EOF
#将内网源scp到其他服务器上
scp -r /etc/yum.repos.d/k8s-docker.repo k8s-node1:/etc/yum.repos.d/
scp -r /etc/yum.repos.d/k8s-docker.repo k8s-node2:/etc/yum.repos.d/

yum clean all
yum makecache

2.8 安装基础软件

  • 有的包可能安装不上,按照自己的需求来
  • 可以参考这个帖子下载依赖,https://blog.csdn.net/weixin_48485805/article/details/123599555?spm=1001.2014.3001.5501
 yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlibdevel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet

2.9 时间同步

ntpdate cn.pool.ntp.org
crontab -e
* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org

2.10 开启ipvs

  • 开启 IPVS,不开启 ipvs 将会使用 iptables,但是效率低,所以官网推荐需要开通 ipvs 内核
    链接:https://pan.baidu.com/s/1wfNz5H1yjwfu6iaveUce0w
    提取码:kquj
    –来自百度网盘超级会员V4的分享
#将ipvs.modules上传到/etc/sysconfig/modules/
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs

三 安装docker

3.1 安装docker

// 内网源使用下方命令
 yum install docker-ce docker-ce-cli containerd.io -y
// 外网源使用下方命令
 yum -y install docker-ce-20.10.5

systemctl start docker && systemctl enable docker.service

3.2 配置加速器

// 配置加速器,内网机无需操作
// registry-mirrors为加速器地址,内网机无需操作,
// exec-opts为把启动系统改为systemd,与kubelet保持一致,内外网都需要更改
 
cat >>  /etc/docker/daemon.json << EOF
{
"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.dockecn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://humirror.c.163.com","http://qtid6917.mirror.aliyuncs.com","https://rncxm540.mirror.aliyuncs.com"],
"exec-opts":["native.cgroupdriver=systemd"]
}
EOF

systemctl daemon-reload
systemctl restart docker
systemctl status docker

四 安装k8s

  • 链接:https://pan.baidu.com/s/1eCyG5S_VfFX4Jcmtk5DiNg
    提取码:u853
    –来自百度网盘超级会员V4的分享

4.1 安装k8s

  • 所有主机执行
yum install -y kubelet-1.20.4 kubeadm-1.20.4 kubectl-1.20.4
systemctl enable kubelet && systemctl start kubelet
docker load -i k8s-images-v1.20.4.tar.gz

4.2 初始化集群

  • master执行,api-server的地址改为master地址!!
kubeadm init --kubernetes-version=1.20.4 \
--apiserver-advertise-address=192.168.100.101 \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
参数讲解
-kubernetes-version集群版本
apiserver-advertise-addressk8s的master地址
image-repository手动指定仓库地址,这个公网服务器才可以访问
pod-network-cidrpod网段

4.3 node加入集群

  • 初始化集群的时候会回显命令,粘贴到node节点就行
kubeadm join 192.168.100.101:6443 --token r1x6dh.u6qbmmmrld6hbjoz \
    --discovery-token-ca-cert-hash sha256:1cb8b079e1d4c562a610dddc2b3b737bb5668775f6aa09736239ed37225c9183

#如果没注意回显,则使用下面命令生成token也可以
kubeadm token create --print-join-command

4.4 安装网络插件calico

链接:https://pan.baidu.com/s/1nH0mQTkxX6bCAq_gsw96bQ
提取码:dugg
–来自百度网盘超级会员V4的分享

kubectl apply -f calico.yaml

#查看节点状态,此时已经处于ready状态。
kubectl get nodes
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐