ubuntu单服务器部署k8s
初学k8s,看到网上的教程非常杂乱,并且环境什么的都没说清楚,对于初学者很不友好,导致安装的过程总是出错,并且不能安装到符合自己要求的版本或者相应的环境,所以此文对环境做了详细的说明,前前后后安装了两三天几十遍,把所有的问题都解决了,本人亲测安装成功环境配置:ubuntu20.04+docker,k8s版本v1.23.8,由于资源有限,只用了一台云服务器2核2g使用kubeadm引导集群的方式安装
初学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搭建微服务的教程将在之后给出
更多推荐
所有评论(0)