基于M1芯片的Mac的k8s搭建

news2024/11/25 4:42:56

基础环境

centos8

macbook pro M1

vm

vm安装centos8参考:MacBook M1芯片 安装Centos8 教程(无界面安装)_m1安装centos 8.4_Mr_温少的博客-CSDN博客

步骤

参考:

MacOS M1芯片CentOS8部署搭建k8s集群_Liu_Shihao的博客-CSDN博客

所有机器前置配置

1.设置对应的hostname

# 设置hostname
hostnamectl set-hostname k8s-node2

# 配置对应的集群hosts
cat >> /etc/hosts << EOF
172.16.237.134 k8s-master
172.16.237.135 k8s-node1
172.16.237.136 k8s-node2
EOF

2.关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
firewall-cmd --state

3.关闭selinux

#将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

4.关闭swap

swapoff -a  # 临时关闭,主机重启后k8s无法自动重启,需要重新关闭swap
vim /etc/fstab  # 永久关闭

5.允许 iptables 检查桥接流量

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

sudo sysctl --system

6.更新yum源

# 进入 /etc/yum.repos.d/ 目录
cd /etc/yum.repos.d/

# 运行以下命令
sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo

7.处理冲突问题

yum erase podman buildah
# or
dnf remove podman buildah
dnf clean all && dnf check && dnf check-update


yum erase buildah
# or 
dnf remove buildah
dnf clean all && dnf check && dnf check-update


dnf remove -y containers-common-2:1-2.module_el8.5.0+890+6b136101
dnf clean all && dnf check && dnf check-update

7.部署docker环境

yum -y install docker-ce
systemctl enable docker && systemctl start docker

8.配置镜像源

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://iedolof4.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF


sudo systemctl daemon-reload

sudo systemctl restart docker

部署k8s集群

所有机器执行

9.配置k8s的yum源

#添加阿里的yum软件源,这里需要注意baseurl的地址是否是你虚拟机对应的版本
# 以下为mac m1 CentOS8 对应的地址
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-aarch64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

10.安装组件

#安装k8s(注意版本号,后面的版本需要对应)
yum install -y kubelet-1.21.0 kubeadm-1.21.0 kubectl-1.21.0
systemctl enable kubelet

主节点配置

11.初始化master

kubeadm init \
      --apiserver-advertise-address=172.16.237.134 \
      --image-repository registry.aliyuncs.com/google_containers \
      --kubernetes-version v1.21.0 \
      --service-cidr=10.96.0.0/12 \
      --pod-network-cidr=10.244.0.0/16 \
      --ignore-preflight-errors=all
      
#-–apiserver-advertise-address 集群通告地址(master内网) 注意修改为master节点的address
#–-image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
#–-kubernetes-version K8s版本,与上面安装的一致
#–-service-cidr 集群内部虚拟网络,Pod统一访问入口
#-–pod-network-cidr Pod网络,与下面部署的CNI网络组件yaml中保持一致

安装完后提示:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 172.16.237.134:6443 --token lndyz6.73fpex2iqyhmrnly \
        --discovery-token-ca-cert-hash sha256:07411b0de4320ce16918555f033cc42ce9aba398a6d1089ef4b442227e3b590b 

12.master上执行:

# 在主节点执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

#如果是root用户
export KUBECONFIG=/etc/kubernetes/admin.conf

如果token 24小时后过期需要重新生成:

kubeadm token create --print-join-command 

master安装网络组件

13.安装calico

curl https://docs.projectcalico.org/manifests/calico.yaml -O

kubectl apply -f calico.yaml

可能存在coredns镜像拉取不到的问题

参考: k8s的 coredns 的ImagePullBackOff 和ErrImagePull 问题解决_doker一直imagepullbackoff_之诚的博客-CSDN博客

docker pull coredns/coredns:1.8.0
docker tag [拉取的镜像id] registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0

node节点运行加入master

14.加入集群

kubeadm join 172.16.237.134:6443 --token lndyz6.73fpex2iqyhmrnly \
        --discovery-token-ca-cert-hash sha256:07411b0de4320ce16918555f033cc42ce9aba398a6d1089ef4b442227e3b590b 

