当前位置: 首页 > news >正文

K8S系列文章之 [基于 Alpine 使用 kubeadm 搭建 k8s]

先部署基础环境,然后根据官方文档 K8s - Alpine Linux,进行操作。

将官方文档整理为脚本

整理脚本时,有部分调整

#!/bin/shset -x
# 添加源,安装时已经配置
#cat >> /etc/apk/repositories <<"EOF"
#http://mirrors.aliyun.com/alpine/edge/community
#http://mirrors.aliyun.com/alpine/edge/testing
#EOF# 加载模块
echo "br_netfilter" > /etc/modules-load.d/k8s.conf
modprobe br_netfilter
# 临时加载,改为写入文件,防止重启失效
#echo 1 > /proc/sys/net/ipv4/ip_forwardapk 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
#apk add bash
#apk add vim# 关闭 swap
swapoff -a
sed -i "s|.*swap.*|#&|" /etc/fstab#Fix prometheus errors
mount --make-rshared /
cat > /etc/local.d/sharemetrics.start <<"EOF"
#!/bin/sh
mount --make-rshared /
EOFchmod +x /etc/local.d/sharemetrics.start
rc-update add local#Fix id error messages
uuidgen > /etc/machine-id#Add services
#rc-update add docker
rc-update add containerd
rc-update add kubelet
rc-service containerd start#kernel stuff
cat >> /etc/sysctl.conf <<"EOF"
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward= 1
EOF
# set net work
sysctl -p
修改 containerd 配置
  • 查看当前初始化使用的镜像信息

    kubeadm config images list
    
  • 修改镜像加速 /etc/containerd/config.toml

    [plugins."io.containerd.grpc.v1.cri".registry.mirrors][plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]endpoint = ["https://kuamavit.mirror.aliyuncs.com", "https://registry-1.docker.io"]
    
  • 修改sandbox /etc/containerd/config.toml

    sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
    
  • 改为配置,重启服务 rc-service containerd restart


  • 可基于以上基础环境克隆设备
  • 设备需要修改静态IP,修改 hostname,修改 hosts 文件

初始化【此前操作,所有节点均需要】
  • 尝试初始化,拉取镜像超级慢,建议先拉取镜像

    kubeadm init --pod-network-cidr=10.244.0.0/16 --node-name=$(hostname) --image-repository registry.aliyuncs.com/google_containers
    
  • 先拉取镜像

    kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
    
    kubeadm init \
    --node-name=$(hostname) \
    --apiserver-advertise-address=172.16.14.201 \
    --image-repository registry.aliyuncs.com/google_containers \
    --service-cidr=10.96.0.0/12 \
    --pod-network-cidr=10.244.0.0/16 --v=5
    
  • 根据提示,配置环境变量

    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
    
  • 查看状态,因为没安装网络插件,所以是没启动成功

    # 查看状态,NotReady
    kubectl get nodes
    # 查看pod,coredns 在 pending 状态
    kubectl get pod -A
    
安装网络组件
待处理方案,coredns 加载不上【calico、cilium均有相似问题,待处理】
  • 利用 helm 安装,添加仓库

    # helm repo add projectcalico https://docs.tigera.io/calico/charts
    helm repo add cilium https://helm.cilium.io/
    
  • 安装组件,calico 不好拉,cilium 要更容易拉取

    helm install cilium cilium/cilium --version 1.11.20  --namespace kube-system
    
  • 观察一手

    watch kubectl get pods -A -o wide
    
【可用方案】使用 flannel
  • 拉取 flannel yaml 文件

    wget -c  https://mirror.ghproxy.com/https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    
  • 拉一把试试

    kubectl apply -f kube-flannel.yml
    # 镜像有点难拉,单独拉
    ctr -n k8s.io i pull docker.io/flannel/flannel:v0.24.2
    # docker.io/flannel/flannel-cni-plugin:v1.4.0-flannel1 这个镜像好像比较好拉
    
节点加入
  • 打印加入 token

    kubeadm token create --print-join-command
    

http://www.lryc.cn/news/297172.html

相关文章:

  • JVM相关-JVM模型、垃圾回收、JVM调优
  • 提升图像分割精度:学习UNet++算法
  • 排序算法---冒泡排序
  • 基于数据挖掘的微博事件分析与可视化大屏分析系统
  • 数学建模-灰色预测最强讲义 GM(1,1)原理及Python实现
  • 智慧自助餐饮系统(SpringBoot+MP+Vue+微信小程序+JNI+ncnn+YOLOX-Nano)
  • 零基础学编程从入门到精通,系统化的编程视频教程上线,中文编程开发语言工具构件之缩放控制面板构件用法
  • 【MySQL进阶之路】MySQL 中表空间和数据区的概念以及预读机制
  • JVM 性能调优 - 常用的垃圾回收器(6)
  • 【java】Hibernate访问数据库
  • 从零开始手写mmo游戏从框架到爆炸(八)— byte数组传输
  • Elasticsearch:BM25 及 使用 Elasticsearch 和 LangChain 的自查询检索器
  • uniapp的api用法大全
  • 笔记——asp.net core 中的 REST
  • 排序算法---堆排序
  • Java字符串(包含字母和数字)通用排序
  • 【Spring】springmvc如何处理接受http请求
  • 2024年安全员-B证证模拟考试题库及安全员-B证理论考试试题
  • redis过期淘汰策略、数据过期策略与持久化方式
  • Oracle Vagrant Box 扩展根文件系统
  • TDengine用户权限管理
  • 推荐一款开源的跨平台划词翻译和OCR翻译软件:Pot
  • spring boot学习第十一篇:发邮件
  • Linux中ps/kill/execl的使用
  • 【web前端开发】HTML及CSS简单页面布局练习
  • 2.7日学习打卡----初学RabbitMQ(二)
  • 【工作学习 day04】 9. uniapp 页面和组件的生命周期
  • Mysql-数据库优化-客户端连接参数
  • 【十二】【C++】vector用法的探究
  • Docker 基本介绍