《伸手系列》之arm架构服务器安装kubernetes
前段时间买了两台华为云服务器没有用,最近看了一下发现是arm架构的,刚好没有在arm上装过k8s,特意装一下顺便记录一下
一、环境准备
硬件参数
操作系统和安装要求
以上是华为云服务器的情况,直接官网搬的信息
Docker安装
注意:
采用静态包而非yum install的方式,是因为默认yum源的Docker版本过旧,容易出错且出现问题难以定位。
- 进入Docker官方下载地址,查看Docker静态安装包列表。
下载地址:https://download.docker.com/linux/static/stable/aarch64/
- 选择所需版本的安装包并下载至本地。如上图所示。
注意:
在离线场景下,可以先通过网络下载安装包再传入目标主机的目标目录。
wget https://download.docker.com/linux/static/stable/aarch64/docker-18.09.8.tgz
获取Docker静态包及组件
3.1 执行cat /etc/redhat-release,确认物理机的操作系统版本。
3.2 将静态安装包在本地解压。解压后本地文件夹下会多一个docker文件夹, 内容如下tar xvpf docker-18.09.8.tgz
3.3 将文件夹中所有内容拷贝至“/usr/bin”文件夹下。
cp -p docker/* /usr/bin
3.4 为使Docker可以正常使用,还需要关闭SELinux及防火墙。
setenforce 0systemctl stop firewalldsystemctl disable firewalld
此时只是暂时禁用SELinux,如果要长期禁用SELinux,还需要修改/etc/selinux/config文件。
将SELINUX=enforcing改为SELINUX=permissive或disabled,才能长期有效。重启服务器后,修改的配置文件生效
3.5 整段执行如下命令,配置docker.service文件cat >/usr/lib/systemd/system/docker.service <<EOF [Unit] Description=Docker Application Container Engine Documentation=http://docs.docker.com After=network.target docker.socket [Service] Type=notify EnvironmentFile=-/run/flannel/docker WorkingDirectory=/usr/local/bin ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock --selinux-enabled=false --log-opt max-size=1g ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process Restart=on-failure [Install] WantedBy=multi-user.target EOF
3.6 随后启动相关服务,输出Docker的状态。
systemctl daemon-reloadsystemctl status dockersystemctl restart dockersystemctl status dockersystemctl enable dockersystemctl status docker
3.7 执行docker version命令,查询Docker版本
K8S安装
K8s集群由一个管理节点(Master,也称主节点)与多个计算节点(Node)组成,集群创建、管理工作均在Master节点执行,计算节点通过kubeadm join操作加入集群。因此,Master与Node需要处在同一个网络下,且可以互通。
1、云服务器直接内网如果不通的话,同一区域可以建立对等连接从而互通,不通区域的互通也可以但是会收费;
2、搭建K8s集群,每台节点均需要按照文档安装Docker及K8s的全部组件。
集群角色和IP规划
角色 | IP举例 |
---|---|
Master | 192.168.0.160 |
Worker | 10.0.0.248 |
配置华为云yum源
- 配置华为云yum源
考虑到国内的网络情况,手动部署K8s之前,需要配置华为云yum源,操作步骤如下所示:
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.huaweicloud.com/kubernetes/yum/repos/kubernetes-el7-aarch64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=http://mirrors.huaweicloud.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.huaweicloud.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
- 刷新yum缓存
yum makecache
安装基础组件
- 启用NET.BRIDGE.BRIDGE-NF-CALL-IPTABLES内核选项。
sysctl -w net.bridge.bridge-nf-call-iptables=1
- 禁用交换分区。
swapoff -acp -p /etc/fstab /etc/fstab.bak$(date '+%Y%m%d%H%M%S')sed -i "s/\/dev\/mapper\/centos-swap/\#\/dev\/mapper\/centos-swap/g" /etc/fstab
- 安装K8s组件。
yum install -y kubelet kubeadm kubectl kubernetes-cni
- 查看安装情况。
rpm -qa | grep kubeletrpm -qa | grep kubeadmrpm -qa | grep kubectlrpm -qa | grep kubernetes-cni
- 设置iptables。
echo "net.bridge.bridge-nf-call-iptables=1" > /etc/sysctl.d/k8s.conf
- 使能kubelet服务。
systemctl enable kubelet
通过Docker下载其他组件
注意:
集群内所有节点均需执行以下操作步骤。
- 查看下载节点初始化所需镜像。
执行kubeadm config images list命令
!!! 一定要注意,别弄错了,不然后续肯定有问题, K8s所需镜像版本有可能会变动,因此查看列表并以此匹配需要下载的Docker镜像,文档中的镜像版本仅做参考。
例如这边是:
k8s.gcr.io/kube-apiserver:v1.14.2
k8s.gcr.io/kube-controller-manager:v1.14.2
k8s.gcr.io/kube-scheduler:v1.14.2
k8s.gcr.io/kube-proxy:v1.14.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
- 从DockerHub上下载镜像。
docker pull docker.io/mirrorgooglecontainers/kube-apiserver-arm64:v1.14.2docker pull docker.io/mirrorgooglecontainers/kube-controller-manager-arm64:v1.14.2docker pull docker.io/mirrorgooglecontainers/kube-scheduler-arm64:v1.14.2docker pull docker.io/mirrorgooglecontainers/kube-proxy-arm64:v1.14.2docker pull docker.io/mirrorgooglecontainers/pause-arm64:3.1docker pull docker.io/mirrorgooglecontainers/etcd-arm64:3.3.10docker pull docker.io/coredns/coredns:1.3.1
- 修改已下载的镜像标签。
docker tag docker.io/mirrorgooglecontainers/kube-apiserver-arm64:v1.14.2 k8s.gcr.io/kube-apiserver:v1.14.2docker tag docker.io/mirrorgooglecontainers/kube-controller-manager-arm64:v1.14.2 k8s.gcr.io/kube-controller-manager:v1.14.2docker tag docker.io/mirrorgooglecontainers/kube-scheduler-arm64:v1.14.2 k8s.gcr.io/kube-scheduler:v1.14.2docker tag docker.io/mirrorgooglecontainers/kube-proxy-arm64:v1.14.2 k8s.gcr.io/kube-proxy:v1.14.2docker tag docker.io/mirrorgooglecontainers/pause-arm64:3.1 k8s.gcr.io/pause:3.1docker tag docker.io/mirrorgooglecontainers/etcd-arm64:3.3.10 k8s.gcr.io/etcd:3.3.10docker tag docker.io/coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
- 删除旧镜像。
docker rmi docker.io/mirrorgooglecontainers/kube-apiserver-arm64:v1.14.2docker rmi docker.io/mirrorgooglecontainers/kube-controller-manager-arm64:v1.14.2docker rmi docker.io/mirrorgooglecontainers/kube-scheduler-arm64:v1.14.2docker rmi docker.io/mirrorgooglecontainers/kube-proxy-arm64:v1.14.2docker rmi docker.io/mirrorgooglecontainers/pause-arm64:3.1docker rmi docker.io/mirrorgooglecontainers/etcd-arm64:3.3.10docker rmi docker.io/coredns/coredns:1.3.1
配置hosts文件
主节点和计算节点都需要配置hosts文件。
- 执行vi /etc/hosts命令,修改hosts文件。
- 添加集群所有节点的IP及hostname信息,如下所示,按Esc,输入:wq保存退出。
配置主节点
重复搭建集群时,请先执行kubeadm reset命令,清除旧的K8s集群设置。
- 在主节点上执行集群初始化命令
kubeadm init --kubernetes-version=1.14.2 --apiserver-advertise-address=192.168.0.160 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
说明:
计算节点不需要执行集群初始化操作。
如果在主节点初始化的时候提示:
/proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
可以通过执行echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables命令将其置为1(vim不可修改此文件)。
执行该操作时,建议排查是否有配置代理(执行env查看),避免kubeadm init初始化超时失败,删除代理的操作:
export -n http_proxy
export -n https_proxy
export -n no_proxy
如果打印此信息如图所示,则主节点成功被初始化。
在图中,黄框信息表示主节点配置集群需要执行的命令,红框信息表示计算节点加入集群的token命令,请保存该段命令。
- 配置集群
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configexport KUBECONFIG=/etc/kubernetes/admin.conf
- 在主节点查看集群节点信息
kubectl get node
也可以通过命令查看当前进度
kubectl get pods --all-namespaces -o wide
配置计算节点
- 删除代理
如果kubernetes工作节点已经配置了http和https代理,需要执行如下命令删除代理。export -n http_proxyexport -n https_proxyexport -n no_proxy
- 计算节点加入集群
使用前面初始化主节点的信息加入
kubeadm join 192.168.0.160:6443 --token ddrk9r.9quu1gceufqza4pq --discovery-token-ca-cert-hash sha256:4d3484e1700e16f93b71f4b5032ae94534e9d60b368320a8c5e7e116e5b02f2e
须知:
集群加入token是随机生成的,在搭建集群时需要使用实际生成的指令。
token默认有效期为24小时,若token超时,可在K8S主节点通过kubeadm token create --print-join-command命令进行重新生成。
- 等待一分钟左右,在主节点执行kubectl get nodes命令,查看集群中加入的计算节点,如下所示
k8s的安装工作基本完成,后续的kubernetes-dashboard大家可以自行安装
另外,这边K8S安装的版本偏低,大家如果需要安装较高版本的话最好找到源能提前下载好镜像,有问题欢迎交流
关注Github:1/2极客
关注博客:御前提笔小书童
关注网站:HuMingfeng
关注公众号:开发者的花花世界
《伸手系列》之arm架构服务器安装kubernetes相关推荐
- arm架构服务器安装系统教程,docker服务在arm平台上部署安装方法
docker服务在arm平台上部署安装方法 本教程使用的硬件平台是全志A40I,操作系统采用的是ubuntu18.04,内核是3.10.108(内核很老导致docker兼容性不好) 1.获取最新版本的 ...
- [嵌入式基础]-arm架构和x86架构区别
ARM架构过去称作进阶精简指令集机器(AdvancedRISCMachine,更早称作:AcornRISCMachine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设 ...
- ARM系列处理器和架构
从一只ARM到另一只ARM! ARM处理器和架构 当前可用的处理器 ARM1 ARM2 ARM3 ARM4和5 ARM6 ARM7 ARM8 强壮有力的ARM ARM9 ARM10 ARM架构 v1 ...
- ARM系列之ARM 平台安全架构PSA和Trustzone区别 浅析
ARM系列之ARM 平台安全架构PSA和Trustzone区别 浅析 PSA要求是什么? C1.1 硬件级别的隔离环境 C1.2 安全启动 C1.3 生命周期管理 C1.4 密钥管理 差异总结 熟悉A ...
- ARM架构版本及处理器系列详细介绍
目录 1 ARM发展 2 ARM版本 3ARM系列说明 3.1ARM7系列 3.2ARM9系列 3.3ARM11系列 3.4Cortex-R系列 3.5Cortex-M系列 3.6Cortex-A系列 ...
- 从零开始系列(四):一文看懂arm架构和x86架构有什么区别
从零开始系列(四):一文看懂arm架构和x86架构有什么区别 相关系列文章推荐: 从零开始系列(一):在github上搭建自己的博客 从零开始系列(二):数据库基础篇 从零开始系列(三): ...
- 华为鲲鹏arm架构linux服务器安装mysql教程
遇到一个项目是华为鲲鹏arm架构linux服务器(CentOS 7.5 with ARM),刚开始一直按照X86的教程在执行,后来mysql的本地编译命令出现了二进制的错误,于是想到了这个是鲲鹏arm ...
- 【优化系列】汇编优化技术(六):ARM架构64位(AARCH64)汇编优化及demo
DATE:2021.8.15 文章目录 1.arm架构64位优化基础知识 2.ARMv8/AArch64 neon指令格式 3.ARM相关编译参数 4.查看状态标记位NZCV的方法 5.A64指令集特 ...
- 超详细的ARM架构适配介绍
本文主要介绍云联壹云平台如何适配ARM,并运行在ARM CPU架构的机器上. 背景介绍 1.平台服务运行架构 云联壹云平台采用容器化,分布式的架构运行在 Kubernetes(K8s)之上.下面是平台 ...
- Arm架构CPU服务器
Arm架构CPU服务器 CPU作为计算机设备的运算和控制核心,负责指令读取.译码与执行,因研发门槛高.生态构建难,被认为是集成电路产业中的"珠穆朗玛峰".纵观全球,Intel.AM ...
最新文章
- redis单机版安装
- 初步了解mac下C源码的编译过程
- 在阿里写了8年代码后,我才明白这些道理
- 窗体中实现按 回车键 跳到下一个可选的TabIndex控件
- macos 此服务器的证书无效_网易出现重大失误,忘记续费HTTPS证书导致大量用户受影响...
- 【网络安全工程师面试合集】——网络安全基础知识大总结
- php根据类名字符串,PHP 5.5 新特性 ::class 获取类名字符串
- 再回首,Java温故知新(六):Java基础之变量
- windows无法完成格式化U盘与U盘修复对几种解决方法
- 打印机扫描显示计算机故障或繁忙,打印机无法扫描_如何用打印机进行扫描,如何用打印机扫描文件...
- linux根据uid反查用户名
- ios-AddressBook框架
- redhat linux rsh设置
- 使用word进行图片的有序命名
- ANTV/G6 绘制网络拓扑图
- 泰拉瑞亚指令代码大全 无限钱无敌作弊码一览
- 避免使用std::dynamic_pointer_cast
- 达梦数据库表新增字段速度测试
- PCB工程师分享——PCB布线技巧和心得
- java毕业设计物资物流管理系统Mybatis+系统+数据库+调试部署