操作系统
显示主机名
下载国内 repo 镜像源
清理yum缓存,并生成新的缓存。
# yum clean all
# yum makecache
更新yum源检查是否生效
# yum update
执行了 update 之后,可以看到内核版本已升级到新版本了,说明 yum 源生效。
显示本机网关
安装相关依赖工具包,为后续搭建集群环境准备。
# yum install -y lrzsz device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip ntp libaio-devel vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack telnet nc
同步时间
集群平台规划
三台虚拟机,硬件规划配置大致如下:
角色 |
OS |
CPU |
Memory |
Disk |
IP |
Master |
CentOS Linux 7 |
4 cores |
4G |
100G |
192.168.59.138 |
Node1 |
CentOS Linux 7 |
4 cores |
5G |
100G |
192.168.59.139 |
Node2 |
CentOS Linux 7 |
4 cores |
5G |
100G |
192.168.59.140 |
上面三台虚拟机配置,可搭建一套单 master 的 kubernetes 集群环境。
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改三台虚拟机静态 IP
静态 IP 修改好,需要重新启动网卡设备。
查看防火墙状态
停止防火墙,设置关闭状态。
配置修改完成,查看一下状态。
关闭 swap 分区
# swapoff -a #临时
设置主机名
在 master 主机添加 hosts,节点机上无需执行。
# cat >> /etc/hosts << EOF
192.168.59.138 k8smaster
192.168.59.139 k8snode1
192.168.59.140 k8snode2
EOF
三台机器之间配置互信免密登录
添加DNS解析
# cat >> /etc/resolv.conf << EOF
nameserver 223.5.5.5
nameserver 119.29.29.29
nameserver 114.114.114.114
EOF
添加 Docker CE 的软件源
安装 Docker CE 版
# yum makecache fast
# yum install -y docker-ce docker-ce-cli containerd.io
# systemctl start docker
# systemctl daemon-reload && systemctl enable docker && systemctl restart docker
配置Docker 加速器
# cat > /etc/docker/daemon.json << EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com","https://rrnv06ig.mirror.aliyuncs.com","https://reg-mirror.qiniu.com","https://docker.mirrors.ustc.edu.cn"]
}
EOF
安装 containerd,配置 crictl
执行安装
# yum install -y containerd.io
生成配置文件
# containerd config default > /etc/containerd/config.toml
修改 cgroups 为 systemd
# sed -i 's#SystemdCgroup = false#SystemdCgroup = true#' /etc/containerd/config.toml
修改 pause 镜像地址: sandbox_image=
# sed -i 's#registry.k8s.io#registry.aliyuncs.com/google_containers#' /etc/containerd/config.toml
修改版本号,可以先确定 pasuse 的版本号,containerd 默认是 3.6;kubeadm 需要 3.9;
# sed -i 's#pause:3.6#pause:3.9#' /etc/containerd/config.toml
# journalctl -u containerd.service -f
# crictl ps -a
接着继续往下安装,添加阿里云 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=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
安装 kubeadm、kubelet 和 kubectl
# systemctl status kubelet
# systemctl daemon-reload && systemctl enable kubelet && systemctl restart kubelet
# journalctl -u kubelet --no-pager #查看启动报错日志,--no-pager 参数可以一次性输出日志。
# journalctl -xefu kubelet / journalctl -u kubelet -f / journalctl -xe -u kubelet
学会用指令查看报错问题,分析具体是什么问题导致的服务无法正常启动。
上面要是一条指令一起全部进行安装,有写时候服务无法正常启动,排错问题也无从下手,建议完全卸载后,重新一个一个服务进行安装,等一个服务能正常启动了,在进行下一个服务安装,这比较放心。
先安装 kubelet 服务,在安装 kubectl 服务,最后安装 kubeadm.
# yum install -y kubelet-1.26.2
启动服务,查看服务状态,如果报错,修改下面的配置。
# vim /usr/lib/systemd/system/kubelet.service
# systemctl daemon-reload
# systemctl start kubelet
服务都能正常启动了,在进行 init 操作。
# kubeadm init --kubernetes-version v1.26.2 --apiserver-advertise-address="192.168.59.138" --ser vice-cidr="10.96.0.0/12" --pod-network-cidr="10.244.0.0/16" --control-plane-endpoint="192.168.59.138:6443" --image-reposito ry registry.cn-hangzhou.aliyuncs.com/google_containers --cri-socket unix:///run/containerd/containerd.sock
看到 Your Kubernetes control-plane has initialized successfully! 说明安装正确。
# kubeadm config print init-defaults > kubeadm.yml
# kubeadm config images list --config ./kubeadm.yml
安装网络插件,下载 flannel 安装配置。
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# kubectl get configmap kubeadm-config -n kube-system -o yaml |grep podSubnet
# kubectl apply -f kube-flannel.yml