MacOS M1芯片CentOS8部署搭建k8s集群

一、简介

MacOS M1芯片

VMWare Fusion

服务器信息:

hostname系统版本IP内存CPU硬盘
node01-masterCentOS 8192.168.153.1282G2C30G
node02CentOS 8192.168.153.1292G2C30G
node03CentOS 8192.168.153.1302G2C30G
# 查看系统版本
cat /etc/centos-release
# 查看内核版本
uname -sr

在这里插入图片描述

二、基础环境设置

以下操作需要在每个节点都执行。

2.1 设置hostname

#使用 hostnamectl set-hostname设置主机名
hostnamectl set-hostname node01-master


vi /etc/hosts  # 编辑hosts文件,配置域名映射
192.168.153.128  node01-master
192.168.153.129  node02
192.168.153.130  node03

在这里插入图片描述

2.2 关闭防火墙

# 关闭防火墙
systemctl stop firewalld
# 关闭开机自启
systemctl disable firewalld
# 查看防火墙状态
firewall-cmd --state

在这里插入图片描述

2.3 关闭selinux

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

2.4 关闭swap

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

在这里插入图片描述

2.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

三、部署Docker环境

Docker环境也需要在每个节点部署。

3.1 下载docker

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

yum -y install docker-ce

systemctl enable docker && systemctl start docker

3.2 配置镜像加速

另外k8s 1.2版本以上需要修改native.cgroupdriver=systemd

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

Docker安装完成,使用docker info 或者 docker version 命令进行验证:

在这里插入图片描述

四、部署k8s集群

4.1 在所有节点安装kubeadm、kubelet、kubectl

在所有节点执行:

添加阿里的yum软件源,注意baseurl的地址是否是你虚拟机对应的版本

#添加阿里的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

网上有的文章在添加aliyum源的时候使用的是kubernetes-el7-x86_64:(注意区分)

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
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

http://mirrors.aliyun.com/kubernetes/yum/repos/?spm=a2c6h.25603864.0.0.3e92274fROyPdV

在所有节点执行:
安装kubeadm、kubelet、kubectl

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

4.2 在master节点执行kubeadm初始化

仅在master节点执行:
kubeadm初始化

kubeadm init \
      --apiserver-advertise-address=192.168.153.128 \
      --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 192.168.153.128:6443 --token ms6617.5hbjusrd37ovnbh1 \
        --discovery-token-ca-cert-hash sha256:1161e6266f482d5fdf436aa115a941657a2aee5ff0cc739d8c58adfc6a8441fb 

按照安装完成的命令执行。
在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

4.3 加入master节点

node02node03节点执行以下命令加入master节点:

kubeadm join 192.168.153.128:6443 --token ms6617.5hbjusrd37ovnbh1 \
        --discovery-token-ca-cert-hash sha256:1161e6266f482d5fdf436aa115a941657a2aee5ff0cc739d8c58adfc6a8441fb 

token有效期为24小时,如果过期,需要重新创建token:

kubeadm token create --print-join-command  

使用kubectl get nodes或者kubectl get nodes -owide命令进行验证:
在这里插入图片描述

4.4 部署calico

在master节点执行:

wget https://docs.projectcalico.org/manifests/calico.yaml
kubectl apply -f calico.yaml
# 查看运行状态
kubectl get pods -n kube-system

可能会出现卡在ImagePullBackOff或者创建容器等不成功的状态,都有可能是因为镜像没有下载来。

#可以使用kubectl describe pod -n kube-system podname 命令查看容器运行情况,如果是因为镜像下载失败,可以对应的集群节点使用docker pull命令将镜像下载下来
kubectl describe pod -n kube-system calico-kube-controllers-58f755f869-tjsb4

在这里插入图片描述
在这里插入图片描述
node03节点执行docker pull calico/kube-controllers:v3.23.3命令,下载镜像。

在这里插入图片描述

在这里插入图片描述

更新 calico资源404

在这里插入图片描述

将地址更新为https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml

 wget https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
 kubectl apply -f calico.yaml

在这里插入图片描述

五、部署Dashboard可视化界面

kubernetes官方提供的可视化界面:https://github.com/kubernetes/dashboard

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

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

在这里插入图片描述

kubectl get svc -A |grep kubernetes-dashboard

在这里插入图片描述
浏览器访问:https://集群任意IP:端口

https://192.168.153.129:32184/
注意是https协议。
如果是http协议会出现以下情况:
在这里插入图片描述

使用https协议打开出现以下页面:

在这里插入图片描述

键盘输入: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登录成功:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

附录

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

公众号关注

