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搭建成功的界面

  • 8
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值