1. 先给每台机器安装docker环境
卸载旧的docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
配置docker的yum库
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动docker校验
# 启动Docker
systemctl start docker
# 停止Docker
systemctl stop docker
# 重启
systemctl restart docker
# 设置开机自启
systemctl enable docker
# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps
最后配置一下docker的镜像加速
首先访问阿里云网站: https://www.aliyun.com/
指令如下
# 创建目录
mkdir -p /etc/docker
# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF
# 重新加载配置
systemctl daemon-reload
# 重启Docker
systemctl restart docker
2. 安装k8s
配置k8s的源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[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 remove -y kubelet kubeadm kubectl
查看可安装的版本
yum list kubelet--showduplicates | sort -r
安装kubelet kubeadm kubectl
yum install -y kubelet-1.21.0 kubeadm-1.21.0 kubect1-1.21.0
开机自启
systemctl enable kubelet && systemctl start kubelet
3. 搭建k8s集群
**创建k8s所需的docker镜像,所有机器都执行(node机器不需要执行那么多镜像拉取,这边都给执行了也不影响)
images=(
kube-apiserver:v1.21.0
kube-proxy:v1.21.0
kube-controller-manager:v1.21.0
kube-scheduler:v1.21.0
coredns:v1.8.8
etcd:3.4.13-0
pause:3.4.1
)
for imagename in ${images[@]};do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imagename
done
chmod +x images.sh && ./images.sh
注意1.21.0版本的k8s的coredns镜像需要结合阿里云特殊处理,重新打标签
docker tag registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/coredns:v1.8.0 registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/coredns/coredns:v1.8.0
**初始化master机器的节点
执行 kubeadm init
kubeadm init --apiserver-advertise-address=192.168.230.176 --image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images --kubernetes-version v1.21.0 --service-cidr=10.96.0.0/16 --pod-network-cidr=192.169.0.0/16
初始化完成后会生成worker节点需要执行的命令
kubeadm join 192.168.230.176:6443 --token y16z6x.hruk6wmcs5yal5fh --discovery-token-ca-cert-hash sha256:3e403d3750b482b5904d328768d10287441fdc0e3de77d082b45688c459faf36
注意 service-cidr 某些pod负载均衡所需的ip范围
pod-network-cidr pod所需的ip范围
这两个不能和apiserver-advertise-address重复了
如果初始化master节点和worker节点报错则看我这篇博客k8s遇到的常见问题及解决-CSDN博客
**然后master上面应用一个网络插件
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
**k8s集群为了访问通,默认用的是iptables,并发量过大的时候性能不好
修改为ipvs模式
kubectl edit cm kube-proxy -n kube-system
修改mode='ipvs'
修改完之后需要删除之前的kube-proxy的所有pod,k8s集群有自愈能力会再次生成kube-proxy
kubectl delete pod kube-proxy-nhl5q -n kube-system
pod后面跟名称 -n后面为名称空间
**查看集群状态都为run,并上面步骤没有问题则表示集群搭建成功