原文链接
一、软硬件环境
| 角色 | 主机名 | IP地址 | 备注 |
|---|---|---|---|
| master | k8s-master | 192.168.1.81 | |
| node | k8s-node1 | 192.168.1.82 | |
| node | k8s-node2 | 192.168.1.83 | |
| gitlab | k8s-gitlab | 192.168.1.84 | |
| jenkins+docker | k8s-jenkins | 192.168.1.85 | |
| harbor | k8s-harbor | 192.168.1.86 | |
| rancher | k8s-rancher | 192.168.1.87 |
二、环境准备
在所有节点操作
2.1 关闭NetworkManager
NetworkManager会和network启动是发生冲突,导致network启动失败,不能远程访问虚拟机;
systemctl stop NetworkManager #临时关闭 systemctl disable NetworkManager #永久关闭网络管理命令 systemctl start network.service #开启网络服务
2.2 设置静态ip
2.2.1查看网络配置
ifconfig #查看网络配置 或 ip addr show
2.2.2 修改网络配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
1)选择动态分配或者静态分配
BOOTPROTO=static #dhcp:自动分配ip ,static:静态ip
2)开启自动打开网卡
ONBOOT=yes #开启启动必须是yes
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static #dhcp:自动分配ip ,static:静态ip 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=ens33 UUID=9c922cc8-b3ed-419a-88bd-6fd756e04880 DEVICE=ens33 ONBOOT=yes #开启启动必须是yes IPADDR=192.168.1.81 #静态ip NETMASK=255.255.255.0 # GATEWAY=192.168.1.1 #网关 DNS1=8.8.8.8 #DNS DNS2=4.4.4.4
2.2.3重启服务
systemctl restart network
2.2.4查看网络状态
systemctl status network.service
2.3 修改主机名
hostnamectl set-hostname k8s-master #k8s-master 为主机名称
2.4 所有机器关闭防火墙
systemctl stop firewalld #关闭 systemctl disable firewalld #开机不自启 systemctl status firewalld #查看状态
2.5 所有机器关闭selinux
swapoff -a # 临时关闭 sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭 swapon -s #查看swapon分区
2.6 所有机器关闭swap
swapoff -a # 临时关闭 sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭 swapon -s #查看swapon分区
2.7 所有节点安装docker
yum install wget.x86_64 -y rm -rf /etc/yum.repos.d/* wget -O /etc/yum.repos.d/centos7.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install docker-ce-26.1.4 -y systemctl start docker systemctl enable docker docker version
配置docker加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://2tefyfv7.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
三、部署k8s集群
3.1 添加主机名与ip的对应关系(k8s-master、k8s-node1、k8s-node2)
cat >> /etc/hosts << EOF 192.168.1.81 k8s-master 192.168.1.82 k8s-node1 192.168.1.83 k8s-node2 EOF
source /etc/profile
3.2 将桥接的ipv4流量传递到iptables的链(k8s-master、k8s-node1、k8s-node2)
cat >> /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF
3.3 安装kubeadm、kubelet、kubectl(k8s-master、k8s-node1、k8s-node2)
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF yum install kubelet-1.22.2 kubeadm-1.22.2 kubectl-1.22.2 -y systemctl enable kubelet && systemctl start kubelet kubectl version
3.4 修改docker的配置(k8s-master、k8s-node1、k8s-node2)
#镜像加速 registry-mirrors
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://2tefyfv7.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker.service
systemctl restart kubelet.service
systemctl status kubelet.service
这里从节点的kubelet.service状态报code=exited, status=1/FAILURE是正常的 集群没有初始化导致的
3.5 部署master节点(主节点k8s-master)
3.5.1 集群初始化
kubeadm init \ --apiserver-advertise-address=192.168.163.151 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.22.2 \ --control-plane-endpoint k8s-master \ --service-cidr=172.16.0.0/16 \ --pod-network-cidr=10.244.0.0/16
这段命令是用于将一个工作节点(worker node)加入到已存在的 Kubernetes 集群中的过程。 kubeadm init 是用来初始化 Kubernetes 集群的命令。下面是一些常用的参数及其说明: --apiserver-advertise-address: 指定用于通告的 API 服务器的 IP 地址。 --apiserver-bind-port: 指定 API 服务器绑定的端口。 --control-plane-endpoint: 指定控制平面的端口。 --image-repository: 设置 Kubernetes 镜像仓库的地址。 --kubernetes-version: 设置 Kubernetes 版本。 --pod-network-cidr: 设置 Pod 网络的 CIDR 范围。 --service-cidr: 设置服务的 CIDR 范围。
1).遇到报错:
Here is one example how you may list all Kubernetes containers running in docker: - 'docker ps -a | grep kube | grep -v pause' Once you have found the failing container, you can inspect its logs with: - 'docker logs CONTAINERID' error execution phase wait-control-plane: couldn't initialize a Kubernetes cluster To see the stack trace of this error execute with --v=5 or higher
2).解决办法:
rm -rf /etc/containerd/config.toml systemctl restart containerd
如果初始化失败,可以重新初始化
kubeadm reset
此命令将删除当前集群的状态信息,并使其回到初始状态
初始化成功记下提示以及最后的信息,添加节点时需要

3.5.2 按照提示执行
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
3.5.3 查看kubelet.service状态
systemctl status kubelet.service
3.5.4 查看节点状态
kubectl get nodes
3.5.5 安装网络插件
# 最好手动提前拉取所需镜像 docker pull quay.io/coreos/flannel:v0.14.0 wget https://raw.githubusercontent.com/core


7758

被折叠的 条评论
为什么被折叠?



