安装Docker

sudo yum remove docker*
sudo yum install -yum-utils
​
#配置docker的yum镜像仓库
sudo yum-config-manager \
--add-rep \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
​
#安装指定版本docker...
sudo yum install -y docker-ce-19.03.9 docker-ce-cli-19.03.9 containerd.io-1.4.6
​
#设置开机自启
systemctl enable docker --now
​
#换阿里云镜像加速一下从阿里云拷贝出来的(扫码登陆阿里云->控制台->容器镜像服务)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://hglujpd5.mirror.aliyuncs.com"],
  "exec-opts":["native.cgroupdriver=systemd"]
}
EOF
​
sudo systemctl daemon-reload
sudo systemctl enable --now docker

安装Kubernetes集群

1. 基本环境 CentOS7.9

#分别修改每个机器的hostname,并且能保证内外相互ping通
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-worker1
hostnamectl set-hostname k8s-worker2
​
#分别对3个节点配置本地域名解析,这是能根据域名ping通的关键
vi /etc/host
172.31.0.2 k8s-master
172.31.0.3 k8s-worker1
172.31.0.4 k8s-worker2
​
#将SELinux设置为permissive模式(相当禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
​
#关闭swap 检查:free -m  Swap:列表要全部为0
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab 
​
#允许iptables检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfiler
EOF
​
sudo modprobe overlay
sudo modprobe br_netfilter
​
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf 
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
EOF
​
#保存设置
sudo sysctl --system 

2. 安装kubelet、kubeadm、kubectl

#配置k8s镜像地址
cat <<EOF | sudo tee /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:https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
​
#---------------------上下两部分,分开执行-----------------
​
#安装kubelet(K8S组件下载)、kubeadm(K8S安装工具)、kubectl(程序员命令控制)
sudo yum install -y kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15 --disableexcludes=kubernetes
​
# 在每个节点执行,意思告知每个节点的主节点是会谁(很重要!很重要!很重要!这个跟kubeadm init --control-plane-endpoint=k8s-master 要保持一致
# 其实这句我在上面的本地域名解析配置过来了 (可以执行或者不执行)
echo "172.31.0.2 k8s-master >> /etc/hosts
​
#设置开机自启
sudo systemctl enable --now kubelet
​
#检查是否正常启动kubelet,注意kubelet如果是 “闪开、闪停” 说明正常  (它必须准备好,要不然kubeadm 执行初始化时,无法下载对映的K8S组件)
systemctl status kubelet

3.初始化master节点

# 1.查看kubeadm所需镜像,一般出现版本不兼容报错时,对比检查用的 (可忽略)
kubeadm config images list
​
# 根据 config images list 下载所需要的组件镜像
#docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.20.15
#docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.20.15
#docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.20.15
#docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.20.15
#docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
#docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0
#docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns:v1.7.0
​
# 2.因为第四步会有这那问题,所以镜像先下载到阿里云镜像仓库,版本参考第一步(很关键,要不然K8S安装没法继续进行了)在master节点执行下面脚本进行下载
# 至于其它节点只需要kube-proxy,可以将脚本其它组件镜像删除后执行,或者不删除直接执行
# registry.cn-hangzhou.aliyuncs.com/ldj_containers 阿里云镜像地址,其中ldj_containers是我自定义的目录
# 网上的registry.cn-hangzhou.aliyuncs.com/google_containers中的google_containers 我试过一直超时,本人怀疑压根没有K8S相关组件的镜像
​
sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.15
kube-controller-manager:v1.20.15
kube-scheduler:v1.20.15
kube-proxy:v1.20.15
pause:3.2
etcd:3.4.13-0
coredns:v1.7.0
)
for imageName in ${images[@]}; do
docker pull registry.cn-hangzhou.aliyuncs.com/ldj_containers/$imageName
done
EOF
​
# 3.ls上面脚本执行会生成一个images.sh 文件,下面这句授权执行下载
chmod +x ./images.sh && ./images.sh
​
# 4.这里很容易出错,版本不匹配、自己master节点没写对、镜像找不到又会使用国外默认镜像导致超时等,所以要留意错误日志或者警告日志,根据日志一一解决
# 其它ip地址需要保证网络范围不重叠,简单点ip开头不一样能保证不重叠,只修改apiserver-advertise-address和control-plane-endpoint就行
# 如果修改其它ip,那么后面下载的calico.yaml也要修改成一致的
​
kubeadm init \
--apiserver-advertise-address=172.31.0.2 \
--control-plane-endpoint=k8s-master
--images-repository registry.cn-hangzhou.aliyuncs.com/ldj_containers \
--kubernetes-version v1.20.15 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.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
# 在主节点执行
# 下载k8s的资源文件 (网络插件)
curl https://docs.projectcalico.org/manifests/calico.yaml -O
​
#下载网络插件
kubectl apply -f calico.yaml
#子节点加入主节点 (在子节点执行)
kubeadm join k8s-master:6443 --token xxxxxxxxxxxxxxxx --discovery-token-ca-cert-hash yyyyyyyyyyyyyyyy
​
#如果令牌过期重新生成新的令牌
kubectl token create --print-joint-command
Logo

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

更多推荐