前言 k8s全称kubernetes,是一个开源的容器编排引擎,用来对容器化应用进行自动化部署、 扩缩和管理。该项目托管在 CNCF。目前k8s已经成为发展最快、市场占有率最高的容器编排引擎产品,越来越多企业正在拥抱k8s,推动微服务、容器等热门技术的普及和落地。 对于 k8s这项平台级技术,覆盖的技术范围非常广,包括了计算、网络、存储、高可用、监控、日志管理等多个方面。越是门槛高的知识,就越需要搭建一个最小可用系统,先把玩起来,快速了解基本概念、功能和使用场景,建立起对学习对象的感性认识。如果直接上来就学习理论知识和概念,很容易从入门到放弃。 0. 目录 1. k8s基础知识 2. 部署环境 3. CentOS初始化配置 4. Master节点配置 5. Worker节点配置 6. 使用k8s部署应用 7. 后记 8. 参考文献 1. k8s基础知识 k8s集群是主从分布式架构,由Master Node和Worker Node组成,节点上运行着k8s组件服务。 Master 是 Cluster 的大脑,主要职责是调度,运行的 k8s 组件有kube-apiserver、kube-scheduler、kube-controller-manager、etcd 和 Pod 网络(例如 flannel)。可以同时运行多个 Master实现高可用。 API Server(kube-apiserver):提供 HTTP/HTTPS RESTful API,实现认证、授权、访问控制、API注册和发现等功能,各种客户端工具(CLI 或 UI)以及 k8s 其他组件可以通过它管理 Cluster 资源。 Scheduler(kube-scheduler):负责决定将 Pod 放在哪个 Node 上运行。Scheduler 在调度时会充分考虑 Cluster 的拓扑结构、当前各个节点的负载以及应用对高可用、性能、数据亲和性的需求。 Controller Manager(kube-controller-manager):负责管理 Cluster 各种资源,保证资源处于预期的状态。Controller Manager 由多种 controller 组成,包括 replication controller、endpoints controller、namespace controller、serviceaccounts controller 等。不同的 controller 管理不同的资源。例如 replication controller 管理 Deployment、StatefulSet、DaemonSet 的生命周期,namespace controller 管理 Namespace 资源。 etcd :负责保存 Cluster 的配置信息和各种资源的状态信息。当数据发生变化时,etcd 会快速地通知 k8s相关组件。 Pod 网络:Pod 是 k8s的最小工作单元。每个 Pod 包含一个或多个容器。Pod 中的容器会作为一个整体被 Master 调度到一个 Worker上运行。Pod 要能够相互通信,Cluster 必须部署 Pod 网络,flannel 是其中一个可选方案。 Worker是 Pod 运行的地方,k8s 支持 Docker、rkt 等容器 Runtime。Worker上运行的组件有 kubelet、kube-proxy 和 Pod 网络。Worker 由 Master 管理,负责监控并向Master汇报容器的状态,并根据 Master 的要求管理容器的生命周期。 kubelet:是 Worker的 agent,当 Scheduler 确定在某个 Worker上运行 Pod 后,会将 Pod 的具体配置信息(image、volume 等)发送给该节点的 kubelet,kubelet 根据这些信息创建和运行容器,并向 Master 报告运行状态。 kube-proxy:service 在逻辑上代表了后端的多个 Pod,外界通过 service 访问 Pod。service 接收到的请求是如何转发到 Pod 的呢?这就是 kube-proxy 要完成的工作。每个 Worker都会运行 kube-proxy 服务,负责将访问 service 的 TCP/UPD 数据流转发到后端的容器。如果有多个副本,kube-proxy 会实现负载均衡。 2. 部署环境 本次实验将搭建一个包含1个Master 节点 + 2个Worker 节点的k8s集群环境。 操作系统版本:CentOS 7.9 k8s版本:1.20.15 docker版本:19.3.5 主机名 ip k8s-master 10.10.10.128 k8s-worker1 10.10.10.131 k8s-worker2 10.10.10.132 3. CentOS初始化配置 TIPS:本次实验准备了3台CentOS 虚拟机,为了减少重复劳动,可以先初始化配置好一台虚拟机,再克隆出另外两台虚拟机(记得要修改IP)。 (1)更新yum源(非必须) yum update -y (2)配置网络 cd /etc/sysconfig/network-scripts/ # 进入网络配置目录 vim ifcfg-ens36 # 编辑对应网卡的配置文件,我的环境是ens36 # 修改网卡配置文件内容如下所示 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static # BOOTPROTO的值由dhcp改为static,设为静态IP DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens36 DEVICE=ens36 ONBOOT=yes # ONBOOT的值由no改为yes IPADDR=10.10.10.128 NETMASK=255.255.255.0 GATEWAY=10.10.10.2 # 设置网关,就可以过NAT形式上外网 DNS1=10.10.10.2 ZONE=public PREFIX=24 service network restart # 重启网络服务使新配置生效 (3)修改主机名 hostnamectl set-hostname k8s-master # 修改主机名,重新打开终端即可看到主机名已修改成功 # 采取类似方法修改两台worker节点的主机名 hostnamectl set-hostname k8s-worker1 # 修改10.10.10.131的主机名 hostnamectl set-hostname k8s-worker2 # 修改10.10.10.132的主机名 (4)配置hosts vim /etc/hosts # 添加以下3行 10.10.10.128 k8s-master 10.10.10.131 k8s-worker1 10.10.10.132 k8s-worker2 (5)关闭主机防火墙 systemctl stop firewalld # 关闭防火墙 systemctl disable firewalld # 禁用开机自启动 (6)关闭selinux [root@localhost ~]# getenforce # 查看selinux状态 Enforcing # selinux未关闭 [root@localhost ~]# setenforce 0 # 临时关闭selinux [root@localhost ~]# getenforce # 查看selinux状态 Permissive # selinux已关闭 #永久关闭selinux的方法 vim /etc/sysconfig/selinux 将SELINUX=enforcing 替换为SELINUX=disabled,需重启主机 (7)关闭swap # 临时关闭 swapoff -a # 永久关闭swap vim /etc/fstab 注释掉最后一行关于swap的配置 (8)将桥接的IPv4流量传递到iptables的链 touch /etc/sysctl.d/k8s.conf # k8s.conf文件原来不存在,需要新建 vim /etc/sysctl.d/k8s.conf # 添加下面4行 net.bridge.bridge-nf-call-ip6tables=1 net.bridge.bridge-nf-call-iptables=1 net.ipv4.ip_forward=1 vm.swappiness=0 sysctl --system # 加载系统参数,使配置生效 (9)安装docker rpm -qa | grep docker # 查看是否已安装docker组件 yum remove docker docker-common docker-client # 如已安装,则卸载旧版docker相关组件 yum install -y yum-utils #安装yum-utils,提供yum-config-manager命令 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #添加阿里云的yum源,便于快速下载docker yum list docker-ce --showduplicates | sort -r #查看可获取的docker版本 yum install -y docker-ce-19.03.5 docker-ce-cli-19.03.5 containerd.io # 安装指定版本的docker,这里选择19.03.5 systemctl enable docker # 设置开机自启动 systemctl start docker # 启动docker服务 systemctl status docker # 查看docker服务状态 (10)安装k8s 添加阿里云yum源,便于快速下载k8s cat
北京最值得去的地方之凤凰中心终于去了一直想去的凤凰中心,真是惊艳,这里是著名的凤凰卫视所在地,总建筑面积6。5万平方米,建筑高度55米。除了办公和演播制作功能之外,开放了部分空间可以体验参观。凤凰中心本着绿色人死后去了什么地方,人死后仍会有意识,大脑会继续运行?有这样的一句话,人终究有一死,无论你是贫穷富贵,都无法摆脱这个结局,的确也是这样的。人的生命与地球其他生命一样,有生就有死,这样的变化从未改变过。死亡意味着生命终止,停止生存,是生国际空间站补上最后一个漏气点此前据俄罗斯今日俄罗斯(RT)电视台网站报道,2021年11月26日,俄罗斯联邦航天局公布了2018年8月联盟MS09飞船轨道舱漏气事件的调查报告,认为飞船上的钻孔是美国宇航员塞丽恒大足球时代彻底落幕,广州队迎来新主人,八冠王辉煌能否继续亲情提示亲爱的读者,如何能每天能读到这样的体育资讯呢?点击右上角的关注按钮即可,您的关注将是我创作的最大动力!回顾过去的一年,对于中国足球而言无疑是充满跌宕起伏的,首先国足在世预赛云南生物多样性数字化百科图谱紫花雪山报春传说有一种报春花夏天才开,没错就是我来源昆明日报掌上春城紫花雪山报春Primulachionantha紫花雪山报春,隶属于被子植物,报春花科,报春花属。多生长于海拔30004400米的高山草地草甸流石滩和杜鹃丛中,国华为P50Pocket云南首发品鉴!60春城先锋女性齐聚掌上春城讯2021年12月23日,她享先锋女性时尚派对暨HUAWEIP50Pocket品鉴会在昆明恒隆广场成功举行,春城时尚达人齐聚,畅玩时尚派对!色彩美学追求极致的HUAWEIP百余家景区将免票或优惠河南省旅游切换至冬游模式白雪覆盖老君山金顶潘跃运摄影洛阳白云山雪景景区供图银基冰雪世界景区供图大宋东京梦华大型实景演出景区供图老君山冬景高均海摄影开栏的话2021年即将进入尾声,回首过去,注定是不平凡的一河南百余家景区有免票或优惠活动来源河南日报网河南百余家景区有免票或优惠活动河南日报客户端记者刘春香实习生崔璨12月27日,行走河南读懂中国河南人游河南推广活动在只有河南戏剧幻城启动。仪式上发布了省内130多家景云南麻粟坡县地雷村,环境优美民风淳朴,真有地雷不要乱跑比较喜欢三线建设那段历史,拍摄过视频,也写过不少文章,反响还不错,引起热议,其中不少友友认为,三线厂的用途不是很大,有资源浪费的嫌疑,这里不做评价,提倡百家争鸣,百花齐放嘛,不过,云南42岁残疾妈妈,欠巨款做试管婴儿,女儿出生后她追悔莫及众所周知,女性是有最佳生育年龄的,一般是在23岁至30岁之间,早几年和晚几年都会对母亲和胎儿产生很大的影响。若早于20岁怀孕,胎儿与尚在发育的母亲抢夺营养,最后两败俱伤,两者营养不云南黑井古镇摄影游记(No。3)进入冬天,连四季如春的滇中地区也开始冷了起来。最要命的是它并不是一直冷,或者一直暖,而是忽冷忽热的,并没有什么规律可言,把人的情绪都搞乱了。所以,黑井游记的第三篇就一直耽搁了下来。