k8s创建资源(1)、

两种创建资源的方法

基于命令的方式:

  1. 简单直观快捷,上手快。
  2. 适合临时测试或实验。

基于配置文件的方式:

  1. 配置文件描述了 What,即应用最终要达到的状态。
  2. 配置文件提供了创建资源的模板,能够重复部署。
  3. 可以像管理代码一样管理部署。
  4. 适合正式的、跨环境的、规模化部署。
  5. 这种方式要求熟悉配置文件的语法,有一定难度。

一,用命令行的方式创建资源

仅接受json格式

配置清单(yml、yaml)

[[email protected] ~]# cd /etc/kubernetes/manifests/
//k8s的yml、yaml文件

1.node01和node02下载nginx镜像

docker pull nginx
//下载nginx镜像

2.master创建Pod控制器(test-web),deployment

[[email protected] ~]# kubectl run test-web --image=nginx --replicas=5
//创建Pod控制器,deployment

3.查看控制器情况

(1)

[[email protected] ~]# kubectl get deployments.
//查看控制器情况

[[email protected] ~]# kubectl get pod --all-namespaces -o wide
//显示pod的节点信息

(2)

[[email protected] ~]# kubectl get namespaces
//查看k8s名称空间

[[email protected] ~]# kubectl describe deployments. test-web
//查看资源详细信息

查看某种资源对象,没有指定名称空间,默认是在default名称空间。可以加上-n选项,查看指定名称空间的资源。

[[email protected] ~]# kubectl get pod -n kube-system 

3.删除test-web控制器

[[email protected] ~]# kubectl delete deployments. test-web 

4.master创建Pod控制器(web),deployment

[[email protected] ~]# kubectl run web --image=nginx --replicas=5

查看一下pod信息

[[email protected] ~]# kubectl get pod -o wide
//查看一下pod的节点信息

[[email protected] ~]# kubectl describe deployments. web
//查看资源详细信息

注意:直接运行创建的deployment资源对象,是经常使用的一个控制器资源类型,除了deployment,还有rc、rs等等pod控制器,deployment是一个高级的pod控制器。

本机测试访问nginx

[[email protected] ~]# curl 10.244.1.7

5.创建service资源类型

[[email protected] ~]# kubectl expose deployment web --name=web-xgp --port=80 --type=NodePort
//创建service资源类型,这里我们设置了映射端口

如果想要外网能够访问服务,可以暴露deployment资源,得到service资源,但svc资源的类型必须为NodePort。

映射端口范围:30000-32767

查看service信息

[[email protected] ~]# kubectl get svc

浏览器测试访问http://192.168.1.21:30493/

二、服务的扩容与缩容

1. 查看控制器信息

[[email protected] ~]# kubectl get deployments. -o wide

2.扩容

[[email protected] ~]# kubectl scale deployment web --replicas=8

查看一下

[[email protected] ~]# kubectl get deployments. -o wide

3.缩容

[[email protected] ~]# kubectl scale deployment web --replicas=4

查看一下

[[email protected] ~]# kubectl get deployments. -o wide

3.通过修改web的yaml文件进行扩容缩容

备份web的yaml文件

[[email protected] ~]# kubectl get deployments. -o yaml > web.yaml

使用edit修改web的yaml文件

[[email protected] ~]# kubectl edit deployments. web 

查看一下

[[email protected] ~]# kubectl get deployments. -o wide

三、服务的升级与回滚

node01和node02下载1.15版本的nginx

[[email protected] ~]# docker pull nginx:1.15

1.master设置服务升级

[[email protected] ~]#  kubectl set image deployment web web=nginx:1.15

查看一下

2.master设置服务回滚

(1)修改配置文件回滚

使用edit修改web的yaml文件

[[email protected] ~]# kubectl edit deployments. web 

查看一下

[[email protected] ~]# kubectl get deployments. -o wide

(2)命令回滚

[[email protected] ~]# kubectl rollout undo deployment web 

注意:只能回滚到上一次操作的状态

四、小实验

实验环境

主机 IP地址 服务
master 192.168.1.21 registry+Deployment
node01 192.168.1.22
node02 192.168.1.23

1.master 基于httpd制作自己的镜像,需要3个版本,v1,v2,v3.并且对应的版本镜像,访问的主目录内容不一样

