Kubernetes部署教程

本文详细介绍了Kubernetes中Deployment的创建流程,从定义IP、设置环境变量,到Kubectl与kube-apiserver交互,再到ReplicaSet、Pod的管理,以及kube-scheduler和kubelet的角色。此外,还提到了手动添加标签的方法以及Kubernetes日志管理的参数选项。
摘要由CSDN通过智能技术生成

640?wx_fmt=jpeg

对于Kubernetes部署,有两种基本的方法:使用一条条的kubectl执行命令,或者编写声明清单,再使用kubectl应用工具执行。前者有利于学习和与Kubernetes的交互实验(类似于编程语言的REPL);后者适合于可重现重用的快速部署。例如在生产环境中,您可能仍然会使用一条条的kubectl命令来做调试。
前提条件

640?wx_fmt=png


本教程假设您已经具有了可访问的Kubernetes集群环境。现在,您可以轻松地在您的机器上运行一个单节点集群,或者在您熟悉的云环境中创建一个多节点集群。并确定您的机器上已经安装并正确配置了kubectl。让如下命令可以成功执行:
 
 
  1. kubectl cluster-info


还需确认您在缺省命名空间内的权限是否足够(可能与缺省命名空间不同)。edit角色权限能够满足实验需求。如果您为本教程创建了一个集群,那么您可能就是管理员。或者让其他人为您准备好环境。
备注:如果您不想用公共的镜像文件,而想自己构建并推送一个自定义的境像。那我们假定您和您的集群是可以访问容器镜像注册器的。同样的,也可以让其他人为您准备好此环境。业界协作比较好的组合环境包括GKE与GCR、AKS与ACR等。另外,DockerHub和Quay也是非常流行的镜像注册器。如果不打算公开自己的容器镜像,则需要在私有的命名空间中,给默认服务帐户配置拉取镜像密钥。
构建和推送

640?wx_fmt=png


不管是采用指令式部署还是声明式部署,都需要有一个容器镜像。(如果您使用现成的镜像,如Nginx镜像,可跳过此部分)。本教程中的一些步骤与后续构建的应用程序有直接关联。同时,也可帮助您学习如何封装应用程序,所以建议您不要忽略此部分。
应教学目的需要,我们将从一个简单的Web应用源代码开始教程。下面是Node.js文档中的一个案例应用代码(或采用您所喜欢的编程语言编写一个类似的应用程序)。将以下的代码复制到一个名为app.js的文件中,并存放在一个空的文件夹下。
 
 
  1. *// app.js

  2. const http = require('http');

  3. const os = require('os');

  4. const ip = '0.0.0.0';

  5. const port = 3000;

  6. const hostname = os.hostname();

  7. const whoami = process.env['WHOAMI'] || 'Anonymous';

  8. const server = http.createServer((req, res) => {

  9. res.statusCode = 200;

  10. res.setHeader('Content-Type', 'text/plain');

  11. res.end(`Hi, I’m ${whoami}, from ${hostname}.\n`);

  12. });

  13. server.listen(port, ip, () => {

  14. console.log(`Server running at http://${ip}:${port}/`);

  15. });*


我们对上述案例代码做了一些调整:
  • 将服务器本机IP定义为0.0.0.0而不是127.0.0.1。因为后者仅仅适用于IP回路寻址。而这段程序需监听来自一个集群IP的请求(由0.0.0.0捕获请求)。

  • 将“Hello World”消息分拆为2个变量:主机名,提供请求响应的一个副本节点的标识;WHOAMI环境变量,在部署时设定,默认值为“Anonymous”。


如果您已经安装了Node.js,那可以通过以下命令进行代码的本地测试:
 
 
  1. node app.js # 打开链接 http://localhost:3000测试


备注:如果您在自己的Kubernetes集群环境进行测试,无需担心TLS终端和授权问题,因为这个应用可以在集群的边界运行,例如Ambassador。如果您采用Zero-trust,这段代码可以运行在Istio之类服务网格集群的微服务内。

接下来将应用打包成一个Docker镜像。复制如下代码,保存为Dockerfile的文件:
 
 
  1. # Dockerfile

  2. FROM node:8

  3. COPY app.js .

  4. ENTRYPOINT [“node”, app.js”]


在文件所在目录下,执行命令:
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值