k8s(Kubernetes)的集群部署
- 一、环境设置
- 二、安装部署软件kubeadm
- 三、建立k8s镜像仓库
- 四、初始化集群
- 五、安装flannel网络组件
- 六、加入k8s集群
一、环境设置
1、需要4台虚拟机,server1~server4,serve1安装好了harbor仓库,server2,3,4安装了docker
- harbor仓库安装:
2、关闭节点的selinux和iptables防火墙
3、所有节点部署docker引擎,配置网桥
yum install -y docker-ce docker-ce-cli
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
sysctl --system
4、清理之前docker实验的缓存(服务,网络,数据卷,镜像,容器)
docker service ls
docker service rm service
cd /etc/systemd/system/docker.service.d/
rm -f 10-machine.conf
docker network prune ##清理网络
docker volume prune ##清理数据卷
docker image prune ##清理镜像
docker container prune ##清理容器
systemctl daemon-reload
systemctl restart docker
5、禁用server2~server4主机的swap分区(注意etc/fstab
里要注释,防止开机自启)
swapoff -a
vim /etc/fstab
#/dev/mapper/rhel-swap swap swap defaults 0 0
6、server2~server4主机修改驱动和默认仓库
- 设定docker cgroup driver为systemd
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://reg.westos.org"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
systemctl daemon-reload
systemctl restart docker
二、安装部署软件kubeadm
1、编写yum源文件
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
开启真机的路由,使得虚拟机能上网(真机执行以下命令)
iptables -t nat -I POSTROUTING -s 172.25.36.0/24 -j MASQUERADE
2、安装kubelet kubeadm kubectl
yum repoist
yum install -y kubelet kubeadm kubectl
systemctl enable --now kubelet.service
三、建立k8s镜像仓库
1、在harbor中创建k8s项目,设置公开,里面放置k8s的镜像
2、列出所需镜像
kubeadm config images list --image-repository registry.aliyuncs.com/google_containers
3、在server1上传相应的镜像
docker load -i k8s-1.21.3.tar
对镜像分别打标签时的快捷方法
docker images | grep ^reg.westos.org | awk '{print $1":"$2}'
上传镜像
docker images | grep ^reg.westos.org/k8s | awk '{system("docker push "$1":"$2"")}'
四、初始化集群
1、将server1上生成的证书发给server2~server4
- server1上:
scp -r /etc/docker/certs.d/ server2:/etc/docker/certs.d/
scp -r /etc/docker/certs.d/ server3:/etc/docker/certs.d/
scp -r /etc/docker/certs.d/ server4:/etc/docker/certs.d/
2、初始化k8s集群
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.westos.org/k8s
3、初始化后的提示操作
4、按照提示操作
- 配置环境变量,并写入
.bash_profile
中
export KUBECONFIG=/etc/kubernetes/admin.conf
vim .bash_profile
export KUBECONFIG=/etc/kubernetes/admin.conf
- 配置kubectl命令补齐功能
echo "source <(kubectl completion bash)" >> ~/.bashrc
5、查看节点
kubectl get pod -n kube-system
发现有两个没有运行,原因是没有安装flannel网络组件
五、安装flannel网络组件
1、server1端上传至仓库
docker tag flannel:v0.14.0 reg.westos.org/library/flannel:v0.14.0
docker push reg.westos.org/library/flannel:v0.14.0
2、下载yml文件
yum install -y wget
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
vim kube-flannel.yml
169 image: flannel:v0.14.0
183 image: flannel:v0.14.0
3、启动组件
- 再查看节点时,全部都开启
kubectl apply -f kube-flannel.yml
六、加入k8s集群
- 在server3和server4上执行刚刚提示的指令加入集群
kubeadm join 172.25.36.2:6443 --token 16j4h1.8makrpbd249a7vvq \
--discovery-token-ca-cert-hash sha256:77c6290edec094b3d89f9c4aa51da2e8a67b57e7833d6f211ca37eb52a87f530
- 在server2上查看节点状态,发现server3和server4已经加入k8s集群
kubectl get nodes
kubectl get pod -n kube-system