Kubernetes 的基本使用方法

原则:使用YAML文件描述你要部署的API对象!

以部署nginx静态站点为例,具体操作及内容如下

1.编写YAML文件

[root@kubernetes01 ~]# cat nginx-staticwebsite.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-staticwebsite
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.9.1
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: nginx-staticwebsite-vol
volumes:
- name: nginx-staticwebsite-vol
hostPath:
path: "/home/data/kubernetes/nginx-staticwebsite"

2.YAML文件说明

apiVersion: apps/v1
kind: Deployment //指定了API对象的类型,Deployment是一个可以定义多副本应用的对象
metadata: //API对象的标示,用来存放元数据
name: nginx-staticwebsite //定义元数据名
spec: //对象的独有定义
selector: //选择器
matchLabels: //匹配的标签
app: nginx //app名称
replicas: 2 //定义副本数量
template: //定义Pod的模版用来描述细节,需要理解Pod就是Kubernetes世界中的应用
metadata: //模版的元数据
labels: //标签
app: nginx //app名称
spec:
containers: //Pod中只定义了一个容器
- name: nginx //名称
image: nginx:1.9.1 //镜像的名称
ports:
- containerPort: 80 //容器监听的端口
volumeMounts: //Pod中的容器声明自己挂载哪个Volume
- mountPath: "/usr/share/nginx/html" //定义容器的中的Volume的目录
name: nginx-staticwebsite-vol //Volume的名字
volumes: //定义这个Pod声明的所有Volume显式定义
- name: nginx-staticwebsite-vol //Volume的名字
hostPath:
path: "/home/data/kubernetes/nginx-staticwebsite" //显式定义,Volume挂载的宿主机目录 //隐式定义,我们没有用到
volumes: 定义这个Pod声明的所有卷
- name: nginx-vol
emptyDir: {} 隐式定义

3.操作YAML文件