在master查看node状态:

kubectl get nodes

Dashboard部署

15.master执行

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml

修改ClusterIP为NodePort

kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
#type: ClusterIP 改为 type: NodePort

查看端口:

kubectl get svc -A |grep kubernetes-dashboard

访问dashboard

https://172.16.237.134:31071/

键盘输入:thisisunsafe,页面即可显示登录页面:

创建对应的账号:

#创建访问账号,准备一个yaml文件; vi dashaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
kubectl apply -f dashaccount.yaml

生成token:

#获取访问令牌
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"

记录自己的token:

eyJhbGciOiJSUzI1NiIsImtpZCI6IkQ4M2tMTlBRYk9LM0QydEd1clF6cmF3elFPQlQ2Z25mVm92OWFCRTBtUzgifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWY0dGhrIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI4YmRkNGYxYy1lMGQ1LTQ2MmUtOWZlZS02NTZkNzU1MDU1ZWMiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.MuZFDFwQnjbk0wZLv-yeqxvoOZFqxNEdm1-fdZyVcDrCwIBkn0rJyH9DlYHLEj0K4oPJcTSC62TakmXdGDCSEyXYXZUu7v2UhjdVAybtryJ7PKVCt_13pE9eWwNhcx7Ngm3Mc1E-JhZgV2_MPSscQsuProX9MgdqriuTiovTEsX1Fu0p5hY7Kpk6jAMWaDLzmxRh_qjiQlbpKmyqudvJ8eSPnUlqD_0rj4rnbOIWYgil0vmC43etJVngdH9H2e_nAeK4nJC2iWph3diYKtW_5BtDsiPUmG7z8y0CP33ErI2kOlek_RZ_l7EffgDZd1IvXrSkN-m05bS2ZFyjdTus3w

输入token后登录:

k8s常用命令

# 查看所有节点		
kubectl get nodes 		

#查看集群服务器信息
kubectl get nodes -o wide	
	
# 查看kube-system命名空间下的pod
kubectl get pods -n kube-system

#部署资源
kubectl apply -f calico.yaml

#删除部署
kubectl delete -f calico.yaml

#强制删除pod 命名空间为kube-system pod为name为coredns-545d6fc579-s2j64 
kubectl delete pod coredns-545d6fc579-s2j64 -n kube-system --grace-period=0 --force  

#查看所有名称空间  namespace简称ns
kubectl get ns    	

#创建名称空间						  
kubectl create ns 名称空间	

#删除名称空间			
kubectl delete ns 名称空间		

#查看默认default名称空间下的应用				
kubectl get pods			

#监控查看Pod
kubectl get pod -w		

#监控查看Pod				
watch -n 1 kubectl get pods	 	

#查看所有应用	
kubectl get pods -A 		

#查看该名称空间下的应用				
kubectl get pods -n 名称空间

#查看默认名称空间下更详细的应用信息 			
kubectl get pod -owide     				

# 查看所有pod使用的内存 
kubectl top pod -A 

#查看容器描述   默认是default命名空间
kubectl describe pod myk8snginx  

kubectl describe pod -n ruoyi-cloud ry-cloud-mysql-0

# 查看Pod运行日志
kubectl logs mynginx			

#进入容器		
kubectl exec -it mynginx -- /bin/bash	
kubectl exec -it redis -- redis-cli

其他配置

安装oh-my-zsh

yum install zsh -y
yum install git -y
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# 重新导入k8s环境配置
export KUBECONFIG=/etc/kubernetes/admin.conf
# or
vim ~/.zshrc 
# 在最后一行添加
export KUBECONFIG=/etc/kubernetes/admin.conf
source ~/.zshrc

ipvs配置

  • 在kubernetes中service有两种代理模型,一种是基于iptables,另一种是基于ipvs的。ipvs的性能要高于iptables的,但是如果要使用它,需要手动载入ipvs模块。
  • 在每个节点安装ipset和ipvsadm:
