环境:
docker:20.10.8
k8s:1.21.2
操作系统:CentOS Linux release 8.4.2105
一、入门概念:
node:假如一个k8s集群三台机器:A、B、C。ABC称为节点。
docker镜像:是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些运行时准备的一些配置参数。
docker容器:是一种轻量级虚拟化技术,目的和虚拟机一样,都是为了隔离环境。但是它不像虚拟机采用操作系统级别的资源隔离,容器采用的是进程级的系统隔离。
k8s里的pod:k8s的中心思想是每个容器只安装1个进程,多个或1个容器属于一个pod。然后这个pod下的容器可以通过volume的方式共享磁盘。也就是说,应该把整个pod看作虚拟机,然后每个容器相当于运行的虚拟机的进程。
k8s里的deployment:是最常用的 k8S 工作负载控制器(Workload Controllers),是 k8s 的一个抽象概念,用于更高级层次对象,部署和管理 Pod。主要功能:应用部署、应用升级、应用实例扩容、缩容、发布、失败回滚、应用下线。
二、k8s安装组件概念:
kubelet(默认端口10250):负责启动pod和容器。
kubeadm: 用于初始化集群。
kubectl:命令行工具。可以部署和管理应用,查看各种资源,创建、删除和更新组件。
三、k8s出现公钥私钥不一致等问题可以重置集群
kubeadm reset (执行完会提示要手动删除配置文件,看提示信息操作即可)
kubeadm init --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
注意:按照上一步执行结果提示执行后,才可以执行kubectl get pods -n kube-system
三、命令
查看pod:kubectl get pods -n kube-system
健康检查:curl -k https://localhost:6443/healthz
四、安装metric-server,命令行和接口地址均可查询指标信息
前提条件:需要集群环境,如果单机安装metric-server,pod状态一直处于pending中(参考地址:https://blog.51cto.com/u_15329153/5263626)。
以下安装参考以下两个地址:
https://blog.csdn.net/qq_29974981/article/details/122553328
https://blog.51cto.com/u_15127645/4342882
1、拉取镜像,修改标签
docker pull cnskylee/metrics-server:v0.5.0
docker tag cnskylee/metrics-server:v0.5.0 k8s.gcr.io/metrics-server/metrics-server:v0.5.0
2、创建components-v0.5.0.yaml文件
https://github.com/zn19900116/k8s/blob/master/metric-server-v0.5.0.yaml
#注意以下两行:
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
3、执行安装
kubectl apply -f ./components-v0.5.0.yaml
4、测试kubectl top命令的使用
kubectl top pods -n kube-system
5、url访问https://10.128.106.121:10250/stats/summary如果提示未授权,需要修改kubelet配置,systemctl status kubelet查看所有配置文件,找到如下配置项,修改后重启即可访问(参考地址:https://cloud.tencent.com/developer/article/2000490):
”AlwaysAllow”: 安全端口授权插件的有序列表,分别以逗号分AlwaysAllow,AlwaysDeny,RBAC,ABAC
10250(kubelet API):kubelet server 与 apiserver 通信的端口,定期请求 apiserver 获取自己所应当处理的任务,通过该端口可以访问获取 node 资源以及状态。kubectl查看pod的日志和cmd命令,都是通过kubelet端口10250访问.
五、安装kube-state-metrics
kube-state-metrics 主要关注的是业务相关的一些元数据,比如 Deployment、Pod、副本状态等
metrics-server 主要关注的是资源度量 API 的实现,比如 CPU、文件描述符、内存、请求延时等指标。
参考地址://www.greatytc.com/p/e26440453cfb
注意:端口映射还需要kube-controller-manager-m和ingress操作。
kube-controller-manager-m的配置文件如下(kubectl apply -f ./mandatory.yaml):
https://github.com/zn19900116/k8s/blob/master/mandatory.yaml
ingress的配置文件如下(kubectl apply -f ./ingress_kube-state.yaml):
https://github.com/zn19900116/k8s/blob/master/ingress_kube-state.yaml
五、安装dashborad
参考:https://blog.csdn.net/huang_dannier/article/details/122419447
六、删除pod方法
参考:https://blog.csdn.net/ichen820/article/details/119061939
七、单机安装方法
参考://www.greatytc.com/p/dadec614632b