k8s如何创建一个容器,又是如何部署到node上

 

1、运维人员通过与apiserver进行交互(kubectl),说我现在要创建一个容器了,然后将这话写入etcd。

2、controller-manager 通过 list-watch 机制监视运维人员与apiserver的交互,知道了创建方法,创建内容,然后写入etcd

3、kubelet每隔一段时间将自己node上有多少个pod告诉给apiserver

4、scheduler与apisever交流,知道了node上存在的pod。

5、scheduler也是通过list-watch机制发现了apiserver创建了一个容器,现在要将它调度到node节点上(通过调度规则),然后写入etcd

6、kubelet (通过跟apiserver交互 )调用 Docker API 创建并启动 pod

7、kube-proxy 为新创建的 pod 注册动态 DNS 到 CoreOS。给 pod 的 service 添加 iptables/ipvs 规则,用于服务发现和负载均衡

### Kubernetes自动化部署环境搭建最佳实践 #### 1. 环境概述 Kubernetes(简称 K8s)是一种开源容器编排平台,能够帮助开发者高效管理和扩展基于容器的应用程序。通过结合 Jenkins、Docker 和 Spring Boot 技术栈,可以实现一套完整的 CI/CD 流程[^1]。 #### 2. 工具链介绍 - **Spring Boot**: 提供轻量级框架支持快速开发微服务应用。 - **Jenkins**: 实现持续集成和交付的核心工具,负责监控代码变更并触发构建过程。 - **Docker**: 容器技术用于打包应用程序及其依赖项到统一镜像中以便于分发运行。 - **Kubernetes (K8s)**: 负责调度管理这些容器实例,在生产环境中提供高可用性和弹性伸缩能力。 #### 3. 步骤详解 ##### (1)Git/SVN仓库配置 将项目源码托管至 Git 或 SVN 远程版本控制系统上,并设置 Webhook 功能通知下游CI服务器有新的提交到来时启动相应动作[^1]。 ##### (2)Jenkins流水线定义 创建一个多阶段Pipeline Job来描述整个软件开发生命周期内的各个操作环节,包括但不限于单元测试执行、静态代码分析以及最终制品发布等任务。利用插件机制连接外部资源比如Maven Central Repository或者Nexus私库获取第三方组件;同时也要确保安全凭证妥善保管以免泄露敏感数据给未经授权人员访问[^1]。 ##### (3)Dockerfile编写与镜像制作 针对具体业务场景定制专属的基础映像文件即 Dockerfile ,其中应明确规定基础OS层面上的选择依据实际需求而定(如Alpine Linux因其体积小巧常被选用),还有就是安装必要的运行期依赖包列表以及复制目标war/jar文件进去指定目录位置形成完整的工作负载载体形式待后续加载入orchestrator引擎内部作进一步安排处置之用处[^1]。 ##### (4)Kubernetes资源配置 设计YAML格式声明式的API对象文档用来精确表达期望状态下的Pod布局结构详情信息例如ReplicaSet数量大小设定值是多少?Service Type选取ClusterIP还是NodePort亦或是LoadBalancer类型呢? Ingress规则又是怎样匹配路径请求转发流量走向特定Backend Service端口监听地址上的等等诸多细节均需在此部分予以明确阐述说明清楚无误才行哦!另外考虑到跨地域多活数据中心之间可能存在的延迟影响因素,则有必要引入Headless Services概念配合StatefulSets一起工作从而达成更优解方案效果[^2]。 ##### (5)Shell脚本辅助运维 鉴于某些特殊情况下手动干预不可避免的事实存在,预先准备好一系列常用维护命令集合封装成易于调用的形式——Bash Script不失为一种明智之举。这样不仅可以提高工作效率减少重复劳动成本支出,而且还能有效规避人为失误带来的风险隐患问题出现几率大大降低不少呢[^2]! #### 4. 注意事项 - 硬件规格满足最低门槛要求:每台机器至少配备两颗CPU核心数以上外加不少于两千兆字节内存容量可供支配使用才勉强够资格参与进来组建小型实验性质的POC验证环境试玩一下看看感觉如何吧😊; - 所有的节点设备间必须保持良好的通信质量状况良好才能正常运作起来发挥预期作用功效最大化体现出来哟~; - 推荐采用主流发行版Linux系统作为宿主机操作系统底层支撑平台更加稳定可靠值得信赖哈~比如说CentOS7.x系列版本就很不错👍。 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: springboot-app-deployment spec: replicas: 3 selector: matchLabels: app: springboot-example template: metadata: labels: app: springboot-example spec: containers: - name: springboot-container image: your-docker-repo/springboot-image:latest ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: springboot-service spec: type: LoadBalancer ports: - port: 80 targetPort: 8080 selector: app: springboot-example ``` 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值