很多人K8s都安装不了,经过几番尝试,我终于成功搭建了k8s。通过我以下步骤,绝对可以成功。特此记录笔记,为了避免其他人踩坑,适合所有k8s的学者。
需要centos 7 虚拟机一台;内存2G以上;磁盘20G以上;可参考上一篇《VMware安装centOs镜像》
目录
1.关闭swap
vi /etc/fstab
注释掉swap;

临时关闭:
swapoff -a;
2.关闭selinux
vi /etc/sysconfig/selinux
设置SELINUX=disabled,需要重启reboot。

3.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
4.启用网络配置
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
5.设置网桥参数
cat << EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
6.修改hosts文件
vi /etc/hosts
设置:192.168.140.132 k8s-single

7.修改hostname
hostnamectl set-hostname k8s-single
8.安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

9.docker配置systemd
创建 /etc/docker/daemon.json文件 ,内容为:
{
"registry-mirrors": ["https://t81qmnz6.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
10.重启docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
11.配置k8s下载资源配置文件
创建文件:/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
12.安装 kubelet kubeadm kubectl
yum install -y --nogpgcheck kubelet-1.23.5 kubeadm-1.23.5 kubectl-1.23.5

13.查看是否安装成功
kubelet --version
kubectl version
kubeadm version

14.启动kubelet
systemctl daemon-reload
systemctl start kubelet
systemctl enable kubelet
15.init-config配置
生成文件:
kubeadm config print init-defaults > init-config.yaml
配置IP地址:localAPIEndpoint.advertiseAddress: 192.168.140.132
配置node的名称:nodeRegistration.name:master
配置阿里云镜像地址:imageRepository:registry.aliyuncs.com/google_containers
配置完后,文件如下:

16.重启容器
执行以下命令:
mv /etc/containerd/config.toml /tmp/
systemctl restart containerd
17.拉取k8s相关镜像
kubeadm config images pull --config=init-config.yaml

如果不行,用docker去拉取镜像:
for i in `kubeadm config images list --config=init-config.yaml`; do
imageName=${i#registry.k8s.io/}
docker pull $imageName
done;
如果出现下图,则已经成功:

18.部署K8s
kubeadm init \
--apiserver-advertise-address=192.168.140.132 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.5 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
过程可能要稍等几分钟,出现kubeadm join .....的提示,就证明执行成功了。

19.环境变量设置
如果省略这个步骤,执行kubectl get nodes会出现以下异常:

配置环境变量:
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile;
source /etc/profile;
上面的方式,重启机器后会失效,持久的方式:
vi /etc/profile;
在后面新增一行:export KUBECONFIG=/etc/kubernetes/admin.conf
最后source /etc/profile;
如图,再次执行:kubectl get nodes,已经成功。

20.安装CNI插件
执行kubectl get nodes,可以看到status是notReady的状态,而正确的应该是ready状态才是。如图:

这是因为没有安装网络插件CNI
执行命令安装:
kubectl apply -f "https://docs.projectcalico.org/manifests/calico.yaml"

再次查看kubectl get nodes,可以看到状态还是notReady,这是因为默认master是不向自己注册node的,是不能创建pod的。
执行命令:
kubectl taint nodes --all node-role.kubernetes.io/master-
可见,状态已经为ready,至此,安装完成。

结束语
至此,本次单机模式的k8s已经搭建完成,已经做好部署应用的准备,下一篇将以一个小应用的例子,进行单机的部署。
这篇博客详细介绍了如何在CentOS 7上从头开始搭建Kubernetes(K8s)的单机环境,包括关闭swap、禁用selinux、防火墙配置、安装docker、配置k8s、启动kubelet、安装CNI插件等关键步骤,确保读者能成功部署K8s。





