首页软件使用教程Kubernetes(K8s)安装部署详细教程

Kubernetes(K8s)安装部署详细教程

2024-09-02 137

Kubernetes(K8s)是一个开源的容器编排系统,也是一个多宿主机的容器集群管理软件,能够自动部署、扩展和管理多宿主机上的容器应用程序。本文将详细介绍K8s的部署过程及相关注意事项,帮助大家顺利搭建K8s集群。

一、准备工作

在开始部署之前,需要准备3台全新的虚拟机,推荐配置为至少4核4G内存和200G硬盘。根据实际需求为每台机器配置静态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” 文件

为了实现主机之间的相互访问,需要在三台机器的 “/etc/hosts” 文件中添加主机名与IP的映射。例如:

[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、配置主机间的免密码登录

使用 SSH 配置免密码登录,以下步骤需要在三台机器上互相配置:

[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

完成后,验证 SSH 免密登录是否成功,并确保在配置成功后注销(”exit”),以免影响后续操作。

4、关闭交换分区

K8s 在初始化时会检查交换分区是否关闭。通过以下命令关闭交换分区:

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

如果不想关闭交换分区,可以在安装时使用 “–ignore-preflight-errors=Swap” 参数来忽略这个检查。

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、配置时间同步

确保三台机器上的时间同步,可以使用 “ntp” 或 “chrony” 等工具进行配置。

[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

在 “k8smaster” 上安装Docker:

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

2、配置Docker镜像加速器和驱动

编辑Docker的配置文件”/etc/docker/daemon.json”,添加以下内容:

[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”、”kubelet” 和 “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集群

在 “k8smaster” 上执行以下命令来初始化K8s集群:

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

初始化成功后,按照提示的命令配置 “kubectl”,并注意保存下方的 “kubeadm join” 命令,以便后续添加其他节点。

导入镜像:

[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

成功界面:

Kubernetes(K8s)安装部署详细教程

3、加入节点

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 集群搭建成功。

Kubernetes(K8s)安装部署详细教程

更多指南可参考:《Kubernetes教程

  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

相关文章