首先先要让docker主机联网
iptables -t nat -I POSTROUTING -s 172.25.21.0/24 -j MASQUERADE
把docker主机server2、3、4把image service swarm等清理干净
在server2、3、4
swapoff -a
vim /etc/fstab
在server2、3、4
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://reg.westos.org"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
docker info
systemctl restart docker.service
Cgroup Driver: systemd
在harbor仓库
新建一个项目
在server2、3、4
vim /etc/yum.repos.d/k8s.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
yum install -y kubelet kubeadm kubectl
systemctl enable --now kubelet
在server2
kubeadm config images list --image-repository registry.aliyuncs.com/google_containers
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
如下图 有一个镜像包拉取不到,可以用server1直接在网络上拉取
将刚刚拉取成功的包上传到仓库
用管道和awk 两条命令解决上传 解放双手
docker images |grep ^registry.aliyuncs.com |awk '{print $1":"$2}' | awk -F/ '{system("docker tag "$0" reg.westos.org/k8s/"$3"")}'
docker images |grep ^reg.westos.org/k8s |awk '{system("docker push "$1":"$2"")}'
在server1
联网拉取那个拉取失败的镜像包 然后上传
docker pull coredns/coredns:1.8.0
docker tag coredns/coredns:1.8.0 reg.westos.org/k8s/coredns:v1.8.0
docker push reg.westos.org/k8s/coredns:v1.8.0
在server2
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.westos.org/k8s
初始化集群完成
在初始化集群完成后,查看完成提示的信息:
ll /etc/kubernetes/admin.conf
将初始化完成后,如果是超级用户,你执行
export KUBECONFIG=/etc/kubernetes/admin.conf
vim ~/.bash_profile
export KUBECONFIG=/etc/kubernetes/admin.conf
配置kubectl命令补齐功能:
echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc
Master查看状态
kubectl get pod -n kube-system
发现coredns没有ready
安装flannel网络组件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
vim kube-flannel.yml
-image: flannel:v0.14.0 #设定成自己的仓库公共目录,拉取速度会很快
在server1
拉取flannel:v0.14.0,并上传仓库
docker pull quay.io/coreos/flannel:v0.14.0
docker tag quay.io/coreos/flannel:v0.14.0 reg.westos.org/library/flannel:v0.14.0
docker push reg.westos.org/library/flannel:v0.14.0
在server2
安装flannel
kubectl get pod -n kube-system
可以看到coredns已经ready
在server3、4
节点扩容
kubeadm token create --print-join-command
kubeadm join 172.25.21.2:6443 --token ipk7hv.mn7i5j69zebj75go --discovery-token-ca-cert-hash sha256:71e9481df7ae2ca22ea6174deb43125836620c8b6069249044fc11cb19824459
在server2
已经完成节点扩容