(1)master下载httpd镜像

[[email protected] ~]# docker pull httpd

(2)编写Dockerfile

[[email protected] xgp]# vim Dockerfile
FROM httpd
COPY index.html /usr/local/apache2/htdocs/index.html

(3)创建测试网页v1

[[email protected] xgp]#echo "<h1>xgp | test-web | httpd:v1<h1>" > index.html

(4)基于Dockerfile创建镜像 web1

[[email protected] xgp]# docker build -t web1 .

(5)创建测试网页v2

[[email protected] xgp]#echo "<h1>xgp | test-web | httpd:v1<h1>" > index.html

(6)基于Dockerfile创建镜像 web2

[[email protected] xgp]# docker build -t web2 .

(7)创建测试网页v3

[[email protected] xgp]# echo "<h1>xgp | test-web | httpd:v3<h1>" > index.html

(8)基于Dockerfile创建镜像 web3

[[email protected] xgp]# docker build -t web3 .

2.master部署私有仓库

(1)master下载registry镜像

[[email protected] ~]# docker pull registry

(2)启动registry

[[email protected] xgp]# docker run -itd --name registry -p 5000:5000 --restart=always registry:latest 

(3)修改docker配置文件,加入私有仓库(三台)

[[email protected] xgp]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.21:5000

(4)重启docker(三台)

[[email protected] xgp]# systemctl daemon-reload
[[email protected] xgp]# systemctl restart docker

3.上传之前创建的三个web镜像到私有仓库

(1)修改镜像标签

[[email protected] xgp]# docker tag web1:latest 192.168.1.21:5000/web1:latest
[[email protected] xgp]# docker tag web2:latest 192.168.1.21:5000/web2:latest
[[email protected] xgp]# docker tag web3:latest 192.168.1.21:5000/web3:latest

(2)将三个web镜像上传到私有仓库

[[email protected] xgp]# docker push  192.168.1.21:5000/web1:latest
[[email protected] xgp]# docker push  192.168.1.21:5000/web2:latest
[[email protected] xgp]# docker push  192.168.1.21:5000/web3:latest 

4.部署一个Deployment资源对象,要求镜像使用上述私有镜像v1版本。6个副本Pod。

[[email protected] xgp]# kubectl run www1 --image=192.168.1.21:5000/web1:latest --replicas=6

查看一下

[[email protected] xgp]# kubectl get pod

5.将上述Deployment暴露一个service资源对象,使外网能否访问服务。

[[email protected] xgp]#  kubectl expose deployment www1 --name=web-xgp --port=80 --type=NodePort

查看一下

[[email protected] xgp]# kubectl get svc

浏览器访问一下

6.将上述Deployment进行扩容和缩容操作,扩容为8个副本Pod,然后缩容为4个副本Pod。

(1)扩容

[[email protected] xgp]# kubectl scale deployment www1 --replicas=8

查看一下

[[email protected] xgp]# kubectl get deployments. -o wide

(2)缩容

修改k8s配置文件

备份web的yaml文件

[[email protected] ~]# kubectl get deployments. -o yaml > www1.yaml

使用edit修改web的yaml文件

[[email protected] ~]# kubectl edit deployments. www1

查看一下

[[email protected] xgp]# kubectl get deployments. -o wide

7.将上述Deployment进行升级与回滚操作,将v1版本,升级到v2版本。

(1)升级版本为web2

[[email protected] ~]# kubectl set image deployment www1 www1=192.168.1.21:5000/web2

本机测试访问

[[email protected] ~]# curl 127.0.0.1:30996
<h1>xgp | test-web | httpd:v2<h1>

浏览器测试访问

(2)回滚版本到web1

<1>修改配置文件回滚

使用edit修改web的yaml文件

[[email protected] ~]# kubectl edit deployments. www1

查看一下

[[email protected] ~]# kubectl get deployments. -o wide

访问一下

<2>命令回滚

[[email protected] ~]# kubectl rollout undo deployment www1

注意:只能回滚到上一次操作的状态

访问一下

____完毕____

原文地址:https://blog.51cto.com/14320361/2464654

时间: 2024-10-08 15:11:45

k8s创建资源(1)、的相关文章

k8s创建资源(2)

