Skip to content

准备工作

换源

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

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
bash
docker 镜像
https://dockerproxy.cn

三台虚拟机

192.168.100 master
192.168.101 node1
192.168.102 node2

1.关闭防火墙

bash
#all
systemctl disabled firewalld

2.关闭selinux

bash
#all
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

3.关闭swap

bash
#all
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab

4.配置hostname 和dns

bash
hostnamectl set-hostname master/node1/node2
#all
echo "192.168.152.100 master
192.168.152.101 node1
192.168.152.102 node2" >> /etc/hosts

5.允许iptables 检查桥接流量

bash
cat <<EOF | tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

6.设置时间同步

bash
yum -y install ntpdate
ntpdate time.windows.com

安装 kubectl kubeadm kubelet

配置镜像源

bash
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseUrl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
   http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

查看可安装版本

bash
yum list kubectl --showduplicates | sort -r

卸载之前安装的

bash
yum -y remove kubectl kubelet kubeadm

安装指定版本

bash
#all
yum -y install kubectl-1.20.9 kubeadm-1.20.9 kubelet-1.20.9

设置开机启动

bash
systemctl enable --now kubelet

初始化master 节点 下载各个机器所需要镜像

bash
tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ;do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF
sh ./images.sh

master执行

bash
kubeadm init \
--apiserver-advertise-address=192.168.152.100 \
--control-plane-endpoint=master \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16
bash
#master
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
  export KUBECONFIG=/etc/kubernetes/admin.conf

网络插件 https://kubernetes.io/docs/concepts/cluster-administration/addons/

bash
curl https://docs.projectcalico.org/archive/v3.20/manifests/calico.yaml -O
kubectl apply -f calico.yaml
bash
kubectl get pod -A
# docker.io/calico/cni:v3.20.6 下载不了
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/calico/cni:v3.20.6
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/calico/cni:v3.20.6  docker.io/calico/cni:v3.20.6

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/calico/node:v3.20.6
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/calico/node:v3.20.6 docker.io/calico/node:v3.20.6
docker pull docker.io/calico/pod2daemon-flexvol:v3.20.6
docker pull docker.io/calico/node:v3.20.6
docker pull docker.io/calico/cni:v3.20.6
bash
生成token
kubeadm token create --print-join-command

查看日志

bash
journalctl -xefu kubelet