TalkJava

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
### 回答1: macOS M1是苹果公司推出的一款基于ARM架构的操作系统,而JDK8是Java开发环境的一部分。下面给出300字的回答。 macOS M1是苹果公司于2020年推出的基于ARM架构的新一代操作系统。相比以往的Mac电脑使用的Intel芯片M1芯片采用了自家研发的ARM架构,具有更高的性能和更低的功耗。对于开发者来说,在macOS M1上运行JDK8是完全可行的。 JDK8(Java Development Kit 8)是Java开发环境的一部分,包含了编写、编译和运行Java程序所需的工具集合。JDK8作为Java语言的一项重要技术,广泛应用于开发各类应用程序,包括Web应用、移动应用、桌面应用等。 在macOS M1上使用JDK8进行开发是非常方便的。由于macOS M1自带了ARM架构的处理器,所以并不需要进行额外的设置或安装其他软件。开发者只需要去Oracle官网下载适用于ARM架构的JDK8版本,然后进行安装即可。安装完成后,就可以使用JDK提供的工具,例如Java编译器javac和Java虚拟机java,来编写和运行Java程序。 使用macOS M1和JDK8进行Java开发的优势是明显的。首先,macOS M1采用了ARM架构,在处理器性能和功耗方面都有很大的提升,可以提供更加流畅和高效的开发体验。其次,JDK8作为Java开发环境的核心,提供了丰富的类库和工具,可以满足开发者在不同领域开发的需求。最后,苹果公司一直致力于优化开发工具和环境,所以使用macOS M1和JDK8进行Java开发可以得到更好的支持和体验。 总的来说,macOS M1和JDK8的结合为开发者提供了一种高效、可靠的Java开发环境,可以满足各种开发需求,并且可以充分发挥出macOS M1处理器的优势。无论是新的ARM架构还是成熟的JDK8,都会为开发者带来更好的开发体验。 ### 回答2: macOS M1是苹果公司最新一代的处理器架构,而JDK 8是Java开发工具包的第8个版本。 macOS M1基于ARM架构,与传统的x86架构不同,所以它需要经过适配才能正常运行一些软件。对于使用JDK 8的开发者来说,他们需要安装与macOS M1兼容的JDK 8版本,以便在新的处理器上正常运行Java应用程序。 幸运的是,Oracle已经发布了针对macOS M1的JDK 8版本。开发者可以从Oracle官方网站下载并安装这个版本。安装过程与在其他系统上安装JDK 8相似。 一旦安装完成,开发者就可以使用JDK 8在macOS M1上编写和运行Java应用程序。他们可以使用Java的各种特性和API,进行开发、测试和调试。 需要注意的是,由于macOS M1和传统x86架构的差异,一些JDK 8的特性和库可能会有所不同。开发者需要在使用这些特性和库时进行测试和适配,以确保应用程序在macOS M1上的正常运行。 总而言之,对于想要在macOS M1上使用JDK 8开发Java应用程序的开发者来说,他们可以通过下载并安装与macOS M1兼容的JDK 8版本来实现这一目标。然后,他们可以利用Java的特性和API进行开发,并在macOS M1上正常运行他们的应用程序。 ### 回答3: macOS M1是苹果公司最新推出的基于ARM架构的操作系统,而JDK8是Java开发工具包的第8个版本。目前,针对macOS M1的JDK8版本还没有官方的原生支持,但是可以通过一些方法进行安装和配置。 首先,我们可以通过在macOS M1上安装openJDK来使用JDK8。openJDK是一个开源项目,可以在官网上下载与macOS M1兼容的版本。下载安装后,我们需要配置环境变量,以确保系统可以找到新安装的JDK。 其次,我们还可以使用Rosetta 2模拟器来运行x86架构的JDK8。Rosetta 2是macOS M1上的一个工具,可以将x86应用程序转换为适用于ARM架构的应用程序。通过在终端中执行命令,我们可以启用Rosetta 2并使用x86版本的JDK8。 需要注意的是,虽然以上方法可以在macOS M1上运行JDK8,但由于JDK8不是为ARM架构优化的,可能会有性能上的一些损失。因此,如果有可能,我们推荐使用官方支持的JDK版本,如JDK11或JDK15,这些版本已经进行了ARM架构的优化,可以更好地发挥macOS M1的性能优势。 总结来说,虽然macOS M1目前没有官方支持的JDK8版本,但我们仍然可以通过安装openJDK或使用Rosetta 2模拟器来在M1上运行JDK8,不过建议尽可能使用官方支持的JDK版本以获得更好的性能和兼容性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liu_Shihao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值