使用 kubeadm 创建 v1.19.0 kubernetes 集群

本文所使用机器配置情况:

主机名 公网 IP 内网 IP 操作系统 硬件配置 用途
k8s-master 47.242.253.25 172.31.117.60 CentOS 7.7 64位 双核/2GB内存/20GB硬盘 master
k8s-node1 47.242.250.255 172.31.117.61 CentOS 7.7 64位 双核/2GB内存/20GB硬盘 node1

需要特别指出的是,本文使用的主机是阿里云香港主机,在安装过程中没有遇到网络问题。并且本文搭建的 kubernetes 网络也仅是测试使用,在实际生产环境中搭建集群需要仔细查看各个安装参数的具体含义,参考的官方文档地址在本文最后参考资料部分。

1. 在所有节点上安装 docker kubelet kubelet kubeadm

采用官方脚本安装 docker:

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

开启 Docker:

$ sudo systemctl start docker

kubeadm、kubelet、kubelet 在节点上有不同的作用:

  • kubeadm:安装集群的命令行工具,在 master 上主要用于对集群的安装设置,在 node 上主要执行新节点加入集群的操作。
  • kubelet:运行于集群所有节点的核心组件,用于启动pod和容器。
  • kubectl:控制集群的命令行工具。

在所有节点上执行:

$ cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

将 SELinux 设置为 permissive 模式,相当于将其禁用,主要作用是保证容器能够访问主机文件系统:

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

由于需要安装的是 1.19.0 的集群,则安装时需要指定版本号,否则将默认安装最新版:

$ yum install -y kubelet-1.19.0-0 --disableexcludes=kubernetes
$ yum install -y kubectl-1.19.0-0 --disableexcludes=kubernetes
$ yum install -y kubeadm-1.19.0-0 --disableexcludes=kubernetes # kubeadm-1.19.0-0 一定要最后安装

如果想要安装 kubelet 的其它版本,可以执行如下命令查看所有可安装的版本,查看 kubectl 和 kubeadm 版本同理:

$ yum list --showduplicates kubelet --disableexcludes=kubernetes

使用 yum install 安装的顺序很关键,kubeadm 一定要最后安装。如果先安装 kubeadm,则 yum 会自动安装最新版的 kubelet 和 kubectl 作为 kubeadm 的依赖。这样会导致 kubeadm 在接下来进行初始化操作的时候失败。

启动 kubelet:

$ sudo systemctl enable --now kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.

2. 初始化 master 节点

首先获取 master 主机的内网 IP 地址,一般在云主机厂商的控制面板上都会显示内网地址,也可以使用 ifconfig 命令查看:

$ ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:6b:8e:de:02  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.31.117.60  netmask 255.255.240.0  broadcast 172.31.127.255
        ether 00:16:3e:00:b7:03  txqueuelen 1000  (Ethernet)
        RX packets 208023  bytes 307062112 (292.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 39362  bytes 3275173 (3.1 MiB)
        TX erro
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值