yum -y install ipset ipvsadm
  • 在所有节点执行如下脚本:
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
  • 授权、运行、检查是否加载:
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
  • 检查是否加载:
lsmod | grep -e ipvs -e nf_conntrack

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/559724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SSH登录和SSH免密登录

在了解ssh的时候产生了概念混淆&#xff0c;发现ssh登录和ssh免密登录是两码事。 可以从目的和过程对比这两个概念&#xff1a; 1.目的 1.1 SSH登录 简单来说就是&#xff1a;建立客户端和服务器之间安全的远程连接&#xff0c;登录远程服务器&#xff0c;以访问文件系统 。…

C语言——经典面试题

哈喽&#xff0c;大家好&#xff0c;今天我们来学习一道面试过程中可能会出现的一道笔试题 有这样一段代码&#xff0c;分析在VS编译器的运行结果 #include<stdio.h> int main() {int i 0;int arr[10] { 1,2,3,4,5,6,7,8,9,10 };for (i 0; i < 12; i){arr[i] 0;pr…

线性回归预测

目录 1、线性回归 2、R-Squared 1、线性回归 在机器学习和统计建模中&#xff0c;这种关系用于预测未来事件的结果 线性回归使用数据点之间的关系在所有数据点之间画一条直线 这条线可以用来预测未来的值 在机器学习中&#xff0c;预测未来非常重要。比如房价、股票等预测 …

Docker核心组件

Docker核心组件 -镜像 Docker Registry 镜像仓库 (Docker Registry) 负责存储、管理和分发镜像&#xff0c;并且提供了登录认证能力&#xff0c;建立了仓库的索引。 镜像仓库管理多个 Repository&#xff0c; Repository 通过命名来区分。每个 Repository 包含一个或多个镜像…

UI自动化测试用例管理平台搭建

用到的工具&#xff1a;python3 django2 mysql RabbitMQ celery selenium python3和selenium这个网上很多教程&#xff0c;我不在这一一说明&#xff1b; 平台功能介绍&#xff1a; 项目管理&#xff1a;用于管理项目。每个项目可以设置多个环境&#xff0c;例如开发环境…

winpcap 发包工具

本工具主要用来进行网络协议的调试&#xff0c;主要方法是&#xff0c;对现场数据抓包&#xff0c;然后将数据包带回交给开发人员&#xff0c;开发人员将该数据包重新发送和处理&#xff0c;模拟现场环境以便于调试和分析。 &#xff08;一&#xff09;使用方法 命令行下输入s…

linux0.12-10-chr_drv

[466页] 第10章 字符设备驱动程序 466–10-1-总体功能 466–10-1-1-终端驱动程序基本原理 467–10-1-2-Linux支持的终端设备类型 468–10-1-3-终端基本数据结构 472–10-1-4-规范模式和非规范模式 473–10-1-5-控制台终端和串行终端设备 476–10-1-6-终端驱动程序接口 476–…

【微信小程序】如何获取用户手机号授权登录

一. 前置条件 目前该接口针对非个人开发者&#xff0c;且完成了认证的小程序开放&#xff08;不包含海外主体&#xff09;&#xff0c;也就是说只针对企业认证小程序开放。若用户举报较多或被发现在不必要场景下使用&#xff0c;微信有权永久回收该小程序的该接口权限。在使用…

到底什么是CIDR(无类域间路由)?做网络的一定得懂这个术语!

CIDR&#xff08;无类域间路由&#xff09;是一种用于对互联网IP地址进行聚合和分配的技术。它通过改变IP地址的分配方式&#xff0c;有效地解决了IPv4地址空间不足的问题。 本文将详细介绍CIDR的原理、使用方法以及它对互联网的影响&#xff0c;还会针对CIDR出三道例题&#x…

使用SolVES 模型与多技术融合快速实现生态系统服务功能社会价值评估

生态系统服务是人类从自然界中获得的直接或间接惠益&#xff0c;可分为供给服务、文化服务、调节服务和支持服务4类&#xff0c;对提升人类福祉具有重大意义&#xff0c;且被视为连接社会与生态系统的桥梁。自从启动千年生态系统评估项目&#xff08;Millennium Ecosystem Asse…

