一 、前期准备

操作系统:

alpine3.19

Kubernetes : v1.29.2

docker:25.0.3

containerd:1.7.13

准备工作

1、Master主机:2核以上CPU、4G以上内存、20G硬盘 2、Node主机:2核以上CPU

3、节点之中不可以有重复的主机名、MAC 地址或 product_uuid

4、为了保证 kubelet 正常工作,必须禁用交换分区

注意:k8s官网说明是基于( Debian、Ubuntu、Fedora、CentOS 等)上是合理的, 但对于不包含默认 glibc 的自定义和轻量级发行版(如 Alpine Linux)

二、前期安装配置

更换镜像源

cat >> /etc/apk/repositories <<"EOF"
http://mirrors.aliyun.com/alpine/v3.19/main
http://mirrors.aliyun.com/alpine/v3.19/community
http://mirrors.aliyun.com/alpine/edge/main
http://mirrors.aliyun.com/alpine/edge/community
http://mirrors.aliyun.com/alpine/edge/testing
EOF

配置主机名

apk update
apk add alpine-conf #系统配置工具包
nano /etc/hostname

#更改后 重启
reboot

加载配置

echo "br_netfilter" > /etc/modules-load.d/k8s.conf
modprobe br_netfilter

临时加载,改为写入文件,防止重启失效

echo 1 > /proc/sys/net/ipv4/ip_forward

三、安装软件

k8s官网安装地址

apk add cni-plugin-flannel&&
apk add flannel&&
apk add flannel-contrib-cni&&
apk add cni-plugins&&
apk add kubelet&&
apk add kubeadm&&
apk add kubectl&&
apk add uuidgen&&
apk add nfs-utils&&
apk add containerd&&
# 把管理工具 ctr 安装上
apk add containerd-ctr

关闭swap

swapoff -a
sed -i "s|.*swap.*|#&|" /etc/fstab

修改文件

mount --make-rshared /
cat > /etc/local.d/sharemetrics.start <<"EOF"
#!/bin/sh
mount --make-rshared /
EOF
#加权限
chmod +x /etc/local.d/sharemetrics.start
rc-update add local
#修复 id 错误消息
uuidgen > /etc/machine-id

#启动服务
rc-update add containerd
rc-update add kubelet
rc-service containerd start
#配置kernel
cat >> /etc/sysctl.conf <<"EOF"
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward= 1
EOF
#设置网络工作
sysctl -p

修改 containerd 配置

查看当前初始化使用的镜像信息

kubeadm config images list
--
registry.k8s.io/kube-apiserver:v1.29.2
registry.k8s.io/kube-controller-manager:v1.29.2
registry.k8s.io/kube-scheduler:v1.29.2
registry.k8s.io/kube-proxy:v1.29.2
registry.k8s.io/coredns/coredns:v1.11.1
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.10-0

修改sandbox /etc/containerd/config.toml

nano /etc/containerd/config.toml
#搜索sandbox_image 更改为:
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
#改完保存退出 重启containerd
rc-service containerd restart

修改本地hosts文件

nano /etc/hosts
--
ip k8smarster

四、拉取镜像

kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers 

初始化节点

kubeadm init \
--node-name=$(hostname) \ #节点名
--apiserver-advertise-address=172.16.124.181 \#IP
--image-repository registry.aliyuncs.com/google_containers \#加速源
--pod-network-cidr=10.244.0.0/16 

配置环境变量

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

export KUBECONFIG=/etc/kubernetes/admin.conf

#查看Token
kubeadm token list

同步时间(可选)

apk add chrony
chronyd

ntpd -d -q -n -p ntp3.aliyun.com 

五、部署网络插件

部署flannel网络

#拉取配置文件
wget -c  https://mirror.ghproxy.com/https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

#执行配置文件
kubectl apply -f kube-flannel.yml

查看pod配置文件的状态

kubectl get pods -A 

查看节点

kubectl get nodes

pod可能存在污点,查看节点是否有污点

kubectl describe nodes 节点名 |grep Taints
#删除污点
kubectl taint node 节点名 污点名-

等都运行完成 测试外部网络能否请求

kubectl create deployment nginx --image=nginx
 
 kubectl expose deployment nginx --port=80 --type=NodePort
 #查看端口
 kubectl get pod,svc -A

外部请求 http://ip:端口

表示网络插件部署完成

六、配置node节点

编辑 /etc/sysctl.conf 文件

#在文件末尾添加或修改以下行
net.ipv4.ip_forward = 1
#应用新的内核参数配置
sysctl -p /etc/sysctl.conf

Node节点执行(根据初始化返回的token执行)

#根据自己主节点初始化返回的信息再给从节点执行
kubeadm join 172.16.124.181:6443 --token iccha2.zkkh61v9qpbhyh3y 
--discovery-token-ca-cert-hash sha256:bfb1ba73a182d289b12e81bbc1dd315f34f0b1f599c5e242872bffce4566d5b6

主节点查看 node

至此配置完成!

Logo

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

更多推荐