项目环境搭建【Docker+k8s】十 || kubernetes资源配置运行容器

目录

  • 部署Deployment
  • 部署Service

经过上文的创建文件测试可以感受到,通过run命令启动容器非常麻烦。其中docker提供了compose解决了这个问题,而kubernetes使用kubectl create命令就可以做到和compose一样的效果,该命令可以通过配置文件快速创建一个集群资源对象。

部署Deployment

创建一个名为nginx-deployment.yml的配置文件,以创建nginx服务为例进行说明

注意:各版本配置文件内容有所不同,具体请参照官方文档
(例:v1.15版本apiVersion为extensions/v1beta1,在v1.16在这个版本中Deployment已经从extensions/v1beta1 弃用,更改为apps/v1)。

#API 版本号
apiVersion: apps/v1
#类型,如:Pod/ReplicationController/Deployment/Service/Ingress
kind: Deployment
#元数据
metadata:
  #Kind 的名称
  name: nginx-app
spec:
  selector: #定义标签选择器
    matchLabels:
      app: nginx
  #部署的实例数量
  replicas: 2
  template:
    metadata:
      labels:
        #容器标签的名字,发布 Service 时,selector 需要和这里对应
        app: nginx
    spec:
      #配置容器,数组类型,说明可以配置多个容器
      containers:
      #容器名称
      - name: nginx
        #容器镜像,不能使用latest
        image: nginx:1.17
        imagePullPolicy: IfNotPresent
        #暴露端口
        ports:
        #Pod 端口
        - containerPort: 80

镜像拉取策略,支持三种ImagePullPolicy:

  • Always:不管镜像是否存在都会进行一次拉取
  • Never:不管镜像是否存在都不会进行拉取
  • IfNotPresent:只有镜像不存在时才会拉取镜像

注意:

  • 默认为IfNotPresent,而latest标签的镜像默认为Always
  • 拉取镜像时docker会进行校验,如果镜像中的MD5没有变化,则不会拉取镜像数据
  • 生产环境中应该避免使用latest标签,而开发环境可以借助latest标签自动拉取最新的镜像

创建资源对象

[[email protected] service]# kubectl create -f nginx-deployment.yml
#输出如下:
deployment.apps/nginx-app created
#查看Pods状态
[[email protected] service]# kubectl get pods
NAME                         READY   STATUS    RESTARTS   AGE
nginx-app-798dcc9989-vs862   1/1     Running   0          3m47s
nginx-app-798dcc9989-xzg4x   1/1     Running   0          3m47s
#查看已部署的服务
[[email protected] service]# kubectl get deployment
NAME        READY   UP-TO-DATE   AVAILABLE   AGE
nginx-app   2/2     2            2           4m20s
#查看已发布的服务
[[email protected] service]# kubectl get service
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   12h

部署Service

以上配置仅部署了服务,还未运行容器,因此,需要发布服务配置。先停止上一步部署的Deployment

[[email protected] service]# kubectl delete -f nginx-deployment.yml
#输出如下:
deployment.apps "nginx-app" deleted

创建一个名为nginx.yml的配置文件,完整配置内容如下:

#API 版本号
apiVersion: apps/v1
#类型,如:Pod/ReplicationController/Deployment/Service/Ingress
kind: Deployment
#元数据
metadata:
  #Kind 的名称
  name: nginx-app
spec:
  selector: #定义标签选择器
    matchLabels:
      app: nginx
  #部署的实例数量
  replicas: 2
  template:
    metadata:
      labels:
        #容器标签的名字,发布 Service 时,selector 需要和这里对应
        app: nginx
    spec:
      #配置容器,数组类型,说明可以配置多个容器
      containers:
      #容器名称
      - name: nginx
        #容器镜像,不能使用latest
        image: nginx:1.17
        imagePullPolicy: IfNotPresent
        #暴露端口
        ports:
        #Pod 端口
        - containerPort: 80
 ---
apiVersion: v1
kind: Service #指明资源类型是 service
metadata: #元数据
  name: nginx-http #kind的名称
spec:
  ports:
  - port: 80 #service暴露的端口
    targetPort: 80 #pod上的端口,将service暴露的短句转发到pod端口上
  type: LoadBalancer
  selector:
    app: nginx #需要和上面部署的deployment标签名对应

创建资源对象

[[email protected] service]# kubectl create -f nginx.yml
#输出如下
deployment.apps/nginx-app created
service/nginx-http created
#查看已发布的服务
[[email protected] service]# kubectl get service
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP        13h
nginx-http   LoadBalancer   10.106.43.210   <pending>     80:30665/TCP   93s

由上可知,服务暴露端口为30665,在node节点进行验证服务是否启动成功。
分别访问node-01节点(192.168.101.31:30665)和node-02节点(192.168.101.32:30665),能正常访问nginx说明启动服务成功。

