1.部署拓扑

1.1服务配置及拓扑

镜像:CentOS-7-x86_64-Minimal-1908

CPU:2核

内存:2G

1.2更改主机名

//在master虚拟机上,设置master01节点

hostnamectl set-hostname master01

//立马生效

bash

//查看/etc/hostname为master01

cat /etc/hostname

//重启后永久生效

reboot

//同理在node1虚拟机上,设置node01节点

hostnamectl set-hostname node01

//立马生效

bash

//查看/etc/hostname为node01

cat /etc/hostname

//重启后永久生效

reboot

node2如node1操作

2.安装docker

//安装yum工具

yum install -y yum-utils

//卸载旧版本Docker

sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

//安装仓库

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

//更新配置yum源后,用如下命令生成缓存,提高搜索安装软件速度

sudo yum makecache fast

//安装Docker

sudo yum install docker-ce docker-ce-cli containerd.io -y

//启动docker

sudo systemctl start docker

//设置开机启动

sudo systemctl enable docker

sudo systemctl status docker

//新增配置文件

cat  >> /etc/docker/daemon.json << EOF

{

 "exec-opts":["native.cgroupdriver=systemd"]

}

EOF

//重启docker

systemctl restart docker

systemctl status docker

3.服务器配置

3.1关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

3.2将SELinux设置为permissive模式(相当于将其禁用)

setenforce 0

sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

3.3允许 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

sysctl --system

3.4关闭系统的Swap

swapoff -a

//关闭swap分区

sed -ri 's/.*swap.*/#&/' /etc/fstab

3.5配置/etc/hosts

//自定义master与node IP,请根据个人情况修改

cat >> /etc/hosts << EOF

192.168.186.155 master01

192.168.186.156 node01

192.168.186.157 node02

EOF

4.安装kubelet、kubeadm和 kubectl

4.1配置软件源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1

gpgcheck=1

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

//针对修改repo_gpgcheck=0

4.2安装kubelet kubeadm kubectl

在所有节点上安装kubelet、kubeadm和kubectl。

  1. kubelet运行在Cluster所有节点上,负责启动Pod和容器。
  2. kubeadm用于初始化Cluster。
  3. 通过kubectl可以部署和管理 应用,查看各种资源,创建、删除和更新各种组件。

sudo yum update -y

//sudo yum install -y kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4

//可以根据github发布版本,指定

//最新的1.24版本已经弃用docker,所以此处需指定1.23

sudo yum install -y kubelet-1.23.5 kubeadm-1.23.5 kubectl-1.23.5

//默认最新版本

//sudo yum install -y kubelet kubeadm kubectl

sudo systemctl enable --now kubelet

sudo systemctl start kubelet

//sudo systemctl status kubelet 此时kubelet还没有正常准备,待kubeadm init后master节点会ok,将node节点join添加后kubelet也会正常

4.3检查工具安装

yum list installed | grep kubelet

yum list installed | grep kubeadm

yum list installed | grep kubectl

//查看集群版本结果Kubernetes v1.23.5

kubelet --version

5.用kubeadm创建Cluster

5.1初始化Master

  1. --apiserver-advertise-address指明用Master的哪个interface与Cluster的其他节点通信。如果Master有多个interface,建议明确指定,如果不指定,kubeadm会自动选择有默认网关的interface。
  2. --pod-network-cidr指定Pod网络的范围。Kubernetes支持多种网络方案,而且不同网络方案对--pod-network-cidr有自己的要求,这里设置为10.244.0.0/16是因为我们将使用flannel网络方案,必须设置成这个CIDR。在后面的实践中我们会切换到其他网络方案,比如Canal。

//apiserver-advertise-address 192.168.186.155为master节点IP,根据个人master IP修改

kubeadm init --apiserver-advertise-address 192.168.186.155 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr 10.244.0.0/16 --service-cidr 10.96.0.0/12

补充:Kubeadm初始化报错:[ERROR CRI]: container runtime is not running

解决办法:

rm -rf /etc/containerd/config.toml

systemctl restart containerd

//如果执行失败,需重置

kubeadm reset

//配置客户端kubectl

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

5.2初始化worker

//worker节点添加到集群 ---> 在worker节点node1上执行

//可以通过kubeadm token list查看token

//也可以通过如下命令一次性获取命令

kubeadm token create --print-join-command

5.3添加pod网络 calico --> master节点执行

wget https://docs.projectcalico.org/v3.20/manifests/calico.yaml --no-check-certificate

kubectl apply -f calico.yaml

//此处应用后node状态由NotReady --> Ready

5.4控制面查看集群

kubectl get nodes

kubectl get pod -A

5.5工作负载worker节点node1查看集群

//在master01传文件到node01,其中172.168.186.156为master01节点

scp -r /etc/kubernetes/admin.conf root@172.168.186.156:/etc/kubernetes/

//在node1上执行

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

source ~/.bash_profile

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