Kubernetes探索学习002--Kubernetes的基本使用
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的基本使用的更多相关文章
- Kubernetes探索学习005--Kubernetes的Controller模型和ReplicaSet伸缩
1.Kubernetes的controller pattern 需要认识到Kubernetes操作Pod的逻辑,都是由控制器来完成的. 查看之前写过的nginx-deployment的YAML文件 [ ...
- Kubernetes探索学习004--深入Kubernetes的Pod
深入研究学习Pod 首先需要认识到Pod才是Kubernetes项目中最小的编排单位原子单位,凡是涉及到调度,网络,存储层面的,基本上都是Pod级别的!官方是用这样的语言来描述的: A Pod is ...
- Kubernetes探索学习001--Centos7.6使用kubeadm快速部署Kubernetes集群
Centos7.6使用kubeadm快速部署kubernetes集群 为什么要使用kubeadm来部署kubernetes?因为kubeadm是kubernetes原生的部署工具,简单快捷方便,便于新 ...
- Kubernetes探索学习003--关于Kubernetes的Pod
关于Pod 关于Pod我们要慢慢去体会去接受它去使用它,尤其是运维人员这块需要从逻辑上形成认识,首先理解Pod是Kubernetes项目的原子调度单位.为什么是Pod而不是单个DockerContai ...
- kubernetes学习01—kubernetes介绍
本文收录在容器技术学习系列文章总目录 一.简介 1.Kubernetes代码托管在GitHub上:https://github.com/kubernetes/kubernetes/. 2.Kubern ...
- kubernetes 入门学习
kubernetes 学习 kubernetes 简介 Kubernetes这个名字源自希腊语,意思是"舵手",也是"管理者","治理者"等 ...
- Kubernetes 学习22 kubernetes容器资源需求资源限制及HeapSter(翻车章节)
一.概述 1.接下来介绍在k8s上运行pod对象时我们如何去监控我们系统级的资源指标以及业务级别的资源指标.数据如何获取和监控.在此之前先介绍一下Pod对象的资源请求和资源限制.即容器的资源需求和资源 ...
- Kubernetes 学习15 kubernetes 认证及serviceaccount
一.概述 1.通过此前描述可以知道k8s是以后运行我们生产环境中重要应用程序的尤其是无状态程序的一个非常重要的平台.这里面能托管一些核心应用以及核心数据,很显然对于k8s对应接口的访问不是任何人都可以 ...
- Kubernetes 学习4 kubernetes应用快速入门
一.相关命令 1.kubectl 通过连接api server 进行各k8s对象资源的增删改查,如pod,service,controller(控制器),我们常用的pod控制器replicaset,d ...
随机推荐
- Kafka设计解析(十四)Kafka producer介绍
转载自 huxihx,原文链接 Kafka producer介绍 Kafka 0.9版本正式使用Java版本的producer替换了原Scala版本的producer.本文着重讨论新版本produce ...
- 不大于N的所有素数
算法如下: #include<stdio.h> #include<math.h> void Sieve(int n) { int p,j,i; ],L[n+]; ;p<= ...
- VUE 生命周期 详解
beforeCreate vue中的第一个生命周期,在vue实列被完全创建出来之前会执行.注意:在beforeCreate生命周期函数执行时,data.methods.中的数据都还没有初始化. cra ...
- Redis 可视化工具 Redis Desktop Manager 和 treeNMS 的使用
这里介绍两个 Redis 可视化工具.Redis Desktop Manager 和 treeNMS. 一.Redis Desktop Manager 下载地址:https://redisdeskto ...
- SQL优化技巧-批处理替代游标
通过MSSQL中的用户自定义表类型可以快速将需要处理的数据存储起来,生成新的临时表(这里使用变量表),然后根据表中字段进行批处理替代游标. 用户自定义表类型 0 --创建用户自定义表类型 1 Crea ...
- 使用jieba导入引用方法时,报错AttributeError: module 'jieba' has no attribute 'cut'
一.问题描述 import jieba导入后,使用jieba.cut()方法时报错AttributeError: module 'jieba' has no attribute 'cut' 二.问题分 ...
- Java面向对象六大原则
引用自百度知道: ——根据首字母快速记忆SOLID(固体,坚固的),具体请参考这里 1) Open-Close Principle(OCP),开-闭原则, 讲的是设计要对扩展有好的支持,而对修改要严格 ...
- Matlab 装自定义模块
Matlab for Mac 右上角有一个set path选项. 点进去再点击 add with subfolders. 把你下载好的且解压过的工具箱添加进去 然后点save. 重启,就可以直接用了.
- jQuery学习-页面就绪函数
1.开发工具HBuilder <!DOCTYPE html> <html> <head> <meta charset="utf-8" /& ...
- 【转】numpy教程
[转载说明] 本来没有必要转载的,只是网上的版本排版不是太好,看的不舒服.所以转过来,重新排版,便于自己查看. 基础篇 NumPy的主要对象是同种元素的多维数组. 这是一个所有的元素都是一种类型.通过 ...