• 工作小记系列3-Minikube搭建笔记


    对于Kubernetes的初学者来说, Minikube是一个非常有用的工具,它可以快速帮助你在你的笔记本,台式机甚至嵌入式板卡上(例如树莓派)搭建一个Kubernetes集群,支持多种操作系统(MacOS/Linux/Windows)。本篇笔记是我在树莓派4B上使用Minikube工具搭建K8S集群的过程记录,希望对同样想要使用这个工具的同学有帮助。

    Step1: 配置国内源

    • CentOS:
    1. cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    2. [kubernetes]
    3. name=Kubernetes
    4. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    5. enabled=1
    6. gpgcheck=1
    7. repo_gpgcheck=1
    8. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    9. EOF
    • Ubuntu:
    1. apt-get update && apt-get install -y apt-transport-https
    2. curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
    3. cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
    4. deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
    5. EOF 
    6. apt-get update
    7. setenforce 0
    Linux源配置好后,就可以正式开始安装,以下以CentOS操作系统过程为例:
    Step2: Install and Set up kubectl
    1. yum install -y kubectl
    2. yum install kubernetes-cni -y
    Step3: Install docker 和 GO
    yum install docker
    Step4: 下载go对应版本和架构的源码包
    1. rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.3.linux-arm64.tar.gz
    2. export PATH=$PATH:/usr/local/go/bin

    Step5: K8S 1.24版本后不支持docker,需要继续使用docker的话,要安装cri-dockerd

    1. git clone https://github.com/Mirantis/cri-dockerd.git
    2. # Run these commands as root
    3. ###Install GO###
    4. wget https://storage.googleapis.com/golang/getgo/installer_linux
    5. chmod +x ./installer_linux
    6. ./installer_linux
    7. source ~/.bash_profile
    8. cd cri-dockerd
    9. mkdir bin
    10. export GO111MODULE=on
    11. export GOPROXY=https://goproxy.cn
    12. go get && go build -o bin/cri-dockerd
    13. mkdir -p /usr/local/bin
    14. install -o root -g root -m 0755 bin/cri-dockerd /usr/local/bin/cri-dockerd
    15. cp -a packaging/systemd/* /etc/systemd/system
    16. sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service
    17. systemctl daemon-reload
    18. systemctl enable cri-docker.service
    19. systemctl enable --now cri-docker.socket
    20. wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.20.0/crictl-v1.20.0-linux-amd64.tar.gz
    21. wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.24.2/crictl-v1.24.2-linux-arm.tar.gz
    22. sudo tar zxvf crictl-v1.20.0-linux-amd64.tar.gz -C /usr/bin
    Step6: Download minikube
    • X86:
    curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube
    • ARM:
    curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64 && chmod +x minikube

    Step7: Docker镜像加速

    创建 /etc/docker/daemon.json 文件,并添加如下内容
    1. {
    2.   "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
    3. }
    重启docker服务
    service docker restart
    关闭系统防火墙
    systemctl stop firewalld.service
    Step8: Install minikube
    1. sudo mkdir -p /usr/local/bin/
    2. sudo install minikube /usr/local/bin/
    3. minikube start --vm-driver=none --registry-mirror=https://registry.docker-cn.com --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' --apiserver-ips='' --extra-config=kubelet.cgroup-driver=systemd --extra-config=kubelet.runtime-cgroups=/systemd/system.slice --extra-config=kubelet.kubelet-cgroups=/systemd/system.slice --enable-default-cni --network-plugin=cni
    使用cri-dockerd后不需要再指定group-driver=systemd,因此上述minikube start命令可替换为
    minikube start --vm-driver=none --registry-mirror=https://registry.docker-cn.com --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' --enable-default-cni
    这里有可能因为国内镜像拉取的问题失败,因为minikube默认拉取k8s.gcr.io/pause:3.6镜像,可以通过如下方式修改:
    1. crictl pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6
    2. docker image tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6 k8s.gcr.io/pause:3.6
    Step9: 启动Dashboard
    1. kubectl get pods --namespace=kubernetes-dashboard
    2. kubectl logs kubernetes-dashboard-79d9cd965-q2kh7 --namespace=kubernetes-dashboard
    3. kubectl expose pods kubernetes-dashboard-79d9cd965-q2kh7 --type=NodePort --port=9090 --namespace=kubernetes-dashboard
    4. minikube service kubernetes-dashboard-79d9cd965-bnfz4 --url -n kubernetes-dashboard
    Q&A: 搭建过程中的一些问题和解决办法记录
    1. Docker driver为systemd和kubelet配置的cgroupfs不一致

    修改kubelet的Cgroup Driver

    修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf文件,在KUBELET_KUBECONFIG_ARGS这行行尾增加如下配置:

    --cgroup-driver=systemd --runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice
    保存退出后重启kubelet
    1. systemctl daemon-reload
    2. systemctl restart kubelet
    3. journalctl -xeu kubelet
    到此,恭喜你已经通过minikube完成了ALL-IN-ONE的Kubernetes集群搭建,享受你的Kubernetes之旅吧~
  • 相关阅读:
    【P60】JMeter Jtl 文件的 html 格式输出
    快读《ASP.NET Core技术内幕与项目实战》WebApi3.1:WebApi最佳实践
    华为配置基于VLAN限速示例
    福建江夏学院蔡慧梅主任一行莅临拓世科技集团,共探AI+时代教育新未来
    关于webpack面试题
    我的世界1.20规则大全,/gamerule最新全部规则解释
    matlab使用NCL提供的colormap
    vue3中使用setup语法糖使用
    面试官不按套路出牌,上来就让聊一聊Java中的迭代器(Iterator ),夺命连环问,怎么办?
    Spring框架(六):SpringTransaction事务的底层原理、xml配置和注解配置
  • 原文地址:https://blog.csdn.net/sxmatch/article/details/126546167