一,两种创建资源的方法 1. 基于命令的方式: 简单直观快捷,上手快. 适合临时测试或实验. 2. 基于配置清单的方式: 配置文件描述了 What,即应用最终要达到的状态. 配置文件提供了创建资源的模板,能够重复部署. 可以像管理代码一样管理部署. 适合正式的.跨环境的.规模化部署. 这种方式要求熟悉配置文件的语法,有一定难度. 环境介绍 主机 IP地址 服务 master 192.168.1.21 k8s node01 192.168.1.22 k8s node02 192.168.1.23

k8s 创建资源的两种方式 - 每天5分钟玩转 Docker 容器技术(124)

命令 vs 配置文件 Kubernetes 支持两种方式创建资源: 1. 用 kubectl 命令直接创建,比如: kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2 在命令行中通过参数指定资源的属性. 2. 通过配置文件和 kubectl apply 创建,要完成前面同样的工作,可执行命令: kubectl apply -f nginx.yml nginx.yml 的内容为: 资源的属性写在配置文件中,文件格式为 YAML

创建资源的两种方式

命令 vs 配置文件 Kubernetes 支持两种方式创建资源: 1. 用 kubectl 命令直接创建 kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2 在命令行中通过参数指定资源的属性. 2. 通过配置文件和 kubectl apply 创建 要完成前面同样的工作,可执行命令: [[email protected] k8s]# kubectl apply -f nginx.yaml deployment.extens

k8s核心资源对象& NameSpace(指定版本回滚)

k8s核心的资源对象: Pod:是运行以及调度的原子单位,也就是k8s中最小的资源单位,同一个pod可以同时运行多个container,多个container之间共享:(UTS(主机名和域名),IPC(消息队列和共享内存),NET(网络栈,端口等),namespace(名称空间)),但USR(用户和组),MNT(挂载点),PID(进行编号)是相互隔离的.pod有两种类型的pod:一类是由控制器控制的pod,一类是自主式pod(不受控制器管理,自己管理自己) Deployment:最常见的pod控

opencms创建资源深度分析

引入: 在opencms中,有些资源是刚创建的,有些资源是创建并发布的,这些资源创建时候做了哪些工作呢,他们的存储又如何呢,这是这篇文章需要解决的话题. 分析: 以最简单的文本文件为例,当我们在某目录下(比如叫 /charlesstudy)用向导创建某文本文件时,如下: 它发送的请求为 POST http://localhost:8080/opencms/opencms/system/workplace/commons/newresource.jsp 服务器端的响应入口是在CmsNewResou

创建资源和用户关键字

一.测试套件下创建用户关键字 1.创建关键字测试套件右击->点击new user keyword,然后输入name,点击OK保存. 2.在用户关键字的edit点击settings,然后输入Arguments 参数为:${number} ,这就像定函数的输入参.可以设置多个变量,之间用"|"分隔.添加循环的用例,循环的次数为:${number} 3.创建好之后在用例中就可以直接使用这个关键字了.使用了循环的方法,并且入参${number}=8 二.创建资源后添加关键字 上面创建用户

PA 项目任务创建资源

-- 创建资源 DECLARE p_project_id NUMBER := 155233; p_task_id NUMBER := 244639; p_resource_list_member_id NUMBER := 2023; p_planned_quantity NUMBER := 101; p_pm_task_asgmt_reference VARCHAR2(240) := 'CXYTEST0001'; p_task_assignments_in pa_task_assignments

C#创建资源文件

资源文件顾名思义就是存放资源的文件.资源文件在程序设计中有着自身独特的优势,他独立于源程序,这样资源文件就可以被多个程序使用.同时在程序设计的时候,有时出于安全或者其他方面因素的考虑,把重要东西存放在资源文件中,也可以达到保密.安全的效果.那么Visual C#所使用的资源文件中到底存放哪些东西呢?在用Visual C#创建资源文件大致可以存放三种类型的数据资源,分别是字节数组.各种对象和字符串.本文将结合一个程序例子来具体说明用Visual C#是如何创建资源文件的. 一.用Visual C#

laravel 创建资源控制器

php artisan make:controller PhotoController --resource 如果不添加 --resource只会创建普通的控制器,反之则创建资源控制器 资源控制器图例: 原文地址:https://www.cnblogs.com/ryanLee1/p/8470008.html