K8S安装部署的详细步骤与注意事项!-程序员宅基地

技术标签: kubernetes  k8s  

目录

一、准备工作

1.关闭selinux和防火墙

2.配置/etc/hosts文件

3.配置主机间的免密通道

4.关闭交换分区,提升性能

5.修改机器内核参数

6.配置阿里云repo源

7.配置时间同步

二、安装docker服务

1.安装docker

2.配置docker镜像加速器和驱动

三、安装配置k8s

1.安装初始化k8s需要的软件包

2.kubeadm初始化k8s集群

3.加入node节点

4.更改node节点状态

k8s搭建成功的界面


前言

k8s是一个多宿主机的容器集群管理软件,编排多台宿主机上的容器,它是一个开源的系统,可以自动部署、扩缩、管理容器的应用程序。本文将为大家详细介绍k8s部署的详细过程与注意事项。


一、准备工作

首先准备3台全新的虚拟机,建议至少4核4G 200G,也就是说配置k8s的服务器配置尽量高。根据自己的规划配置好静态ip,修改主机名(k8smaster,k8snode-1,k8snode-2)

接下来的部署工作很多时候涉及到三台同时配置,因此可以采用所有会话同时部署的方法:

工具 --> 发送键输入到 --> 所有会话

1.关闭selinux和防火墙

在三台机器上同时操作:

#关闭防火墙
[root@localhost selinux]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
#关闭selinux
[root@localhost selinux]# vim /etc/selinux/config 
SELINUX=disabled
#重启机器
[root@localhost selinux]# reboot

2.配置/etc/hosts文件

主机之间相互之间通过主机名互相访问

[root@k8smaster ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.81.97 k8snode-2
192.168.81.98 k8snode-1
192.168.81.99 k8smaster

3.配置主机间的免密通道

配置主机之间为无密码登录,三台机器都需要操作,互相配置。

注意:验证是否配置成功后,一定要记得登出exit,否则会影响后续操作!!!

[root@k8smaster ~]# ssh-keygen
[root@k8smaster ~]# ssh-copy-id k8smaster
[root@k8smaster ~]# ssh-copy-id k8snode-1
[root@k8smaster ~]# ssh-copy-id k8snode-2
#验证是否配置成功
[root@k8smaster ~]# ssh k8snode-2
Last login: Mon May 15 15:03:46 2023

4.关闭交换分区,提升性能

swap交换分区,如果机器内存不够,就会使用swap交换分区,但是swap交换分区的性能较低,k8s设计的时候为了提升性能,默认是不允许使用交换分区的。kubeadm初始化的时候会检测swap是否关闭,如果没关闭就会初始化失败。如果不想关闭交换分区,安装k8s的时候可以指定-ignore-preflight-errors=Swap来解决。

[root@k8snode-2 ~]# swapoff -a
[root@k8snode-2 ~]# cat /etc/fstab
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

5.修改机器内核参数

[root@k8snode-2 ~]# modprobe br_netfilter
[root@k8snode-2 ~]# echo "modprobe br_netfilter" >> /etc/profile
[root@k8snode-2 ~]# cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
#加载配置文件
[root@k8snode-2 ~]# sysctl -p /etc/sysctl.d/k8s.conf

6.配置阿里云repo源

配置国内阿里云docker的repo源

[root@k8snode-2 ~]# yum install -y yum-utils
#添加阿里云的源
[root@k8snode-2 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@k8snode-2 ~]# yum install -y yum-utils device-mapper-persistrnr-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxm12-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm

配置安装k8s组件需要的阿里云的repo源

[root@k8snode-2 ~]# cat  /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0

7.配置时间同步

[root@k8snode-2 ~]# yum install ntpdate -y
#跟网络时间做同步
[root@k8snode-2 ~]# ntpdate cn.pool.ntp.org
15 May 16:18:42 ntpdate[12281]: adjust time server 84.16.67.12 offset -0.018452 sec
#把时间同步做成计划任务
[root@k8snode-2 ~]# crontab -e
* */1 * * * /usr/sbin/ntpdate    cn.pool.ntp.org

二、安装docker服务

1.安装docker

[root@k8snode-1 ~]# yum install docker-ce-20.10.6 -y
#设置服务开机启动
[root@k8snode-2 ~]# systemctl start docker && systemctl enable docker.service

2.配置docker镜像加速器和驱动

[root@k8snode-2 ~]# cat /etc/docker/daemon.json
{
"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com"],
"exec-opts":["native.cgroupdriver=systemd"]
}
[root@k8snode-2 ~]# systemctl daemon-reload && systemctl restart dockers

