k8s - 1

kubernetes

集群图例

Master 节点四大核心组件

我们可以把 Master 节点想象成一家物流公司 ,这四个组件就是其中的关键角色:

组件名称 角色比喻 核心职责 关键特性
API Server(API 服务器) 前台接待/总接线员 集群的唯一入口。处理所有 REST 请求(如 kubectl 命令),是各组件之间通信的枢纽。 单点入口:所有操作都必须经过它。 认证授权:负责安全校验。
etcd(镜像仓库) 中央数据库/仓库账本 保存集群的所有配置数据和状态(如 Pod 定义、节点信息)。 唯一真相源:只有 API Server 能直接和它交互。 持久化:数据丢失意味着集群"失忆"。
Scheduler(调度器) 调度员/派单员 负责将未绑定的 Pod 分配到合适的 Worker 节点上。 资源评估:根据 CPU、内存、亲和性策略等决定 Pod 跑在哪。
Controller Manager(控制器管理器) 总管理/监控室 确保集群的实际状态与期望状态一致。 闭环控制:比如发现 Pod 少了就自动补上。 多种控制器:包含节点控制器、副本控制器等。

node核心组件

  • kubelet 负责听从指令并汇报
  • kube-proxy 负责网络流量
  • Runtime 负责运行容器进程

Kubernetes 核心组件服务端口

软件/组件名称 端口范围 用途描述
kubernetes-api 6443 所有组件接口服务 (HTTPS)
etcd 2379-2380 核心数据库(Peer通信端口2380,Client通信端口2379)
kube-scheduler 10259 调度服务(HTTPS)
kube-controller-manager 10257 控制器管理服务(HTTPS)
kubelet 10250 节点代理服务(Kubelet API)
kube-proxy 10256 网络通信与负载均衡 (HTTPS)

kubernetes 安装

主机清单

主机名 IP地址 最低配置
harbor 192.168.88.240 2CPU,4G内存
master 192.168.88.50 2CPU,4G内存
node-0001 192.168.88.51 2CPU,2G内存
node-0002 192.168.88.52 2CPU,2G内存
node-0003 192.168.88.53 2CPU,2G内存

安装控制节点

1、配置软件仓库

root@server s4\]# rsync -av docker/ 192.168.88.240:/var/ftp/rpms/docker/ root@192.168.88.240's password: \[root@server s4\]# rsync -av kubernetes/packages/ 192.168.88.240:/var/ftp/rpms/k8s/ root@192.168.88.240's password: # 更新 repodata \[root@server s4\]# ssh 192.168.88.240 root@192.168.88.240's password: \[root@harbor \~\]# createrepo --update /var/ftp/rpms/ ##### 2、系统环境配置 # 配置安装源 \[root@master \~\]# vim /etc/yum.repos.d/k8s.repo > \[k8s

name=Rocky Linux $releasever - Kubernetes

baseurl="ftp://192.168.88.240/rpms"

enabled=1

gpgcheck=0

禁用 firewall 和 swap

root@master \~\]# sed '/swap/d' -i /etc/fstab \[root@master \~\]# swapoff -a \[root@master \~\]# dnf remove -y firewalld-\* ##### 3、安装软件包 \[root@master \~\]# vim /etc/hosts > 192.168.88.240 harbor > > 192.168.88.50 master > > 192.168.88.51 node-0001 > > 192.168.88.52 node-0002 > > 192.168.88.53 node-0003 \[root@master \~\]# **dnf install -y kubeadm kubelet kubectl containerd.io ipvsadm ipset iproute-tc** ![](https://i-blog.csdnimg.cn/direct/e9957e2af7714e3fa93199a6103b10d9.png) \[root@master \~\]# **containerd config default \>/etc/containerd/config.toml** \[root@master \~\]#**vim /etc/containerd/config.toml** > 61: sandbox_image = "harbor:443/k8s/pause:3.9" > > 125: SystemdCgroup = true > > 154 行新插入: > > \[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"

endpoint = ["https://192.168.88.240:443"]

plugins."io.containerd.grpc.v1.cri".registry.mirrors."harbor:443"

endpoint = ["https://192.168.88.240:443"]

plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.88.240:443".tls

insecure_skip_verify = true

