0
点赞
收藏
分享

微信扫一扫

centos搭建k8s环境

晚熟的猫 2023-07-04 阅读 60

文章目录


前言

这篇文章讲解如何在centos搭建k8s环境,主要内容包括docker环境、docker私有镜像仓库搭建、k8s环境搭建三个部分。


一、环境准备

1.1 安装要求

部署k8s集群需要以下条件:

  • 至少三台服务器,使用Centos7版本操作系统。
  • 内存大于等于2G,CPU大于等于2核,硬盘大于等于30G。
  • 需要下载镜像,因此必须能够访问外网。
  • 禁止swap分区。

1.2 准备环境

  1. 新安装的Centos7.9服务器需要配置静态网络:
    打开网络配置文件:
cd /etc/sysconfig/network-scripts/

将以下内容添加进去,其中BOOTPROTO="static"表示静态网络,NAME和DEVICE填网卡驱动如果没有驱动需要手动安装即可;下面添加IP、子网掩码以及网关、DNS等内容。

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp8s0"
DEVICE="enp8s0"
ONBOOT="yes"
IPADDR="192.168.1.180"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.1"
DNS1="192.168.1.1"
  1. 由于之前已经有三台服务器主机名分别是master、node1、node2,因此本次安装三台服务器依次为node3、node4、node5。
角色名称IP
主节点node3192.168.1.180
子节点1node4192.168.1.181
子节点2node5192.168.1.182
  1. 在新搭建的centos7.9操作系统上进行初始化:
#永久关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

#关闭swap
sed -ri 's/.*swap.*/#&/' /etc/fstab

# 三台服务器设置主机名
hostnamectl set-hostname <hostname>

#三台服务器添加hosts
192.168.1.180 node3
192.168.1.181 node4
192.168.1.182 node5

一、Docker环境

Docker是一种较新的虚拟化方式,使用容器技术和宿主机共享硬件资源及操作系统,实现资源的动态分配,在彼此隔离的资源中运行应用程序。容器包含应用和其所有的依赖包,所有容器共享操作系统内核。使用Docker容器可保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响。

1.1 Docker安装

k8s使用的容器为Docker,需首先安装Docker环境。

# 安装Docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7

# 检查Docker是否安装成功
docker --version

# 启动并设置Docker开机自启动
systemctl enable docker && systemctl start docker

# 添加Docker阿里云镜像仓库
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://xigtegnc.mirror.aliyuncs.com"]
}
EOF

1.2 Docker 私有镜像仓库

Docker私有镜像仓库使用官方提供的registry完成

# 拉取registry镜像
docker pull registry

# 启动registry镜像,确定启动方式、是否重启、以及挂载目录、容器名字
docker run -itd -p 5000:5000 --restart always -v /opt/data/registry/:/var/lib/registry --name registry registry

# 验证是否搭建成功,浏览器打开网址:http://IP:port/v2/_catalog,成功说明镜像仓库搭建成功。
http://192.168.1.180:5000/v2/_catalog

# 将镜像发布到仓库中
# 1、docker tag命令给镜像打标签:docker tag imageName:version: IP:Port/tagedImageName:tagedVersion
docker tag nginx:latest 192.168.1.180:5000/mynginx:1.0
# 2、将镜像推送至仓库:docker push IP:Port/tagedImageName:tagedVersion
docker push 192.168.1.180:5000/mynginx:1.0
# 3、验证私有仓库是否已经存在该镜像:http://IP:port/v2/_catalog
http://192.168.1.180:5000/v2/_catalog
# 4、从私有仓库拉取镜像:docker pull IP:Port/tagedImageName:tagedVersion
vim /etc/docker/daemon.json

# 添加insecure-registries
{
"registry-mirrors": ["https://xigtegnc.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.1.180:5000","http://47.104.139.172:5000"]
}
vi /usr/lib/systemd/system/docker.service
# 找到ExecStart位置,在后面加上  --insecure-registry IP:Port
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.180:5000
# 重启服务
systemctl daemon-reload     
systemctl restart docker

到此Docker环境,Docker私有镜像环境,以及向私有镜像推镜像,从私有镜像拉镜像内容已完成,下一步是k8s环境部署。

二、K8S环境部署

  1. 添加阿里云YUM软件源,加快下载速度。
# 添加阿里云YUM软件源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
  1. 安装kubeadm、kubectl和kubelet
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
systemctl enable kubelet
  1. 集群初始化,在master执行
kubeadm init \
  --apiserver-advertise-address=192.168.1.180 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.18.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16
  1. 使用kubectl工具,在master执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 查看集群所有nodes
kubectl get nodes
  1. 向k8s集群中添加节点
    在节点上执行以下命令,需复制上面master节点操作生成的真实命令。
kubeadm join 192.168.1.11:6443 --token esce21.q6hetwm8si29qxwn \
    --discovery-token-ca-cert-hash sha256:00603a05805807501d7181c3d60b478788408cfe6cedefedb1f97569708be9c5
  1. 部署CNI网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 查看是否部署成功
kubectl get pods -n kube-system
  1. 安装NFS
# 在选定的NFS服务器上执行
yum install nfs-utils -y
# 设置共享目录
/usr/project/data/nfs
# 将共享目录以读写权限暴露给需要使用该NFS的主机
vim /etc/exports
# 加入以下内容
/usr/project/data/nfs 192.168.1.0/24(rw,no_root_squash,no_all_squash,sync)
# 启动NFS服务
systemctl restart nfs
  1. 测试k8s集群
    在k8s集群中创建一个nginx的pod进行校验
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
# 可通过 http: //NodeIP:Port形式访问

三、Docker基本命令

四、K8S基本命令


总结

文章对K8s环境的搭建进行了描述,给出Docker、Docker仓库、k8s环境的搭建步骤,并给出常见报错和解决办法。

举报

相关推荐

0 条评论