运行模式
- 独立组件模式;系统各个组件直接以守护进程的方式运行于节点之上,各组件相互协作构成集群
- 静态Pod模式;除kubelet 和 Docker 之外的其他组件都以静态的Pod对象运行于Master 主机之上
- 自托管模式;类似于”静态Pod模式” 除了基础组件之外的其他组件都以 DamonSet 类型的控制器管理运行,而非静态的Pod对象
系统要求
- Linux 操作系统
- CPU 必须大于2核心
- 内存必须大于2GB
生产环境中,应该至少部署三个协同工作的Master 节点
检查操作系统
查询系统版本
# Centos 7.x 8.x 以及Centos 分支 (AliOS)cat /etc/redhat-release
查询主机名称
- 主机名称不能有
**.**``**-****非字母、数字**- Kubernetes 集群中的节点名字
# 此处 hostname 的输出将会是该机器在 Kubernetes 集群中的节点名字hostname# 如果需要设置主机名称hostnamectl set-hostname [your-new-host-name]# 查看是否修改成功hostnamectl status
设置主机Host
echo "127.0.0.1 $(hostname)" >> /etc/hosts
检查网卡
与K8S集群连接的网卡名字必须是
eth0
ip route show
检查CPU核心数
CPU 核心数不能低于2核
lscpu
设置一些环境变量
安装必备工具
安装基础工具
安装 nfs-utils 挂载磁盘 安装 wget
yum install -y nfs-utilsyum install -y wget
禁用防火墙
systemctl stop firewalldsystemctl disable firewalld
关闭 SeLinux
setenforce 0sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
关闭虚拟内存
swapoff -ayes | cp /etc/fstab /etc/fstab_bakcat /etc/fstab_bak |grep -v swap > /etc/fstab
安装 containerd
卸载
yum remove -y containerd.io
安装工具
yum install -y yum-utils device-mapper-persistent-data lvm2
添加yam配置地址
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装 containerd
来源K8S 官网
cat <<EOF | sudo tee /etc/modules-load.d/containerd.confoverlaybr_netfilterEOFsudo modprobe overlaysudo modprobe br_netfilter# Setup required sysctl params, these persist across reboots.cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.confnet.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1net.bridge.bridge-nf-call-ip6tables = 1EOF# Apply sysctl params without rebootsudo sysctl --system
yum update -y && sudo yum install -y containerd.io-1.4.3
配置containerd
在
etc配置容器目录;输出默认配置
mkdir -p /etc/containerdcontainerd config default > /etc/containerd/config.toml
设置阿里云源
export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com
修改默认配置文件
sed -i "s#k8s.gcr.io#registry.aliyuncs.com/k8sxio#g" /etc/containerd/config.tomlsed -i '/containerd.runtimes.runc.options/a\ \ \ \ \ \ \ \ \ \ \ \ SystemdCgroup = true' /etc/containerd/config.tomlsed -i "s#https://registry-1.docker.io#${REGISTRY_MIRROR}#g" /etc/containerd/config.toml
启动 containerd
systemctl daemon-reloadsystemctl enable containerdsystemctl restart containerd
安装Kubernetes 核心组件
卸载
yum remove -y kubelet kubeadm kubectl
安装
设置yum 为阿里云源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF
安装
kubelet、kubeadm、kubectl
# 将 ${1} 替换为 kubernetes 版本号,例如 1.20.1yum install -y kubelet-${1} kubeadm-${1} kubectl-${1}
绑定
crictl config runtime-endpoint /run/containerd/containerd.sock
启动
systemctl daemon-reloadsystemctl enable kubelet && systemctl start kubelet
输出版本
containerd --versionkubelet --version
Master 节点
配置
export MASTER_IP=x.x.x.x# 替换 apiserver.demo 为 您想要的 dnsNameexport APISERVER_NAME=apiserver.demo# Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中export POD_SUBNET=10.100.0.1/16echo "${MASTER_IP} ${APISERVER_NAME}" >> /etc/hosts
删除默认配置
rm -f ./kubeadm-config.yaml
写入新配置; 将 ${1} 替换为 kubernetes 版本号,例如 1.20.1
# 将 ${1} 替换为 kubernetes 版本号,例如 1.20.1cat <<EOF > ./kubeadm-config.yaml---apiVersion: kubeadm.k8s.io/v1beta2kind: ClusterConfigurationkubernetesVersion: v${1}imageRepository: registry.aliyuncs.com/k8sxiocontrolPlaneEndpoint: "${APISERVER_NAME}:6443"networking:serviceSubnet: "10.96.0.0/16"podSubnet: "${POD_SUBNET}"dnsDomain: "cluster.local"---apiVersion: kubelet.config.k8s.io/v1beta1kind: KubeletConfigurationcgroupDriver: systemdEOF
初始化Master
kubeadm init --config=kubeadm-config.yaml --upload-certs
配置 kubectl
rm -rf /root/.kube/mkdir /root/.kube/cp -i /etc/kubernetes/admin.conf /root/.kube/config
安装网络插件 calico
参考文档地址
rm -f calico-3.17.1.yaml# 安装kubectl create -f https://kuboard.cn/install-script/v1.20.x/calico-operator.yaml# 下载资源配置wget https://kuboard.cn/install-script/v1.20.x/calico-custom-resources.yaml# 修改网络地址sed -i "s#192.168.0.0/16#${POD_SUBNET}#" calico-custom-resources.yaml# 应用资源插件kubectl create -f calico-custom-resources.yaml
使用阿里云代理
- 阿里云开通节点代理托管
- 选择
集群找到连接信息选择网络类型复制出对应的yaml 文件
# 复制文件到agent.yaml# 应用yaml 文件kubectl apply -f agent.yaml