root@master \~\]# **systemctl enable --now kubelet containerd** ##### 4、配置内核参数 # 加载内核模块 \[root@master \~\]# **vim /etc/modules-load.d/containerd.conf** > br_netfilter > > xt_conntrack \[root@master \~\]# **systemctl start systemd-modules-load.service** # 设置内核参数 \[root@master \~\]# **vim /etc/sysctl.d/99-kubernetes-cri.conf** > net.ipv4.ip_forward = 1 > > net.bridge.bridge-nf-call-iptables = 1 > > net.bridge.bridge-nf-call-ip6tables = 1 > > net.netfilter.nf_conntrack_max = 1000000 \[root@master \~\]# **sysctl -p /etc/sysctl.d/99-kubernetes-cri.conf**#立即加载并生效内核参数配置。 ##### 5、导入 k8s 镜像 * **kubernetes/init 目录到 master** **`rsync -av kubernetes/init 192.168.88.50:/root/`** ###### **5.1 安装部署 docker** \[root@master \~\]# **dnf install -y docker-ce** \[root@master \~\]# **vim /etc/docker/daemon.json** > { > > "registry-mirrors":\["https://harbor:443"\], > > "insecure-registries":\["harbor:443"

}

root@master \~\]# **systemctl enable --now docker** \[root@master \~\]# **docker info** **5.2 上传镜像到 harbor 仓库** \[root@master \~\]# **docker login harbor:443** > Username: \<登录用户\> > > Password: \<登录密码\> > > Login Succeeded \[root@master \~\]#**docker load -i init/v1.29.2.tar.xz** \[root@master \~\]# **docker images\|while read i t _;do** **\[\[ "${t}" == "TAG" \]\] \&\& continue** **\[\[ "${i}" =\~ \^"harbor:443/".+ \]\] \&\& continue** **docker tag ${i}:${t} harbor:443/k8s/${i##\*/}:${t}** **docker push harbor:443/k8s/${i##\*/}:${t}** **docker rmi ${i}:${t} harbor:443/k8s/${i##\*/}:${t}** **done** ##### 6、设置 Tab 键 \[root@master \~\]# **source \<(kubeadm completion bash\|tee** **/etc/bash_completion.d/kubeadm)** \[root@master \~\]# **source \<(kubectl completion bash\|tee /etc/bash_completion.d/kubectl)** ##### 7、master 安装 \[root@master \~\]# **vim /root/init/init.yaml** > 13: advertiseAddress: 192.168.88.50 # 测试系统环境 \[root@master \~\]# **kubeadm init --config=init/init.yaml --dry-run 2\>error.log** \[root@master \~\]# **cat error.log** # 主控节点初始化 \[root@master \~\]# **rm -rf error.log /etc/kubernetes/tmp** \[root@master \~\]# **kubeadm init --config=init/init.yaml \|tee init/init.log** # 管理授权 \[root@master \~\]# **mkdir -p $HOME/.kube** \[root@master \~\]# **sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config** \[root@master \~\]# **sudo chown $(id -u):$(id -g) $HOME/.kube/config** # 验证安装结果 \[root@master \~\]# **kubectl get nodes** > NAME STATUS ROLES AGE VERSION > > master NotReady control-plane 19s v1.29.2 #### 安装网络插件 **kubernetes/plugins 目录到 master** **`rsync -av kubernetes/plugins 192.168.88.50:/root/`** ##### 上传镜像 \[root@master \~\]# **cd plugins/calico** \[root@master calico\]# **docker load -i calico.tar.xz** #calico插件镜像需下载可翻墙官方源下载 \[root@master calico\]# **docker images\|while read i t _;do** **\[\[ "${t}" == "TAG" \]\] \&\& continue** **\[\[ "${i}" =\~ \^"harbor:443/".+ \]\] \&\& continue** **docker tag ${i}:${t} harbor:443/plugins/${i##\*/}:${t}** **docker push harbor:443/plugins/${i##\*/}:${t}** **docker rmi ${i}:${t} harbor:443/plugins/${i##\*/}:${t}** **done** ##### 安装 calico \[root@master calico\]# **sed -ri 's,\^(\\s\*image: )(.\*/)?(.+),\\1harbor:443/plugins/\\3,' calico.yaml** > 4642: image: docker.io/calico/cni:v3.26.4 > > 4670: image: docker.io/calico/cni:v3.26.4 > > 4713: image: docker.io/calico/node:v3.26.4 > > 4739: image: docker.io/calico/node:v3.26.4 > > 4956: image: docker.io/calico/kube-controllers:v3.26.4 \[root@master calico\]# **kubectl apply -f calico.yaml** \[root@master calico\]# kubectl get nodes > NAME STATUS ROLES AGE VERSION > > master Ready control-plane 23m v1.29.2 #### 安装计算节点 ##### 1、获取凭证 # 查看 token \[root@master \~\]# kubeadm token list > TOKEN TTL EXPIRES > > abcdef.0123456789abcdef 23h 2022-04-12T14:04:34Z # 删除 token \[root@master \~\]# kubeadm token delete abcdef.0123456789abcdef > bootstrap token "abcdef" deleted # 创建 token 并记录返回的命令 \[root@master \~\]# **kubeadm token create --ttl=0 --print-join-command** > kubeadm join \ --token \<......\> --discovery-token-ca-cert-hash \ # 获取 hash 值 \[1、在创建 token 时候显示 2、使用 openssl 计算