1.运行这个YAML文件
kubelctl create -f nginx-staticwebsite.yaml 2.GET指定的API对象
[root@kubernetes01 ~]# kubectl get pods -l app=nginx
NAME READY STATUS RESTARTS AGE
nginx-staticwebsite-8479f8997f-2mh4j 1/1 Running 0 153m
nginx-staticwebsite-8479f8997f-s526z 1/1 Running 0 153m 3.查看API对象的细节
[root@kubernetes01 ~]# kubectl describe pod nginx-staticwebsite-8479f8997f-2mh4j
Name: nginx-staticwebsite-8479f8997f-2mh4j
Namespace: default
Priority: 0
PriorityClassName: <none>
Node: kubernetes09/10.5.0.219
Start Time: Mon, 11 Mar 2019 11:35:53 +0800
Labels: app=nginx
pod-template-hash=8479f8997f
Annotations: <none>
Status: Running
IP: 10.39.0.2
Controlled By: ReplicaSet/nginx-staticwebsite-8479f8997f
Containers:
nginx:
Container ID: docker://08e49e4a3f253e317b7e4a9603e9398bca9f1762daa7dd10ddf885e4e20f2078
Image: nginx:1.9.1
Image ID: docker-pullable://nginx@sha256:2f68b99bc0d6d25d0c56876b924ec20418544ff28e1fb89a4c27679a40da811b
Port: 80/TCP
Host Port: 0/TCP
State: Running
Started: Mon, 11 Mar 2019 11:36:09 +0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/usr/share/nginx/html from nginx-staticwebsite-vol (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-8j8dl (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
nginx-staticwebsite-vol:
Type: HostPath (bare host directory volume)
Path: /home/data/kubernetes/nginx-staticwebsite
HostPathType:
default-token-8j8dl:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-8j8dl
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events: <none> 4.尝试更新镜像
修改YAML文件中的nginx的镜像版本
[root@kubernetes01 ~]# cat nginx-staticwebsite.yaml | grep "image"
image: nginx:1.9.2
[root@kubernetes01 ~]# kubectl apply -f nginx-staticwebsite.yaml
[root@kubernetes01 ~]# kubectl get pods -l app=nginx
NAME READY STATUS RESTARTS AGE
nginx-deployment-7f987f7889-8tbbt 1/1 Running 0 3h23m
nginx-deployment-7f987f7889-rh8xc 1/1 Running 0 3h23m
nginx-staticwebsite-648bc64544-snjpg 0/1 ContainerCreating 0 23s
nginx-staticwebsite-8479f8997f-2mh4j 1/1 Running 0 160m
nginx-staticwebsite-8479f8997f-s526z 1/1 Running 0 160m
[root@kubernetes01 ~]# kubectl describe pod nginx-staticwebsite-648bc64544-snjpg
Name: nginx-staticwebsite-648bc64544-snjpg
Namespace: default
Priority: 0
PriorityClassName: <none>
Node: kubernetes05/10.5.0.210
Start Time: Mon, 11 Mar 2019 14:15:36 +0800
Labels: app=nginx
pod-template-hash=648bc64544
Annotations: <none>
Status: Running
IP: 10.45.0.3
Controlled By: ReplicaSet/nginx-staticwebsite-648bc64544
Containers:
nginx:
Container ID: docker://b3fb6b0aa095990482027158c4bce84dbe023f2ae7f2ccb6b4d521d3274a93cf
Image: nginx:1.9.2
Image ID: docker-pullable://nginx@sha256:7ffb2ccf2de82b0afeee46ae9d7542e9643587a8d4dbe2901cf466369e3c10f5
Port: 80/TCP
Host Port: 0/TCP
State: Running
Started: Mon, 11 Mar 2019 14:16:00 +0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/usr/share/nginx/html from nginx-staticwebsite-vol (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-8j8dl (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
nginx-staticwebsite-vol:
Type: HostPath (bare host directory volume)
Path: /home/data/kubernetes/nginx-staticwebsite
HostPathType:
default-token-8j8dl:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-8j8dl
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 70s default-scheduler Successfully assigned default/nginx-staticwebsite-648bc64544-snjpg to kubernetes05
Normal Pulling 69s kubelet, kubernetes05 pulling image "nginx:1.9.2"
Normal Pulled 46s kubelet, kubernetes05 Successfully pulled image "nginx:1.9.2"
Normal Created 46s kubelet, kubernetes05 Created container
Normal Started 46s kubelet, kubernetes05 Started container
可以看到Events中的信息!这块信息很重要因为我们可以用来排错! 5.静态网站访问
[root@kubernetes01 ~]# curl 10.35.0.3
nginx static website!
[root@kubernetes01 ~]# curl 10.39.0.2
nginx static website!

4.总结

通过对Kubenetes的基本操作和体验,不难发现,我们可以对YAML文件进行版本化管理,当热这也是发布应用的最基本操作!你GET到了吗?朋友

PS:文中服务器使用的是国内某☁️的机器

欢迎大家留言哦~~~

Kubernetes探索学习002--Kubernetes的基本使用的更多相关文章

  1. Kubernetes探索学习005--Kubernetes的Controller模型和ReplicaSet伸缩

    1.Kubernetes的controller pattern 需要认识到Kubernetes操作Pod的逻辑,都是由控制器来完成的. 查看之前写过的nginx-deployment的YAML文件 [ ...

  2. Kubernetes探索学习004--深入Kubernetes的Pod

    深入研究学习Pod 首先需要认识到Pod才是Kubernetes项目中最小的编排单位原子单位,凡是涉及到调度,网络,存储层面的,基本上都是Pod级别的!官方是用这样的语言来描述的: A Pod is ...

  3. Kubernetes探索学习001--Centos7.6使用kubeadm快速部署Kubernetes集群

    Centos7.6使用kubeadm快速部署kubernetes集群 为什么要使用kubeadm来部署kubernetes?因为kubeadm是kubernetes原生的部署工具,简单快捷方便,便于新 ...

  4. Kubernetes探索学习003--关于Kubernetes的Pod

    关于Pod 关于Pod我们要慢慢去体会去接受它去使用它,尤其是运维人员这块需要从逻辑上形成认识,首先理解Pod是Kubernetes项目的原子调度单位.为什么是Pod而不是单个DockerContai ...

  5. kubernetes学习01—kubernetes介绍

    本文收录在容器技术学习系列文章总目录 一.简介 1.Kubernetes代码托管在GitHub上:https://github.com/kubernetes/kubernetes/. 2.Kubern ...

  6. kubernetes 入门学习

    kubernetes 学习 kubernetes 简介 Kubernetes这个名字源自希腊语,意思是"舵手",也是"管理者","治理者"等 ...

  7. Kubernetes 学习22 kubernetes容器资源需求资源限制及HeapSter(翻车章节)

    一.概述 1.接下来介绍在k8s上运行pod对象时我们如何去监控我们系统级的资源指标以及业务级别的资源指标.数据如何获取和监控.在此之前先介绍一下Pod对象的资源请求和资源限制.即容器的资源需求和资源 ...

  8. Kubernetes 学习15 kubernetes 认证及serviceaccount

    一.概述 1.通过此前描述可以知道k8s是以后运行我们生产环境中重要应用程序的尤其是无状态程序的一个非常重要的平台.这里面能托管一些核心应用以及核心数据,很显然对于k8s对应接口的访问不是任何人都可以 ...

  9. Kubernetes 学习4 kubernetes应用快速入门

    一.相关命令 1.kubectl 通过连接api server 进行各k8s对象资源的增删改查,如pod,service,controller(控制器),我们常用的pod控制器replicaset,d ...

随机推荐

  1. 关于SX1278、SX1276、SX1262的简单详解资料

    通常的物联网解决方案和设备一直都非常昂贵,或在实施中不切合实际.理想的无线连接技术应该是低成本.高可靠性的,可进行长距离传输,且拥有超长的电池续航时间.像zigbee.Bluetooth和Wi-Fi这 ...

  2. 公司架构理解 - 千万 pv 网站

    1.面试题 - 花架构图 commander 控制台,请求处理器 crp 资源分配器 相当于仓管 .推荐系统的架构流程图和每一个模块的作用一定要了解,一般会让你一边画流程图一边讲解每个模块. 2.我自 ...

  3. 1.1《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——运行终端

    终端是个允许我们运行命令行的程序,运行命令前,先打开它.在MacOS系统上,可以使用macOS应用 Spotlight来打开终端窗口,Spotlight也有其他两种方式触发,一种是键入⌘␣(comma ...

  4. CCF认证201712-1最小差值

    问题描述 给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值. 输入格式 输入第一行包含一个整数n. 第二行包含n个正整数,相邻整数之间使用一个空格分隔. 输出格式 输出一个 ...

  5. 理解C++类的继承方式(小白)

    基类里的 public(大人) protect(青年) private(小孩) 在通过继承时  继承方式public(我是大人咯) protect(我是青少年) private(我系小孩纸啦) &qu ...

  6. HBase--大数据系统的数据库方案

    本文主要围绕以下三方面来讨论HBase:是什么.为什么.怎样做. 1. 什么是HBase HBase是一个开源的.分布式的.非关系型数据库,其设计思想来源于Google的Big Table.通过集群管 ...

  7. PTA-括号问题

    括号问题 作者: 李廷元 单位: 中国民用航空飞行学院 时间限制: 400 ms 内存限制: 64 MB 代码长度限制: 16 KB 问题描述 给定一串字符,不超过100个字符,可能包括括号.数字.字 ...

  8. 20155211课下测试ch10补交

    20155211课下测试ch10补交 1.假设下面代码中的foobar.txt中有6个ASCII字母,程序的输出是() A.c = f B.c = o C.c = b D.c = 随机数 答案:A 解 ...

  9. WPF 学习笔记-在WPF下创建托盘图标

    原文:WPF 学习笔记-在WPF下创建托盘图标 首先需要在项目中引用System.Windows.Forms,System.Drawing; using System; using System.Co ...

  10. uefi+gpt安装双系统

    uefi+gpt:不要用easybcd!不起作用.找不到.mbr文件. win10空出一个盘: 制作ubuntu启动盘: 分区设置 挂载点 分区大小 新分区类型 新分区位置 用于 / 22000MB ...