kubernetes是一个开源的容器编排平台,当服务器有一大堆容器要管理的时候他就是自动帮你管理好的总调度。例如:Docker 是乐手,Kubernetes 是指挥家。乐手负责演奏,指挥家负责让整个乐团协调演出、有人缺席就立刻补位、曲目切换不能停。

一、集群搭建
部署kubernetes需要的主机


 
主机名    IP    角色
harbor    172.25.25.250    harbor仓库
k8s-master    172.25.25.100    master
k8s-node1    172.25.25.10    node1
k8s-node2    172.25.25.20    node2
 

1、建立harbor仓库

(1)建立docker仓库

[rootharbor ~]# dnf remove  podman -y
[root@harbor ~]# dnf install httpd -y
[root@harbor harbor]# vim /etc/httpd/conf/httpd.conf
Listen 1111
[root@harbor docker]# systemctl enable --now httpd
[root@harbor ~]# mkdir /var/www/html/docker -p

[root@harbor ~]# vim /etc/yum.repos.d/docker.repo

下载 docker安装包到/mnt/docker并不安装

yum install docker-ce  --downloadonly  --destdir  /mnt/docker

再下载http和createrepo服务为创建发布docker仓库做准备

[root@harbor ~]# yum install httpd  createrepo -y

将下好的docker安装包放到http服务的发布目录底下

[root@harbor ~]# mv /mnt/docker/* /var/www/html/docker/

把 /var/www/html/docker/ 这个文件夹里的所有 RPM 安装包,整理成一个可以通过 YUM 安装的软件仓库

[root@harbor ~]# createrepo /var/www/html/docker/

修改http服务的监听端口

[root@harbor ~]# vim /etc/httpd/conf/httpd.conf

再次修改docker仓库

[root@harbor ~]# vim /etc/yum.repos.d/docker.repo

验证docker仓库能不能用

2、安装docker仓库在harbor
[root@harbor ~]# yum install docker-ce -y

[root@harbor ~]# echo br_netfilter > /etc/modules-load.d/docker_mod.conf   

[root@harbor ~]# modprobe -a br_netfilter          #加载内核模块

[root@harbor ~]# vim /etc/sysctl.d/docker.conf

[root@harbor ~]# systemctl restart  systemd-modules-load.service   #重新加载内核模块自动加载服务

[root@harbor ~]# vim /lib/systemd/system/docker.service

[root@harbor ~]# systemctl daemon-reload                 #重新加载服务配置文件

[root@harbor ~]# systemctl enable --now docker.service         #开机自启动
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.

3、生成key
[root@harbor ~]# mkdir /data/certs -p                #存放key文件

[root@harbor ~]# openssl req -newkey  rsa:4096 -nodes -sha256 -keyout /data/certs/timinglee.org.key -addext "subjectAltName = DNS:reg.timinglee.org" -x509 -day 365 -out /data/certs/timinglee.org.crt

4、配置harbor仓库
[root@harbor ~]# tar zxf harbor-offline-installer-v2.5.4.tgz -C /opt/

[root@harbor ~]# ls
anaconda-ks.cfg  harbor  harbor-offline-installer-v2.5.4.tgz  vm  vmset.sh  vmset.sh~
[root@harbor ~]# cd /opt/harbor/

[root@harbor harbor]# cp  harbor.yml.tmpl harbor.yml
[root@harbor harbor]# vim harbor.yml

修改三个参数


[root@harbor harbor]# ./install.sh --with-chartmuseum 安装镜像 仓库和ChartMuseum组件

编写harbor的启动脚本

[root@harbor harbor]# vim /lib/systemd/system/harbor.service

[root@harbor harbor]# systemctl daemon-reload 

[root@harbor harbor]# systemctl enable --now harbor.service 
Created symlink /etc/systemd/system/multi-user.target.wants/harbor.service → /usr/lib/systemd/system/harbor.service.

5、启动并验证docker仓库
Docker 客户端配置自签名证书的信任

