01 Kubernetes集群部署

1.master的组件

1. kube-apiserver

  • 作用:kube-apiserver是Kubernetes集群的核心组件,它提供了Kubernetes API的接口,是集群的前端服务器。所有的API请求都会通过kube-apiserver进行处理,包括创建、更新、删除资源对象等操作。此外,kube-apiserver还负责提供认证、授权、访问控制、API注册和发现等机制。
  • 通信关系:上连其余组件,下接etcd,是集群内外进行资源操作的唯一入口

 etcd:

保存了Kubernetes集群的所有状态数据,包括资源对象的状态、配置信息等

etcd也可以不部署在Master节点,单独搭建。

kube-controller-manager:

负责管理集群中所有的控制器kube-controller-manager包含多种控制器,如节点控制器、副本控制器、端点控制器等,它们分别负责不同的功能,如管理节点的健康状态、处理容器的副本等每个控制器都是一个单独的进程,但为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行。

kube-scheduler:

负责将新创建的Pod调度到合适的节点上运行。它会根据Pod的资源需求和节点的容量情况来进行调度决策,保证集群的均衡负载。

cloud-controller-manager(可选):

用于管理与特定云平台相关的控制器。它的作用是将云平台的功能封装成Kubernetes的API,以便与其他组件进行交互。cloud-controller-manager包含多个与云平台交互的控制器,如节点控制器、路由控制器、服务控制器等

2.node的组件

kubelet

  • 作用:kubelet是Node节点上的主要“节点代理”,它负责处理Master节点下发的任务,如管理Pod和Pod内的容器。kubelet会定期从API server获取节点上Pod的期望状态,并确保Pod中的容器按照期望状态运行。

kube-proxy

  • 作用:kube-proxy是运行在Node节点上的网络代理,它实现了Kubernetes服务(Service)的一部分功能。kube-proxy负责维护主机上的网络规则并执行连接转发,以确保对Service的访问能够正确路由到后端Pod。

容器运行时(Container Runtime)

  • 作用:容器运行时是Node节点上用于运行容器的组件,如Docker或Containerd。它负责容器的创建、启动、停止和删除等操作。

CNI插件(Container Network Interface)

  • 作用:CNI插件为容器提供网络通信服务,确保容器之间以及容器与宿主机之间的网络互通。

3.实验步骤

1.配置三个主机名

hostnamectl set-hostname k8s-master

2.在三台主机绑定hosts文件

192.168.10.101 k8s-master
192.168.10.102 k8s-node1
192.168.10.103 k8s-node2

3.关闭交换分区里的swap defaults

vim /etc/fstab

4.配置kubernetes的yum源

cat < /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 //清理

5.安装 kubelet,kubeadm,kubectl  所有节点都装

yum -y install kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
  • Kubelet:是Kubernetes集群中的一个关键组件,它运行在每个节点(Node)上,负责该节点上Pod的创建、更新、维护等全生命周期的管理。kubelet还负责拉取容器镜像、启动容器、管理容器的存储和网络资源等。

  • Kubeadm:是一个用于快速部署和管理Kubernetes集群的工具。它简化了集群的部署过程,通过执行一系列预定义的步骤来初始化集群,并使其达到最小可用状态

  • Kubectl是Kubernetes的命令行工具,用于与Kubernetes集群进行交互和管理。

kubelet负责节点和Pod的管理,kubeadm负责集群的部署和管理,而kubectl则提供了与集群进行交互和管理的命令行工具

6.设置开机启动  用start是无法启动的

systemctl enable kubelet

7.生成初始化配置文件

kubeadm config print init-defaults > init-config.yaml

8.修改初始化配置文件

  advertiseAddress:192.168.10.101

name : k8s-master

imageRepository: registry.aliyuncs.com/google_containers //阿里源

podSubnet:10.244.0.0/16

9.拉取所需的镜像(这里我用的是离线镜像)

11.初始化 k8s-master  注意执行完以后有生成的令牌

kubeadm init --config=init-config.yaml

12.复制配置文件到用户的home 目录

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes

sudo cp -i /etc/kubernrtrs/admin.conf $HOME/.kube/config

13.将生成的令牌复制到其他两个节点

14.在master查看节点

kubectl get nodes
kubectl get pod -A

15.部署Calico网络插件

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

16.Metrics-server部署

下载Metrics-server的yaml文件并修改

- --kubelet-insecure-tls //添加
image: registry.cn-hangzhou.aliyuncs.com/google containers/metrics-server:vo.6.3

kubectl create -f components.yaml

17测试安装结果

kubectl top node

18:Dashboard部署

创建一个dashborad工作目录

mkdir /opt/k8s/dashboard
cd /opt/k8s/dashboard

19.上传yaml文件之后生成

kubectl create -f .

20.修改谷歌浏览器,在属性里修改

 --test-type --ignore-certificate-errors  //注意前面有空格

21.修改端口号

kubectl edit svc -n kubernetes-dashboard

22.查看端口号

kubectl get svc kubernetes-dashboard -n kubernetes-dashboard

22.查看token

admin-user | awk 'fprint $1}')

6:登录dashboard

你可能感兴趣的:(kubernetes,容器,云原生)