金融学学习笔记第3章

第3章 管理财务健康状况和业绩 一、财务报表的功能 财务报表有三个重要的经济功能: (1)向公司的所有者和债权人提供关于公司目前状况及过去财务表现的信息。 (2)为所有者及债权人设定经营目标,对管理层施加限制提供了便捷的方式。 (3)为财务计划提供了方便的模式。 二、…

【马蹄集】第十二周作业

第十二周作业 目录 MT2056 二阶前缀和MT2057 门票MT2058 最大的平均值MT2068 高数考试MT2069 等差 MT2056 二阶前缀和 难度&#xff1a;黄金    时间限制&#xff1a;1秒    占用内存&#xff1a;128M 题目描述 在一个直角坐标系上&#xff0c;有 n n n 个坐标上有元素值&…

发表计算机SCI期刊,有哪些建议? - 易智编译EaseEditing

要发SCI论文&#xff0c;首先得写一篇论文&#xff0c;然后再向SCI期刊投稿&#xff1a; 计算机SCI论文是一种重要的学术论文&#xff0c;需要遵循一定的写作规范和要求。以下是一些写作建议&#xff1a; 选择合适的标题和摘要。 标题应该简明扼要&#xff0c;能够准确反映论…

UE Http Server 插件说明

1. Create Http Server 创建Http服务器。 Port : 监听端口&#xff0c;范围 1 - 65535&#xff0c;要保证系统唯一&#xff0c;不然会监听失败。 2. Bind 绑定网页路由回调。 Target &#xff1a;HttpServer 对象 Http Path: 绑定路径&#xff0c;如 ”/index“ Http Verbs…

基于IMX8 实时ethercat的手机机器人方案设计

结构&#xff1a; 1、下述结构为操控手柄&#xff0c;用于采集人手运动信号&#xff0c;传递至上位机&#xff0c;对其他设备进行遥操控 2、手柄内含4个电机旋转副的手柄机械臂&#xff0c;内置16位分辨率旋转编码器记录角位移&#xff1b; 3、上位机连接手柄电机、器械电机…

【Java递归】一篇文章带你了解,什么是递归 ,递归的特点,递归应用场景,递归练习题

博主&#xff1a;東方幻想郷 专栏分类&#xff1a;Java | 从入门到入坟 Java递归 ⭐ 递归的定义⭐ 递归的特点⭐ 递归应用场景⭐ 简单例子⭐ 递归练习题&#x1f30c; 练习题模板&#x1f3f4;‍☠️ 练习题答案&#xff1a; ⭐ 递归的定义 &#x1f31f;递归是一种在方法通过调…

使用echocollect e将西门子PLC数据转发至SQL Server数据库

一 背景 随着工业4.0和工业大数据的发展&#xff0c;越来越多的制造型企业开始应用大型数据库来收集和分析数据&#xff0c;以辅助生产运营的决策。在制造工厂中实时收集和分析设备数据能够优化生产流程、减少停机时间并提高效率。然而&#xff0c;这些必要的设备数据通常被“…

在线教育平台小程序,打造高效学习新模式

随着科技的不断发展和互联网的普及&#xff0c;线上教育已经成为了现代人们获取知识、提升自我、实现梦想的重要途径。伴随而来的是线上教育平台的极度竞争。如何才能在这个竞争激烈的市场中脱颖而出&#xff1f;构建一个高效的、符合学生需求的线上教育课堂小程序非常关键。 …

性能测试重要知识与TPS上不去原因分析,测试进阶之路卷起来...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 常见性能测试术语…

阿里P7晒出工资条,看完扎心了……

前几天&#xff0c;有位老铁私信我&#xff0c;说看到某95后学弟晒出阿里P7的工资单&#xff0c;他是真酸了…想狠补下技术&#xff0c;努力冲一把大厂。 为了帮到他&#xff0c;也为了大家能在最短的时间内做面试复习&#xff0c;我把软件测试面试系列都汇总在这一篇文章了。 …