运行模式
- 独立组件模式;系统各个组件直接以守护进程的方式运行于节点之上,各组件相互协作构成集群
- 静态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-utils
yum install -y wget
禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭 SeLinux
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
关闭虚拟内存
swapoff -a
yes | cp /etc/fstab /etc/fstab_bak
cat /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.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# Setup required sysctl params, these persist across reboots.
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
# Apply sysctl params without reboot
sudo sysctl --system
yum update -y && sudo yum install -y containerd.io-1.4.3
配置containerd
在
etc
配置容器目录;输出默认配置
mkdir -p /etc/containerd
containerd 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.toml
sed -i '/containerd.runtimes.runc.options/a\ \ \ \ \ \ \ \ \ \ \ \ SystemdCgroup = true' /etc/containerd/config.toml
sed -i "s#https://registry-1.docker.io#${REGISTRY_MIRROR}#g" /etc/containerd/config.toml
启动 containerd
systemctl daemon-reload
systemctl enable containerd
systemctl restart containerd
安装Kubernetes 核心组件
卸载
yum remove -y kubelet kubeadm kubectl
安装
设置yum 为阿里云源
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
# 将 ${1} 替换为 kubernetes 版本号,例如 1.20.1
yum install -y kubelet-${1} kubeadm-${1} kubectl-${1}
绑定
crictl config runtime-endpoint /run/containerd/containerd.sock
启动
systemctl daemon-reload
systemctl enable kubelet && systemctl start kubelet
输出版本
containerd --version
kubelet --version
Master 节点
配置
export MASTER_IP=x.x.x.x
# 替换 apiserver.demo 为 您想要的 dnsName
export APISERVER_NAME=apiserver.demo
# Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中
export POD_SUBNET=10.100.0.1/16
echo "${MASTER_IP} ${APISERVER_NAME}" >> /etc/hosts
删除默认配置
rm -f ./kubeadm-config.yaml
写入新配置; 将 ${1} 替换为 kubernetes 版本号,例如 1.20.1
# 将 ${1} 替换为 kubernetes 版本号,例如 1.20.1
cat <<EOF > ./kubeadm-config.yaml
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v${1}
imageRepository: registry.aliyuncs.com/k8sxio
controlPlaneEndpoint: "${APISERVER_NAME}:6443"
networking:
serviceSubnet: "10.96.0.0/16"
podSubnet: "${POD_SUBNET}"
dnsDomain: "cluster.local"
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
EOF
初始化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