三、安装配置k8s

1.安装初始化k8s需要的软件包

kubeadm:用来初始化k8s集群

kubelet:安装在集群所有节点上,用于启动pod

kubectl:部署和管理应用,查看各种资源、创建、删除和更新各种组件

[root@k8snode-2 ~]# yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6
#设置开机启动
[root@k8snode-2 ~]# systemctl enable kubelet

2.kubeadm初始化k8s集群

将初始化k8s集群需要的离线镜像包上传至master(再scp至其他并手动解压)

[root@k8smaster ~]# scp k8simage-1-20-6.tar.gz k8snode-2:/root
[root@k8smaster ~]# scp k8simage-1-20-6.tar.gz k8snode-1:/root

 导入镜像

[root@k8smaster ~]#  docker load -i k8simage-1-20-6.tar.gz 

以下操作都只在master上执行!!!

使用kubeadm初始化k8s集群

[root@k8smaster ~]# kubeadm config print init-defaults > kubeadm.yaml
[root@k8smaster ~]# cat kubeadm.yaml 
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.81.99  #修改成master的ip
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  name: k8smaster
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers  #修改为阿里云
kind: ClusterConfiguration
kubernetesVersion: v1.20.0
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
  podSubnet: 10.244.0.0/16  #添加配置
scheduler: {}
---     #添加配置
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd

#基于kubeadm.yaml文件初始化k8s
[root@k8smaster ~]# kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification

成功界面:

3.加入node节点

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@k8smaster ~]# kubeadm token create --print-join-command

 node:

kubeadm join 192.168.81.99:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:fe393e5d1dc83d75cfa94309f5cbd2ea3a80918342ed4bed0d5868b13c7b94df 

更改roles,更改标签:

[root@k8smaster ~]# kubectl label node k8snode-1 node-role.kubernetes.io/worker=worker
[root@k8smaster ~]# kubectl label node k8snode-2 node-role.kubernetes.io/worker=worker

4.更改node节点状态

 在master上操作,上传 calico.yaml

[root@k8smaster ~]# kubectl apply -f calico.yaml 

k8s搭建成功的界面

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yuer1228/article/details/130700638

智能推荐

vue城市选择组件-程序员宅基地

文章浏览阅读99次。适用于vue的城市选择组件仓库地址基本功能:支持全选、反选以及全部清空。支持按拼音筛选。勾选省份将会勾选省份下所有城市。返回数据可灵活处理。安装npm install cn-region-picker # 或者 yarn add cn-region-picker用法组件引入:// import包import CnRegionPicker from 'cn-..._vue城市选择组件

​STM32家族介绍,覆盖STM32F、STM32H、STM32L全系列_stm32m和stm32h-程序员宅基地

文章浏览阅读7.1k次,点赞3次,收藏24次。STM32是ARM Cortex-M内核单片机。目前提供10大产品线(F0, F1, F2, F3, F4, F7, H7, L0, L1,L4),超过700个型号。STM32产品广泛应用于工业控制、消费电子、物联网、通讯设备、医疗服务、安防监控等应用领域,其优异的性能进一步推动了生活和产业智能化的发展。截至2017年4月,STM32全球出货量超过24亿颗。主流型MCUSTM32F0系列 – ARM Cortex-M0入门级MCU意法半导体基于ARM Cortex-M0的STM32F0系列单片机实现了_stm32m和stm32h

启科QuSaaS真随机数解决方案与Amazon Braket结合实践_qekss-程序员宅基地

文章浏览阅读165次。现在常用的依靠计算机模拟产生的伪随机数,或者从某些经典物理噪声(如热噪声,电噪声等)中提取随机数,实际上并不是正真正的随机数,因为从理论上讲,经典物理过程在考虑到所有变量的情况下是可以被模拟的。那么是否存在真正的随机数呢,随着量子力学的发展,通过量子系统产生随机数已经成为可能。_qekss