删除服务

[[email protected] ~]# kubectl delete -f nginx.yml
#输出如下:
deployment.apps "nginx-app" deleted
service "nginx-http" deleted

原文地址:https://www.cnblogs.com/kevin-ying/p/12360586.html

时间: 2024-10-09 16:03:37

项目环境搭建【Docker+k8s】十 || kubernetes资源配置运行容器的相关文章

Django项目: 项目环境搭建 ---- 一、创建django项目

项目环境搭建 一.创建django项目 1.创建python虚拟环境 在虚拟机上创建python虚拟环境,因为实际项目部署,实在linux mkvirtualenv -p /usr/bin/python3.6 tzproject 2.创建django项目 1.安装django 选择安装django2.1.x最新的一个版本2.1.10 pip install django==2.1.10 2.创建django项目 cd ~/project/ # cd到你想放django项目路径的地方 django

Vue项目环境搭建

Vue项目环境搭建 """ node ~~ python:node是用c++编写用来运行js代码的 npm(cnpm) ~~ pip:npm是一个终端应用商城,可以换国内源cnpm vue ~~ django:vue是用来搭建vue前端项目的 ? 1) 安装node 官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/ ? 2) 换源安装cnpm >: npm install -g cnpm --registry=https://registr

路飞项目环境搭建

目录 路飞项目环境搭建: pip 换源: 虚拟环境的搭建: 终端工作的命令: 路飞项目环境搭建: pip 换源: # 永久配置(windows) 1.文件管理器文件路径地址栏敲:%APPDATA% 回车,快速进入 C:\Users\电脑用户\AppData\Roaming 文件夹中 2.新建 pip 文件夹并在文件夹中新建 pip.ini 配置文件 3.新增 pip.ini 配置文件内容 # pip.ini 配置文件: [global] index-url = http://pypi.douba

项目环境搭建【Docker+k8s】九 || kubernetes创建容器

目录 创建容器 查看全部Pods状态 查看已部署的服务 发布服务 查看已发布的服务 查看服务详情 验证是否成功 停止服务 创建容器 命令中--replicas=2 启动2个实例,--port=80 运行在k8s的80端口上,没有进行映射端口 [[email protected] ~]# kubectl run nginx --image=nginx --replicas=2 --port=80 #输出如下: kubectl run --generator=deployment/apps.v1 i

各种Java项目环境搭建-文档引用汇总记录

springmvc环境搭建 1.如何用Maven创建web项目(具体步骤) 2.springmvc环境搭建,一步一步超简单

vue项目环境搭建(webpack4从零搭建)--仅个人记录

一.nodejs环境搭建 首先需要下载node.js(推荐直接官网找最新的版本),下载完成后会自带npm包管理工具,打开cmd命令行界面,输入npm -v .node -v检查node.js与npm是否安装成功.(安装成功会显示版本号) 如果下载太慢的话可以把npm换成国内淘宝镜像cnpm:(个人推荐直接使用npm,之前有使用cnpm在下载一些模块时出现版本对应不上) npm install -g cnpm --registry=https://registry.npm.taobao.org 二

maven-Android项目环境搭建

参考:http://blog.csdn.net/earbao/article/details/40741051 android maven环境搭建: 1.Maven的版本要求3.1.1 2.设置ANDROID_HOME环境变量:ANDROID_HOME=C:\Android\android-sdk-windows 3.在Path环境变量里面加入:%ANDROID_HOME%\tools; %ANDROID_HOME%\platform-tools 4.打开SDK Manager, 要完整安装an

阿里云Ubuntu环境搭建Docker服务

经过昨天和今天的不断奋战,在阿里云里面搭建Docker并不容易.所以我觉得有必要记录下来,以供后人学习.以及我自己的回顾. 首先,查看我们的系统版本: cat /etc/issue 的到的输出是 Ubuntu 12.04.1 LTS \n \l 我们顺便看一下内核版本,因为Docker需要在3.8以上运行. uname -r 可以得到你的内核版本,我因为要装docker,所以按照docker官网的步骤升级了内核,所以输出是: 3.8.0-44-generic docker 的Ubuntu安装说明

Docker环境搭建Jenkins+gitlab+maven自动打包 部署容器

宿主机安装docker(省略) 宿主机安装maven 下载二进制包解压到/var/docker_data/jenkins/jenkins_home下面 https://maven.apache.org/download.cgi Jenkins镜像安装 下载Jenkins镜像(一般都是Ubuntu版) FROM jenkins USER root #清除了基础镜像设置的源,切换成腾讯云的jessie源 #使用非腾讯云环境的需要将 tencentyun 改为 aliyun RUN echo '' >