初学k8s,看到网上的教程非常杂乱,并且环境什么的都没说清楚,对于初学者很不友好,导致安装的过程总是出错,并且不能安装到符合自己要求的版本或者相应的环境,所以此文对环境做了详细的说明,前前后后安装了两三天几十遍,把所有的问题都解决了,本人亲测安装成功

环境配置:ubuntu20.04+docker,k8s版本v1.23.8,由于资源有限,只用了一台云服务器2核2g

使用kubeadm引导集群的方式安装k8s,root下进行

!!!血泪教训,首先必须保证服务器/虚拟机的配置够,最低配置:2核2g

查看可用RAM

free -m

必须要保证total>1700才可以!!!

基础环境配置

1.设置主机名字,具有明显的标识性

hostnamectl set-hostname xxxx

2.禁用SELinux

sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

3.关闭swap分区

swapoff -a  #临时关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab    #永久关闭

sed -ri 's/#(.*swap.*)/\1/' /etc/fstab #开启swap分区

4.把IPv6的流量桥接到IPv4网卡上,通信更方便,统计更准确

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

5.应用配置

sysctl --system

安装Kubernetes组件

1.Kubernetes 添加 apt 存储库

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
sudo apt-add-repository "deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main"

2.安装kubelet,kubectl,kubeadm

apt update
apt install -y kubelet=1.23.8-00 kubeadm=1.23.8-00 kubectl=1.23.8-00
apt-mark hold kubelet kubeadm kubectl

这里指定了版本是为了将其版本保持一致,以便于后面安装dashboard,由于是用docker安装k8s,而在k8sv1.24之后的版本不再支持docker,所以安装v1.23.8,如果想安装最新版本或者指定版本,把后面的版本号去掉或者修改即可

最后一行命令是为了防止其自动更新导致版本不匹配

#解除锁定

apt-mark unhold package_name

 3.设置kubelet开机自启

systemctl enable --now kubelet

4.master域名映射

echo "x  cluster-endpoint" >> /etc/hosts # 把x替换成你的服务器/虚拟机的内网ip

5.kubeadm init初始化

kubeadm init \
--apiserver-advertise-address=xxxx \  # 把xxxx替换为你的服务器/虚拟机的内网ip
--control-plane-endpoint=cluster-endpoint \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.8 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16

--apiserver-advertise-address=xxxx \  # master节点的IP
--control-plane-endpoint=cluster-endpoint \  #填写域名映射的域名,跟上面的域名保持一致
--image-repository registry.aliyuncs.com/google_containers\   #设置镜像仓库为国内的阿里云镜像仓库
--kubernetes-version v1.23.8 \            #设置k8s的版本
--service-cidr=10.96.0.0/16 \               #设置node节点的网络,暂时这样设置
--pod-network-cidr=10.244.0.0/16       #设置node节点的网络,暂时这样设置

 如果初始化过程报错,详见另一篇博客k8s安装报错error execution phase wait-control-plane: couldn‘t initialize a Kubernetes cluster-CSDN博客

 初始化成功之后的页面:

 令牌是节点加入的指令,24h有效,可以用以下指令生成

kubeadm token create --print-join-command

 6.根据提示继续

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

7.安装网络组件

curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O

接着将calico.yaml中的3888和3889行修改为如图所示的样子,因为前面node节点的ip配置是这样的

应用yaml文件

kubectl apply -f calico.yaml

 8.查看master节点状态

kubectl get nodes

网络配置完成过一会即可看到Ready状态

至此,k8s集群搭建完毕,如有多个node节点可以使用令牌加入master节点中

dashboard的搭建教程见k8s部署dashboard-CSDN博客

后续k8s搭建微服务的教程将在之后给出 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