Kubernetes组件介绍
k8s master包含的三大组件
- kube-apiserver,是整个 Kubernetes 集群的“灵魂”,是信息的汇聚中枢,提供了所有内部和外部的 API 请求操作的唯一入口。同时也负责整个集群的认证、授权、访问控制、服务发现等能力。
- Kube-Controller-Manager,负责维护整个 Kubernetes 集群的状态,比如多副本创建、滚动更新等。Kube-controller-manager 并不是一个单一组件,内部包含了一组资源控制器,在启动的时候,会通过 goroutine 拉起多个资源控制器。这些控制器的逻辑仅依赖于当前状态,因为在分布式系统中没办法保证全局状态的同步。
- Kube-scheduler,监听未调度的 Pod,按照预定的调度策略绑定到满足条件的节点上。这个工作虽说看起来是三大件中最简单的,但是做的事情可一点不少。
k8s node节点包含以下组件
- Container Runtime,容器运行时主要负责容器的镜像管理以及容器创建及运行。大家都知道的 Docker 就是很常用的容器,此外还有 Kata、Frakti等。只要符合 CRI(Container Runtime Interface,容器运行时接口)规范的运行时,都可以在 Kubernetes 中使用。
- Kubelet,责维护 Pod 的生命周期,比如创建和删除 Pod 对应的容器。同时也负责存储和网络的管理。一般会配合 CSI、CNI 插件一起工作。
- Kube-Proxy,主要负责 Kubernetes 内部的服务通信,在主机上维护网络规则并提供转发及负载均衡能力。
除了上述核心组件,通常会在k8s中部署一些Add-on组件,常见的有
- CoreDNS 负责为整个集群提供 DNS 服务。
- Ingress Controller 为服务提供外网接入能力。
- Dashboard 提供 GUI 可视化界面。
- Fluentd + Elasticsearch 为集群提供日志采集、存储与查询等能力。
kubelet、kubeadm、kubectl 介绍
- kubeadm,用于初始化k8s集群。
- kubectl,是k8s命令行工具,通过kubectl可以部署和管理应用,查看各种资源,创建,删除和更新组件。
- kubelet,运行在cluster所有节点上,负责启动pod和容器。
使用kubeadm部署k8s测试集群
官方给的centos配置
-
操作系统,centos7
-
最少CPU,4核
-
最小内存,4GB
-
Swap,Disabled
-
最小磁盘,100GB
-
三台CentOS7.9测试机(kernel-3.10.0)
172.16.208.249 mrms-test01 --master
172.16.208.250 mrms-test02 -- nodes
172.16.210.19 mrms-test03 --nodes
- 三台主机加入hosts信息
cat /etc/hosts
172.16.208.249 mrms-test01
172.16.208.250 mrms-test02
172.16.210.19 mrms-test03
- Disable SELinux
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
- Disable Swap
swapoff -a
- Bridging Container traffics
lsmod | grep br_netfilter #确认是否有加载此模块
sudo modprobe br_netfilter #没有的话可以先加载
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
- Check Required Ports</