首页 > 其他分享 >基于 Alpine 使用 kubeadm 搭建 k8s

基于 Alpine 使用 kubeadm 搭建 k8s

时间:2024-01-23 13:11:08浏览次数:33  
标签:etc -- containerd apk add flannel kubeadm k8s Alpine

基于 Alpine 使用 kubeadm 搭建 k8s

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

将官方文档整理为脚本

整理脚本时,有部分调整

#!/bin/sh

set -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_forward

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
#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 /
EOF

chmod +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
    

标签:etc,--,containerd,apk,add,flannel,kubeadm,k8s,Alpine
From: https://www.cnblogs.com/chongxs/p/17982229/ji-yu-alpine-shi-yong-kubeadm-da-jian-k8s-ze7nf

相关文章

  • 二进制部署企业级K8S 1.28.3集群实战
    目录前置知识:部署Kubernetes集群的方式一.K8S二进制部署准备环境1.集群角色划分2.所有节点安装常用的软件包3.k8s-master01节点免密钥登录集群并同步数据4.所有节点Linux基础环境优化5.所有节点升级Linux内核并更新系统6.所有节点安装ipvsadm以实现kube-proxy的负载均衡7.修改en......
  • 从0到1打造k8s威胁检测可信纵深体系
    本ppt首发于成都网络安全大会ccs--云安全与通信论坛......
  • 使用 velero 备份 K8S
    背景近来可能公司会迁移服务器,先对velero工具做一个初步的认识环境K8S版本:v1.24.1velero版本:v1.11.1minio版本:2023.12.14,部署在K8S集群外(192.168.1.226服务器上)官方备份工作流程图更多详细信息,可参考:https://velero.io/docs/v1.11/how-velero-works/前期工......
  • k8s_client-go 构建客户端的几种方式
    kubernetesclient-go构建客户端的几种方式packagecallk8simport( "context" "log" metav1"k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" "k8s.io/client-go/t......
  • 如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 3
    在本教程的前两部分,我们分别了解和学习了Prometheus和Grafana的基本概念和使用的前提条件,以及使用Helm在Kubernetes上安装Prometheus。 在今天的教程中,我们将为你介绍以下内容: 安装Grafana;集成Prometheus和Grafana,Grafana将使用Prometheus作为数据源;使用......
  • day38 K8S管理平台-Lens - K8S管理平台-Kuboard (11.1-11.2)
    11.1、K8S管理平台-Lens(两节)Lens简介lens是一款开源的KubenretesIDE,也可以作为桌面客户端,官方网站https://k8slens.dev,具有以下特性:完全开源,GitHub地址https://github.com/lensapp/lens实时展示集群状态内置Prometheus监控多集群,多个namespace管理原生K......
  • k8s之基于metallb实现LoadBalancer型Service
    一、实验说明1、实验目的基于metallb实现kubernetes的LoadBalancer型Service。2、环境说明VMwareWorkstation安装三台虚拟机,安装K8S集群,网络模式NAT模式。master11.0.1.131node0111.0.1.132node0211.0.1.133oot@master:/home/user#kubectlgetnodesNAMESTATU......
  • alpine linux
    AlpineLinux简介Alpine直译为高山,国内一般叫高山Linux。它以小,简单,安全而著称,所以作为基础镜像是非常好的一个选择,可谓是麻雀虽小但五脏俱全,简直不要太方便,镜像非常小巧,不到6M的大小,所以特别适合容器打包。仓库地址:https://hub.docker.com/_/alpineAlpine官方网站:https://ww......
  • k8s之configmap应用
    一、创建configmap1、基于命令创建configmaproot@k8s-master01:~#kubectlcreateconfigmapdemoapp-cfg--from-literal=listen.port=8080--from-literal=listen.address='127.0.0.1'configmap/demoapp-cfgcreatedroot@k8s-master01:~#kubectlgetcmNAME......
  • k8s之构建Mysql和Wordpress集群
    一、实验目的基于Kubernetes集群实现多负载的WordPress应用。将WordPress数据存储在后端Mysql,Mysql实现主从复制读写分离功能。1、准备Kubernetes集群环境root@k8s-master01:~#kubectlgetnodesNAMESTATUSROLESAGEVERSIONk8s-master01Re......