Android 自定义相机实现身份证拍照,并加入自动对焦与图片不规则裁剪_glide裁剪身份证图片-程序员宅基地

文章浏览阅读1k次。IDCardCamera项目地址:wildma/IDCardCamera 简介:Android 自定义相机实现身份证拍照,并加入自动对焦与图片不规则裁剪更多:作者 提 Bug 标签: README of English效果图..._glide裁剪身份证图片

毕业设计 :基于深度学习的人脸识别【全网最详细】 - opencv 卷积神经网络_基于深度神经网络的人脸识别-程序员宅基地

文章浏览阅读5.1w次,点赞72次,收藏846次。毕业设计 :基于深度学习的人脸识别【全网最详细】 - opencv 卷积神经网络_基于深度神经网络的人脸识别

【Python】pip超详细教程,pip的安装与使用,解决pip下载速度慢的问题-程序员宅基地

文章浏览阅读4.9w次,点赞144次,收藏926次。pip超详细教程,讲述了pip的安装与使用,以及解决了pip下载速度慢的问题_pip下载

随便推点

自定义YUM官方仓库安装NGINX、常用命令及启动、进程查看_nginx repolist-程序员宅基地

文章浏览阅读431次。自定义YUM仓库安装NGINXNGINX 官方站点获取仓库地址1、官方站点说明2、获取仓库地址自定义 YUM 仓库1、创建 repo 文件2、查看 repolist3、查看 nginx 信息安装 NGINX1、安装2、查看安装生成的文件nginx unit-fileNGINX 常用命令1、nginx -h2、nginx -VNGINX 官方站点获取仓库地址1、官方站点说明Website:h..._nginx repolist

Spring -> IOCxml配置注入Array[],List,Map属性_arraylist通过xml配置-程序员宅基地

文章浏览阅读433次。1.类package test10month.test1011;import java.util.Arrays;import java.util.List;import java.util.Map;/** * 功能描述: * @version 1.0 * @className ArrayListMap * @author: 罗德 * @create: 2020-10-11 21:53 */public class ArrayListMap { private String[]_arraylist通过xml配置

RVDS4.0 破解-程序员宅基地

文章浏览阅读1.3w次。转载时请以超链接形式标明文章原始出处和作者信息及本声明http://amazingxiu.blogbus.com/logs/62781676.html 这几天闲来无事,在看如何安装RVDS4.0,也就是RealView Development Suite 4.0

什么是可制造性设计?如何保证电子产品可靠性设计?_电子产品 可制造性 设计-程序员宅基地

文章浏览阅读921次。同样也是非常重要的,一个产品的市场竞争力如何,很大的因素是取决于它的成本,基于成本,从两个方面考虑,第一是选择制造工艺的时候,设计者需要尽量从优从简;综上,不难发现,设计工程师需要考虑的东西非常多,稍微严格的公司,他们可能会有几十道、上百条设计规则,如果不借助工具,全部人为把控,出错的几率是很高的。可制造性设计是基于并行设计的思想,在产品的设计阶段就综合考虑制造过程中的工艺要求、测试要求和组装的合理性,通过设计的手段来把控产品的成本、性能和质量。三个比较典型的分析项为开短路分析、布线分析、孔线距离分析。.._电子产品 可制造性 设计

unity 序列帧动画播放_u3dtimeline播放图片序列-程序员宅基地

文章浏览阅读549次。图片必须为Sprite格式脚本拖入到物体上可以直接使用using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using UnityEngine.SceneManagement;public class StartAnimation : M..._u3dtimeline播放图片序列

知识图谱从入门到应用——知识图谱的知识表示:向量表示方法_知识图谱如何实现向量化-程序员宅基地

文章浏览阅读1.6w次,点赞13次,收藏46次。前文已经介绍过,向量化的表示已经在人工智能的其他领域非常常见,例如在自然语言处理中,可以为句子中的每个词学习一个向量表示(Word Embedding),在图像视频中也可以为每个视觉对象学习一个向量表示。对于知识图谱,也可以为其中的每一个实体和关系学习一个向量表示,并利用向量、矩阵或张量之间的计算,实现高效的推理计算。_知识图谱如何实现向量化

推荐文章

热门文章

相关标签