Ubutun Deploy Kubernetes With Containerd
环境准备
1. multipass 虚拟机创建
# 生成密钥对
ssh-keygen -t rsa -b 4096 -f ~/k8s_rsa -C k8s
# 创建 Master 节点
multipass launch -c 2 -m 2G -d 20G -n master --cloud-init - << EOF
ssh_authorized_keys:
- $(cat ~/.ssh/k8s_rsa.pub)
EOF
# 创建 Node 节点
multipass launch -c 1 -m 2G -d 20G -n node1 --cloud-init - << EOF
ssh_authorized_keys:
- $(cat ~/.ssh/k8s_rsa.pub)
EOF
multipass launch -c 1 -m 2G -d 20G -n node2 --cloud-init - << EOF
ssh_authorized_keys:
- $(cat ~/.ssh/k8s_rsa.pub)
EOF--cloud-init :导入本地生成的公钥文件到初始化系统中,可以使用密钥免密 SSH
2. 主机与网络规划
主机 IP
主机名
主机配置
节点角色
192.168.64.4
master1
2C/2G
master 节点
192.168.64.5
node1
1C/1G
node 节点
192.168.64.6
node2
1C/1G
node 节点
子网 Subnet
CIDR 网段
nodeSubnet
192.168.64.0/24
PodSubnet
172.16.0.0/16
ServiceSubnet
10.10.0.0/16
3.软件版本
软件
版本
操作系统
Ubuntu 20.04.4 LTS
内核版本
5.4.0-109-generic
containerd
1.5.10-1
kubernetes
v1.23.2
kubeadm
v1.23.2
kube-apiserver
v1.23.2
kube-controller-manager
v1.23.2
kube-scheduler
v1.23.2
kubectl
v1.23.2
kubelet
v1.23.2
kube-proxy
etcd
v3.5.1
CNI 插件(calico)
v3.18
集群配置(所有节点执行)
1. 节点初始化
主机名与 host 解析
关闭防火墙与禁用 swap 分区
k8s集群安装为什么需要关闭 swap 分区? swap 必须关,否则 kubelet 起不来,进而导致 k8s 集群起不来; 且考虑 kublet 会用 swap 做数据交换的话,对性能影响比较大
同步时间与时区
内核模块加载与配置
配置免密登录(master 节点执行,非必须)
2. 容器运行时安装
构建集群
1.组件安装(所有节点执行)
2.初始化主节点
Master 节点执行
Node 节点执行
3.安装 CNI 网络插件(calico)
calico 插件官方地址: https://projectcalico.docs.tigera.io/getting-started/kubernetes/quickstart
4.集群部署验证
5.Kubernetes 组件
控制平面组件
kube-apiserver:多实例伸缩,高可用且可均衡流量?
etcd:高可用与备份策略?
kube-scheduler 调度策略:Pod 资源需求、硬件/软件/策略约束、亲和性和反亲和性规范、数据位置、工作负载间干扰和最后时限
kube-controller-manager
**数据平面组件(所有节点) **
kubelet
kubeproxy
容器运行时(CR) :containerd(Kubernetes 后续版本不使用 docker)
插件 Addons
网络插件:calico、flannel
可观测性:日志与监控
日志:fluentd
监控:Prometheus
Kubernetes 仪表板(Dashboard)
1. Kubernetes 原生仪表板
官方文档:https://kubernetes.io/zh/docs/tasks/access-application-cluster/web-ui-dashboard/
2. K9S 集群管理工具
官方文档:https://k9scli.io/
Reference:
Last updated