kubernetes基础环境安装

主目录地址


kubernetes基础环境安装

文档没有特殊标注内容需要每个节点都执行

基础环境检查

基础操作

# 关闭防火墙和selinux,此处不做过多解释
sed -i '7s#enforcing#disabled#g' /etc/selinux/config
setenforce 0
systemctl disable firewalld.service
systemctl stop firewalld.service
localectl set-locale LANG=en_US.UTF-8
source /etc/locale.conf
yum install ntp -y
systemctl start ntpd

检查网络

检查每个节点的MAC地址和product_uuid的唯一性

sudo cat /sys/class/dmi/id/product_uuid

k8s使用这些值来确定唯一性,虚拟机有可能会存在相同的,这会导致安装失败.

检查网络适配器,节点之间可以互相通信.

允许IPtables检查桥接流量

# 加载br_netfilter 模块
sudo modprobe br_netfilter
# 检查
lsmod | grep br_netfilter
# 设置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
sudo sysctl --system

检查要使用的基础容器服务.一般为dockercontainer

当两者并存时,k8s会优先使用docker, 因为Docker 18.09 附带了 containerd

更新内核版本

针对于centos7,因为centos7的内核默认为3.x版本,虽然满足k8s最低的要求但是存在问题及bug较多,运行docker及k8s并不是很稳定.

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
#查看最新版内核: yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
#安装最新版:
yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel -y
#查看当前可用内核版本:
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
#选择最新内核版本,0代表查看当前可用内核版本列表的左侧索引号
grub2-set-default 0
#生成grub文件
grub2-mkconfig -o /boot/grub2/grub.cfg
#重启linux
reboot

安装组件

安装docker

此处没有指定docker版本,默认下载最新的,但是需要确保每一个节点的docker版本都是相同的

# 添加国内源
cat <<END >/etc/yum.repos.d/repo.repo
[repo]
name=repo
baseurl = https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/x86_64/stable/
enabled=1
gpgcheck=0
END
yum install docker-ce -y
mkdir /etc/docker
echo "{
  \"graph\": \"/data/docker\",
  \"exec-opts\": [\"native.cgroupdriver=systemd\"],
  \"registry-mirrors\": [\"https://fi5svsbh.mirror.aliyuncs.com\"],
  \"log-driver\": \"json-file\",
  \"log-opts\": {
    \"max-size\": \"100m\"
  },
  \"storage-driver\": \"overlay2\",
  \"storage-opts\": [
    \"overlay2.override_kernel_check=true\",
    \"overlay2.size=10G\"
  ]
}">/etc/docker/daemon.json

参数解释:

  1. graph: docker数据存储位置

  2. exec-opts: docker使用的驱动程序,由于 kubeadm 把 kubelet 视为一个系统服务来管理,所以对基于 kubeadm 的安装, 推荐使用 systemd 驱动,不推荐 cgroupfs 驱动。

    详情可参考k8s官网文档: 配置 cgroup 驱动容器运行时

  3. overlay2.override_kernel_check: 此参数和overlay2.size搭配使用,一为开启限制,一为限制单个容器可使用的最大磁盘大小,但是需要注意,只有xfs类型才支持此参数,否则会启动失败.

    执行命令journalctl -xe查看日志:

    failed to start daemon: error initializing graphdriver: Storage option overlay2.size not supported.

    使用如下配置:

    echo "{
      \"graph\": \"/data/docker\",
      \"exec-opts\": [\"native.cgroupdriver=systemd\"],
      \"registry-mirrors\": [\"https://fi5svsbh.mirror.aliyuncs.com\"],
      \"log-driver\": \"json-file\",
      \"log-opts\": {
        \"max-size\": \"100m\"
      },
      \"storage-driver\": \"overlay2\"
    }">/etc/docker/daemon.json
    
# 启动服务
systemctl restart docker
systemctl enable docker

安装k8s

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=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
# 如果下载失败使用:
yum install -y --nogpgcheck kubelet kubeadm kubectl

sudo systemctl enable --now kubelet
  • kubeadm:用来初始化集群的指令。
  • kubelet:在集群中的每个节点上用来启动 Pod 和容器等。
  • kubectl:用来与集群通信的命令行工具。

此处使用了国内阿里云的下载地址,相对于k8s官方提供的,此地址无需梯子可直接访问,同时下载速度较快,但是没有开放同步方式可能会有gpg索引检查失败的情况,使用命令:

yum install -y --nogpgcheck kubelet kubeadm kubectl

默认安装是去最新版本,如果指定版本使用以下命令,但是注意每个包的版本都要相同.

yum install -y kubelet-1.23.4 kubeadm-1.23.4 kubectl-1.23.4

修改主机名

根据不同的初始化方式,修改不同的主机名,例如单主节点可以改为一个master和多个worker(worker1,worker2…).只需要每个节点名称不同即可方便查看

Kubernetes集群初始化时默认以主机名作为集群中的节点名称,当然也可以在导入节点的时候手动指定名称

# centos 7 修改主机名命令
hostnamectl set-hostname master;bash

如果是多主节点,可以采用master1,master2,worker1,worker2…这种命名方式,方便get node时的区分.

添加解析

cat >>/etc/hosts<<EOF
20.88.9.31 master1
20.88.9.32 master2
20.88.9.33 master3
20.88.9.34 worker1
EOF

安装完成,此章节结束


其他参考文档:

安装 kubeadm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值