Kubernetes 集群搭建 v1.19.3

Kubernetes 集群搭建 v1.19.3

  • 准备开始
    • 硬件准备
    • 高能预警
    • 博主的虚拟机配置
    • 修改 Linux系统 环境配置
    • 安装依赖和工具
  • 安装容器运行时 ——Docker
  • 安装 kubelet / kubeadm / kubectl
  • 安装 Calico 网络组件

准备开始

硬件准备

  • 一台或多台运行着下列系统的机器:
    Ubuntu 16.04+ / Debian 9+ / CentOS 7 / Red Hat Enterprise Linux (RHEL) 7 /
    Fedora 25+ / HypriotOS v1.0.1+ / Container Linux (测试 1800.6.0 版本)
  • 每台机器的内存在 2 GB 以上,CPU 2核以上
  • 集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)
  • 节点之中不可以有重复的主机名、MAC 地址或 product_uuid

高能预警

  • 本文多数命令需要在所有节点上执行,所以部分只需要在某些节点上运行的会有提示,请各位读者仔细阅读后食用~

博主的虚拟机配置

CPU Memory Disk
Intel® Xeon® CPU E5-2650 @ 2.00GHz(4 核心数) 4 GB 20 GB
hostname IP
master 10.10.102.91
node01 10.10.102.92
node02 10.10.102.93

修改 Linux系统 环境配置

`关闭集群上所有主机的防火墙`
systemctl stop firewalld.service
systemctl disable firewalld.service

`配置 iptables 桥接及路由转发`
cat <<EOF > /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

`使刚修改的配置生效, 默认 /etc/sysctl.conf 中加载`
sysctl -p

`关闭交换分区(如果不关闭,kubelet 服务将无法启动)`
swapoff -a
yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab

 `关闭 selinux(如果不关闭,docker将启动容器会报错)`
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

安装依赖和工具

yum install -y yum-utils device-mapper-persistent-data lvm2 nfs-utils vim

安装容器运行时 ——Docker

  • 容器运行时是负责运行容器的软件,containerd / CRI-O / Docker 都可以作为在 Linux 上结合 Kubernetes 使用的几种通用容器运行时。本文将以最常用的 Docker 作为 Kubernetes 集群的容器运行时为例。
`添加 docker 的阿里云源`
yum-config-manager --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

`安装 docker`
yum install -y docker-ce-19.03.13-3.el7 docker-ce-cli-19.03.13-3.el7 containerd.io

`设置docker服务开机启动,并启动docker服务`
sudo systemctl enable docker
sudo systemctl start docker

安装 kubelet / kubeadm / kubectl

`配置阿里云镜像仓库`
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
      http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

`安装 kubelet / kubeadm / kubectl`
yum install -y kubelet-1.19.3-0 kubeadm-1.19.3-0 kubectl-1.19.3-0 \
	 --disableexcludes=kubernetes  # 只从 kubernetes 仓库下载

`使用 kubeadm 初始化集群(只在master节点上执行)`
kubeadm init \
	--apiserver-advertise-address=???.???.???.??? \  # 设置 ApiServer
    --image-repository registry.aliyuncs.com/google_containers \
    --service-cidr=10.96.0.0/12 \  # 为服务的虚拟 IP 地址另外指定 IP 地址段
    --pod-network-cidr=10.244.0.0/16 \  # 指明 pod 网络可以使用的 IP 地址段。
    --ignore-preflight-errors=all
  • 上述命令执行会花费一定的时间,且执行完毕后,我们会看到包含如下字样的提示 (这里提醒小白千万不要对着博客闭着眼睛 Ctrl + C / V 啦~),我们复制在本机控制台上的这段话,在除master以外的节点上运行,这样就可以把子节点都加入到master节点了。
kubeadm join 10.10.102.91:6443 --token q82kdg.swvn4tlwnib2g2x6 \
    --discovery-token-ca-cert-hash sha256:73243b4debf701be995052a8c27c8931acc47f04a9c3b7422d363352585d14c1
  • 等待上述命令执行完毕后,在master节点上执行下面的命令,子节点的名字已经出现在屏幕中了。
kubectl get nodes
  • 但是,细心的读者会发现,子节点虽然已经加入集群,但是状态却是 的。这是因为我们还没有安装网络组件。节点之间的通信依赖于网络组件,如 Fannel / Calico,接下来将以Calico为例,安装 Kubernetes 的网络组件。

安装 Calico 网络组件

`只在 master 节点执行`
`下载 calico.yaml`
wget http://docs.projectcalico.org/v3.6/gettingstarted/kubernetes/installation/hosted/calico.yaml
 
`修改 CALICO_IPV4POOL_CIDR,和初始化集群时的 pod-network-cidr 参数一致`
vim calico.yaml

`calico.yaml`
- name: CALICO_IPV4POOL_CIDR
  value: "10.244.0.0/16" # 修改这里

`安装 calico`
kubectl apply -f calico.yaml
  • 上述命令执行完毕需要一定的时间,我们可以执行下面的命令,待到所有的 pod 都准备就绪,一个完整的 Kubernetes 集群就已经部署完毕了
watch kubectl get pod -n kube-system

感谢阅读。

你可能感兴趣的:(Kubernetes,kubernetes,k8s,docker,kubeadm)