root@master \~\]# **openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt \|openssl rsa -pubin -outform der \|openssl dgst -sha256 -hex** ##### 2、node 安装 \[root@node \~\]# 控制节点(安装步骤 2) \[root@node \~\]# 控制节点(安装步骤 3) \[root@node \~\]# 控制节点(安装步骤 4) \[root@node \~\]#**kubeadm join 192.168.88.50:6443 --token \<你的token\> --discovery-token-ca-cert-hash sha256:\** #------------------------ 在 master 节点上验证--------------------------- \[root@master \~\]# kubectl get nodes > NAME STATUS ROLES AGE VERSION > > master Ready control-plane 76m v1.29.2 > > node-0001 Ready \ 61s v1.29.2 ##### 查看集群状态 # 验证节点工作状态 \[root@master \~\]# kubectl get nodes > NAME STATUS ROLES AGE VERSION > > master Ready control-plane 99m v1.29.2 > > node-0001 Ready \ 23m v1.29.2 > > node-0002 Ready \ 57s v1.29.2 > > node-0003 Ready \ 57s v1.29.2 # 验证容器工作状态 \[root@master \~\]# **kubectl -n kube-system get pods** > NAME READY STATUS RESTARTS AGE > > calico-kube-controllers-fc945b5f7-p4xnj 1/1 Running 0 77m > > calico-node-6s8k2 1/1 Running 0 59s > > calico-node-bxwdd 1/1 Running 0 59s > > calico-node-d5g6x 1/1 Running 0 77m > > calico-node-sjngw 1/1 Running 0 24m > > coredns-844c6bb88b-89lzt 1/1 Running 0 59m > > coredns-844c6bb88b-qpbvk 1/1 Running 0 59m > > etcd-master 1/1 Running 0 70m > > kube-apiserver-master 1/1 Running 0 70m > > kube-controller-manager-master 1/1 Running 0 70m > > kube-proxy-5xjzw 1/1 Running 0 59s > > kube-proxy-9mbh5 1/1 Running 0 59s > > kube-proxy-g2pmp 1/1 Running 0 99m > > kube-proxy-l7lpk 1/1 Running 0 24m > > kube-scheduler-master 1/1 Running 0 70m

相关推荐
峰顶听歌的鲸鱼2 小时前
Kubernetes核心概述
运维·笔记·云原生·容器·kubernetes·云计算
Leo July2 小时前
Docker全解析:从入门到企业级实战
运维·docker·容器
江湖有缘2 小时前
PicoShare + Docker 实战:打造极简自托管文件分享系统
运维·docker·容器
kft13142 小时前
SkyWalking10.3.0-性能监控管理工具部署教程-Docker模式(二)-保姆级教程
运维·docker·容器
深入技术了解原理3 小时前
eureka-client依赖爆红无法下载
spring cloud·云原生·eureka
等风来不如迎风去3 小时前
【docker】ubuntu空间不够了,删除ragflow
ubuntu·docker·容器
weixin_462446233 小时前
一台电脑模拟多节点 Kubernetes 集群:Kind 实战教程(含 Nginx 测试)
nginx·kubernetes·kind
hanyi_qwe3 小时前
Pod控制器与配置资源管理 【K8S (七)】
容器·kubernetes
牛奶咖啡133 小时前
Prometheus+Grafana构建云原生分布式监控系统(四)
云原生·grafana·prometheus·redis_exporter·监控redis数据库·redis需要监控的重要指标·redis监控可视化