[root@harbor harbor]# mkdir /etc/docker/certs.d/reg.timinglee.org/ -p
[root@harbor harbor]# cp /data/certs/timinglee.org.crt /etc/docker/certs.d/reg.timinglee.org/ca.crt

写本地解析

[root@harbor harbor]# vim /etc/hosts

[root@harbor harbor]# systemctl restart docker.service

登录仓库

二、构建kubernetes
在所有主机上关闭swap

1、使用harbor中的docker仓库安装docker
[root@harbor ~]# for i in 10 20 100 ;do scp /etc/yum.repos.d/docker.repo 172.25.25.$i:/etc/yum.repos.d/docker.repo;done

在所有主机上做

安装docker
[root@node1 ~]# yum install docker-ce -y

[root@node1 ~]# systemctl enable  --now docker.service

配置docker加速器
[root@node1 ~]# vim /etc/docker/daemon.json

[root@node1 ~]# docker info
重启docker

主机之间彼此建立解析


配置kubernetes安装源
[root@node1 ~]#  vim /etc/yum.repos.d/kubernetes.repo

三、部署kubetnetes

1、用二进制方式安装cri-dockerd

[root@harbor ~]# wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.4.4/cri-dockerd-0.4.4.amd64.tgz

[root@harbor ~]# tar zxf cri-dockerd-0.4.4.amd64.tgz

[root@harbor ~]# cd cri-dockerd/
[root@harbor cri-dockerd]# ls
cri-dockerd  cri-docker.service  cri-docker.socket
[root@harbor cri-dockerd]# install -o root -m 0755 cri-dockerd /usr/local/bin/cri-dockerd

[root@harbor cri-dockerd]#  cp cri-docker.s* /lib/systemd/system

[root@master ~]# chmod  +x /lib/systemd/system/cri-docker.s*

[root@harbor cri-dockerd]# mv cri-docker.service /lib/systemd/system/cri-doker.service

[root@master ~]# vim /lib/systemd/system/cri-docker.service

[root@harbor ~]# systemctl daemon-reload

[root@master ~]#  systemctl enable --now cri-docker.service

[root@master ~]# systemctl status cri-docker.service

2、安装kubernetes集群需要的软件


master节点

[root@master ~]# dnf install kubelet kubeadm kubectl -y

[root@master ~]# systemctl enable --now kubelet.service

node节点

[root@node1 ~]# dnf install kubelet kubeadm  -y

[root@node1 ~]# systemctl enable --now kubelet.service

master上命令补齐

[root@master ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc
[root@master ~]# echo "source <(kubeadm completion bash)" >> ~/.bashrc
[root@master ~]# source  ~/.bashrc

3、下载kubernetes镜像
查看并下载镜像

上传镜像到本地仓库

登录 仓库

[root@master ~]# docker login reg.timinglee.org
Username: admin
Password: 

WARNING! Your credentials are stored unencrypted in '/root/.docker/config.json'.
Configure a credential helper to remove this warning. See
https://docs.docker.com/go/credential-store/、

镜像打包

[root@master ~]# docker images  --format  "{{.Repository}}:{{.Tag}}" | awk -F "/" '/google/{system("docker tag "
3)}'

上传镜像

[root@master ~]# docker images  --format  "{{.Repository}}:{{.Tag}}" | awk -F "/" '/timinglee/{system("docker push "$0)}'

四、初始化kubernetes集群


[root@master ~]# kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.timinglee.org/k8s --kubernetes-version v1.35.7 --cri-socket=unix:///var/run/cri-dockerd.sock

[root@master ~]# vim ~/.bash_profile

[root@master ~]# source ~/.bash_profile

node节点加入到kubernetes环境

5、安装网络插件
[root@master ~]# tar zxf kube-flannel-v0.28.9.tar.gz

[root@master ~]# cd flannel/

修改参数


上传镜像
[root@master flannel]# docker load -i kube-flannel-v0.28.9.tar

在harbor仓库中新建一个项目

[root@master flannel]# kubectl apply  -f kube-flannel.yml 
namespace/kube-flannel created
serviceaccount/flannel created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created

更多推荐