2.基于Containerd运行时搭建Kubernetes多控制平面集群实践-腾讯云开发者社区-腾讯云
https://cloud.tencent.com/developer/article/2129846
2.基于Containerd运行时搭建Kubernetes多控制平面集群实践
发布于 2022-09-29 19:27:53
文章被收录于专栏:全栈工程师修炼之路
[TOC]
0x00 前言简述
本章主要讲述,如果使用kubeadm进行安装配置K8S集群,并指定使用containerd作为容器运行时搭配使用的具体安装步骤,以及尽可能在案例中加入k8s集群常用组件及其操作配置。
0x01 环境准备
描述: 此Ubuntu操作系统已做安全加固和内核优化(SecOpsDev/Ubuntu-InitializeSecurity.sh at master · WeiyiGeek/SecOpsDev (github.com),如你的Linux未进行相应配置环境可能与读者有些许差异。
主机环境:
操作系统版本: Ubuntu 20.04.2 LTS
操作内核版本: 5.4.0-78-generic
主机名称与IP:
* k8s-master-1 10.10.107.220 2C 4G @# 控制平面节点
* k8s-node-1 10.10.107.221 2C 4G @# 工作节点
软件环境:
kubernetes -- v1.20.8
containerd -- 1.4.6
calico -- v3.18
节点环境 Tips: 以下命令需要再k8s-master-1和k8s-node-1主机上都要运行。
# 1.节点hosts信息以及确保每个节点上 MAC 地址和 product_uuid 的唯一性
tee -a /etc/hosts <<'EOF'
10.10.107.220 k8s-master-1
10.10.107.221 k8s-node-1
10.10.107.220 newcluster.k8s
EOF
# 你可以使用命令 ip link 或 ifconfig -a 来获取网络接口的 MAC 地址
ifconfig -a
# 可以使用 sudo cat /sys/class/dmi/id/product_uuid 命令对 product_uuid 校验
sudo cat /sys/class/dmi/id/product_uuid
# k8s-master-1: d0154d56-ffdd-697d-09a6-34c851710f09
# k8s-node-1: f98c4d56-9fb2-bc92-98be-2648c83eb7b5
# 2.系统时间时区同步设置
date -R
sudo ntpdate ntp.aliyun.com
# chronyc sources
sudo timedatectl set-timezone Asia/Shanghai
# sudo dpkg-reconfigure tzdata
sudo timedatectl set-local-rtc 0
timedatectl
# Local time: Tue 2021-07-06 11:28:54 CST
# Universal time: Tue 2021-07-06 03:28:54 UTC
# RTC time: Tue 2021-07-06 03:28:55
# Time zone: Asia/Shanghai (CST, +0800)
# System clock synchronized: yes
# NTP service: active
# RTC in local TZ: no
# 3.禁用防火墙与swap分区(新手一定要有这一步操作)
ufw disable && systemctl disable ufw && systemctl stop ufw
swapoff -a && sed -i 's|^/swap.img|#/swap.ing|g' /etc/fstab
# 4.内核相关参数调整
egrep -q "^(#)?vm.swappiness.*" /etc/sysctl.conf && sed -ri "s|^(#)?vm.swappiness.*|vm.swappiness = 0|g" /etc/sysctl.conf || echo "vm.swappiness = 0" >> /etc/sysctl.conf
egrep -q "^(#)?net.ipv4.ip_forward.*" /etc/sysctl.conf && sed -ri "s|^(#)?net.ipv4.ip_forward.*|net.ipv4.ip_forward = 1|g" /etc/sysctl.conf || echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
# - 允许 iptables 检查桥接流量
egrep -q "^(#)?net.bridge.bridge-nf-call-iptables.*" /etc/sysctl.conf && sed -ri "s|^(#)?net.bridge.bridge-nf-call-iptables.*|net.bridge.bridge-nf-call-iptables = 1|g" /etc/sysctl.conf || echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
egrep -q "^(#)?net.bridge.bridge-nf-call-ip6tables.*" /etc/sysctl.conf && sed -ri "s|^(#)?net.bridge.bridge-nf-call-ip6tables.*|net.bridge.bridge-nf-call-ip6tables = 1|g" /etc/sysctl.conf || echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
# 5.ipvs负载均衡管理工具安装
apt install ipset ipvsadm -y
# 6.模块加载到内核并查看是否已经正确加载所需的内核模块
# 重启后永久生效
tee /etc/modules-load.d/k8s.conf <<'EOF'
# netfilter
br_netfilter
# containerd.
overlay
# ipvs
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
EOF
# 临时生效
mkdir -vp /etc/modules.d/
cat > /etc/modules.d/k8s.modules <<EOF
#!/bin/bash
# 允许 iptables 检查桥接流量
modprobe -- br_netfilter
# containerd.
modprobe -- overlay
# ipvs
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
chmod 755