Kubernetes 集群部署是一项复杂但具有重要意义的任务。
首先,您需要准备好合适的硬件基础设施,这包括具有足够计算资源(CPU、内存、存储)的服务器节点。
在软件方面,您要选择适合您需求的操作系统,如常见的 Linux 发行版(CentOS、Ubuntu 等)。
接下来是安装必要的依赖包和工具,例如 Docker 用于容器运行时环境。
配置网络也至关重要,要确保各个节点之间能够顺畅通信。
然后,您可以选择使用诸如 `kubeadm` 这样的工具来初始化主节点,并将工作节点加入集群。
在部署过程中,还需要关注安全性设置,如设置访问控制策略和认证机制。
例如,如果您的集群需要暴露到外网,那么配置合适的防火墙规则和负载均衡器就是必须的。
另外,监控和日志收集系统的搭建也不能忽视,这有助于您及时发现和解决集群运行中的问题。
总之,Kubernetes 集群部署需要仔细规划和谨慎操作,以确保集群的稳定和高效运行。
master节点的组件
-
是 Kubernetes 集群的前端控制入口,负责处理来自客户端(如API server:
kubectl
)的请求,并提供了集群状态的读取和写入接口。对外暴露了 HTTP API,以供其他组件和用户与集群进行交互。 -
包含了多个控制器,例如kube-controller-manager
:Node Controller
负责监控节点的健康状况,Replication Controller
确保副本集的期望数量与实际数量一致。持续监控集群的状态,并采取必要的操作来维持集群的期望状态。 -
负责将新创建的未调度的 Pod 分配到合适的节点上。考虑节点的资源可用性、Pod 的资源需求以及其他调度策略来做出决策。kube-scheduler
:
例如,如果一个节点出现故障,kube-controller-manager
中的 Node Controller
会检测到并采取相应的措施,如将该节点上的 Pod 重新调度到其他健康的节点上。而当创建一个新的 Pod 时,kube-scheduler
会根据各个节点的资源使用情况和调度策略,选择一个最适合运行该 Pod 的节点。
Node节点包含的组件
-
是节点上的主要代理,负责与主节点通信,接收并执行分配给该节点的任务。监控运行在节点上的 Pod,确保 Pod 中的容器处于健康状态。例如,当容器出现故障时,kubelet
:kubelet
会尝试重新启动它。 -
负责为服务提供网络代理和负载均衡功能。kube-proxy
:
实现了从集群内部或外部访问服务的流量分发。
如果一个服务有多个后端 Pod,kube-proxy
会根据负载均衡策略将请求分发到不同的 Pod 上,以确保服务的高可用性和性能。
另外,节点上通常还会安装容器运行时(如 Docker ),用于运行容器。
kubernetes网络插件
Flannel:
为每个节点分配一个子网,实现容器之间的跨节点通信。
配置相对简单,广泛应用于各种场景。
Calico:
基于 BGP 协议,提供了更精细的网络策略控制。
适用于对网络安全和策略有较高要求的环境。
Weave Net:
支持多种网络拓扑,具有较好的性能和扩展性。
-
Cilium:
以 eBPF 技术为基础,提供高效的网络和安全功能。 - kube-router:集成了网络和服务代理功能。
kubeadm快速安装kubernetes集群
1.采用kubeadm方式来安装kubernetes集群,需要一台master节点和两台node节点
(1)配置三台主机的主机名
hostnamectl set-hostname k8s-master
bash
hostnamectl set-hostname k8s-node01
bash
hostnamectl set-hostname k8s-node02
bash
在三台主机上绑定hosts
cd /etc/hosts
192.168.10.101 k8s-master
192.168.10.102 k8s-node01
192.168.10.103 k8s-node02
关闭交换分区
swapoff -a
sed -i '/swap/s/^/' /etc/fstab
在三台主机上安装常用软件
yum -y install vim wget net-tools lrzsz
配置哭bernetes的YUM源
cat <<EOF> /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum clean all
安装kubelet、kubeadm、kubectl
yum install -y kuvelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
生成初始化配置文件
kubeadm config pring init-defaults > init-config.yaml
初始化配置文件
vim init-config.yaml
拉取所需镜像
kubeadm config images list --config init-config.yaml
kubeadm config images pull --config init-config.yaml
初始化k8s-master
kuberadm init --config=init-config.yaml
复制配置文件到用户的home目录
node节点加入到集群
注意:master中生成的token,直接在master主机中复制过来即可
在k8s-master查看节点
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_proflie
kubectl get nodes
kubectl get pod -A
部署Calico网络插件
也可以提前下载好calica的资源清单直接部署
kubectl create create -f calico.yaml
kubectl get nodes
kubectl get pod --all-namespoces
Metrics-server部署
修改yaml文件并安装
vim components.yaml
--kubelet-insecure-tls #添加
kubectl create -f comoinents.yaml
测试安装结果
kubectl top node
kubectl top pod -A
Dashboard部署
在k8s工作目录中创建dashborad工作目录
mkdir /opt/k8s/dashboard
cd /opt/k8s/dashboaed
上传所需的yaml文件并部署dashboard
ls
dashboaed-user.yaml dashboard.yaml
kubectl create -f .
查看端口号
kubectl get svc kubernetes-dashboaed -n kubernetes-dashboard
查看token
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')