K8s-kebeadm

一小时轻松部署 Kubernetes 高可用集群
1 云原生
云计算是指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的资源。提供资源的网
络被称为“云”。 “云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付
费。意味着计算能力也可以作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉。
云原生即天生是为了云环境而设计的相关技术
云原生的代表技术包括: 微服务、容器、服务网格、不可变基础设施和声明式API。
CNCF Cloud Native Computing Foundation,云原生计算基金会,它致力于云原生(Cloud Native)技
术的普及和可持续发展
CNCF 当前包含著名的项目有 Containerd、Kubernetes、Prometheus 、Etcd、Harbor、CoreDNS等
2 Kubernetes 集群架构
2.1 Kubernetes 的主机节点类型
Master: 管理(控制)节点,相当于公司的管理层
Master 节点主要由 API Server 、Controller-Manager 和Scheduler 三个组件,以及一个用于存储
集群状态的 Etcd存储服务组成
Node (Worker): 工作worker节点,相当于公司具体完成工作的基层员工
Node节点则主要包含 Kubelet 、Kube Proxy 及容器运行时( 当前docker 仍是最为常用的实现)
三个组件,它们承载运行各类应用容器
2.2 Kubernetes 集群网络模型
三个网络功能
节点网络
集群主机节点间的通信网络,并负责打通与集群外部端点间的通信
Pod网络
为集群上的Pod对象提供的网络
每个pod 从此网络动态获取地址,且每次重启pod后IP地址可能会变化
需要经由CNI网络插件实现,例如Flannel、Calico、Cilium等
Service网络
主要用于解决 pod 使用动态地址问题
3 Kubernetes 集群组件
kubernetes组件分成三种
Control Plane Components 控制平台组件: master主机
API Server
Controller-Manager
Scheduler
Etcd
Node Components 节点组件
Kubelet
Kube Proxy
Docker
Addons 附件
flannel
CoreDNS
4 Kubernetes集群高可用架构部署
4.1 Kubernetes 高可用集群部署架构
IP 主机名 角色
10.0.0.101 master1.magedu.org K8s 集群主节点 1,Master和etcd
10.0.0.102 master2.magedu.org K8s 集群主节点 2,Master和etcd
10.0.0.103 master3.magedu.org K8s 集群主节点 3,Master和etcd
10.0.0.104 node1.magedu.org K8s 集群工作节点 1
10.0.0.105 node2.magedu.org K8s 集群工作节点 2
10.0.0.106 node3.magedu.org K8s 集群工作节点 3
10.0.0.107 ha1.magedu.org K8s 主节点访问入口 1,提供高可用及负载均衡
10.0.0.108 ha2.magedu.org K8s 主节点访问入口 2,提供高可用及负载均衡
10.0.0.109 harbor.magedu.org 容器镜像仓库
10.0.0.100 k8s.magedu.org VIP,在ha1和ha2主机实现
4.2 Kubernetes集群部署流程说明
每个节点主机的初始环境准备
准备代理服务,以便访问k8s.gcr.io,或根据部署过程提示的方法获取相应的Image
Kubernetes集群API访问入口的高可用和harbor(可选)
在所有Master和Node节点都安装容器运行时,实际Kubernetes只使用其中的Containerd
在所有Master和Node节点安装kubeadm 、kubelet、kubectl(在node节点可不安装)
在第一个 master 节点运行 kubeadm init 初始化命令 ,并验证 master 节点状态
在第一个 master 节点安装配置网络插件
在其它master节点运行kubeadm join 命令加入到控制平面集群中(测试环境可选)
在所有 node 节点使用 kubeadm join 命令加入集群 , 并验证 node 节点状态
创建 pod 并启动容器测试访问 ,并测试网络通信
4.3 Kubernetes集群部署流程
4.3.1 初始化
硬件准备环境: 每个主机至少2G以上内存,CPU2核以上
操作系统: 最小化安装支持Kubernetes的Linux系统
所有节点实现基于 ssh key 验证(可选)
唯一的主机名,MAC地址以及product_uuid和主机名解析
保证各个节点网络配置正确,并且保证通信正常
禁用 swap
禁用 SELinux
放行Kubernetes使用到的相关端口或禁用firewalld/iptables
配置正确的时区和时间同步
内核参数优化
[root@ubuntu2004 ~]#hostnamectl set-hostname master1.magedu.org [root@ubuntu2004 ~]#sed -i ‘s/10.0.0.20/10.0.0.10/’ /etc/netplan/01-netcfg.yaml ~# cat >> /etc/hosts <<EOF 10.0.0.100 k8s k8s.magedu.org 10.0.0.101 master1 master1.magedu.org 10.0.0.102 master2 master2.magedu.org 10.0.0.103 master3 master3.magedu.org 10.0.0.104 node1 node1.magedu.org 10.0.0.105 node2 node2.magedu.org 10.0.0.106 node3 node3.magedu.org 10.0.0.107 ha1 ha1.magedu.org 10.0.0.108 ha2 ha2.magedu.org 10.0.0.109 harbor harbor.magedu.org EOF [root@ubuntu2004 ~]#sed -i ‘/swap/s/^/#/’ /etc/fstab;swapoff -a [root@ubuntu2004 ~]#timedatectl set-timezone Asia/Shanghai
4.3.2 部署 harbor 仓库和高可用反

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将正在 k8s-node1 节点上运行的名为 apache-pod 的 pod 扩容到 k8s-node2 节点,并同时在这两个节点上运行 pod,请按照以下步骤操作: 1. 创建一个 deployment,指定 pod 的副本数为 2,并使用 nodeSelector 将这两个 pod 分别调度到 k8s-node1 和 k8s-node2 节点上。可以使用以下 YAML 文件创建 deployment: ``` apiVersion: apps/v1 kind: Deployment metadata: name: apache-pod spec: replicas: 2 selector: matchLabels: app: apache-pod template: metadata: labels: app: apache-pod spec: nodeSelector: kubernetes.io/hostname: k8s-node1 containers: - name: apache-container image: httpd:latest ports: - containerPort: 80 ``` 在这个 YAML 文件中,我们使用 nodeSelector 将第一个 pod 调度到 k8s-node1 节点上,第二个 pod 调度到 k8s-node2 节点上。注意,我们在 template.spec.containers 中指定了容器的镜像和端口号,这里使用的是 httpd 镜像,端口号是 80。 2. 使用 kubectl apply 命令应用这个 YAML 文件: ``` kubectl apply -f deployment.yaml ``` 3. 使用 kubectl get pods 命令检查 pod 状态,确认这两个 pod 都在运行: ``` kubectl get pods -o wide ``` 在输出中,你会看到两个 apache-pod 的副本都在运行,其中一个在 k8s-node1 节点上,另一个在 k8s-node2 节点上。 需要注意的是,使用 nodeSelector 指定 pod 调度到特定节点上可能会降低集群的灵活性,因为这样做会使节点的资源分配不均衡。如果你的集群中有多个节点,最好使用 Kubernetes 的调度器来自动地将 pod 调度到空闲节点上。你可以使用 nodeAffinity 和 podAntiAffinity 等特性来控制 pod 的调度行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值