利用yaml配置文件管理资源

[root@master ~]# cat nginx-deployment.yaml
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.10
ports:
- containerPort: 80
[root@master ~]# cat nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx
spec:
ports:
- port: 88
targetPort: 80
selector:
app: nginx

执行如下命令即可发布服务

kubectl create -f nginx-deployment.yaml
kubectl create -f nginx-service.yaml

查看发布的服务

[root@master ~]# kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx-66d64dcdf8-89tfc 1/1 Running 0 5h21m
pod/nginx-66d64dcdf8-hwfbm 1/1 Running 0 5h21m
pod/nginx-66d64dcdf8-m8jfs 1/1 Running 0 5m49s
pod/nginx-deployment-58d6d6ccb8-5hnzm 1/1 Running 0 10m
pod/nginx-deployment-58d6d6ccb8-6wn9w 1/1 Running 0 10m
pod/nginx-deployment-58d6d6ccb8-mh48n 1/1 Running 0 10m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.10.10.1 <none> 443/TCP 46h
service/nginx-service ClusterIP 10.10.10.135 <none> 88/TCP 4m7s NAME READY UP-TO-DATE AVAILABLE AGE
deployment.extensions/nginx 3/3 3 3 5h21m
deployment.extensions/nginx-deployment 3/3 3 3 10m NAME DESIRED CURRENT READY AGE
replicaset.extensions/nginx-66d64dcdf8 3 3 3 5h21m
replicaset.extensions/nginx-deployment-58d6d6ccb8 3 3 3 10m NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx 3/3 3 3 5h21m
deployment.apps/nginx-deployment 3/3 3 3 10m NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-66d64dcdf8 3 3 3 5h21m
replicaset.apps/nginx-deployment-58d6d6ccb8 3 3 3 10m

Pod基本管理

创建一个pod:

[root@master ~]# cat pod-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx

查看pod

[root@master ~]# kubectl describe pod nginx-pod
Name: nginx-pod
Namespace: default
Node: 172.16.163.130/172.16.163.130
Start Time: Sat, 31 Aug 2019 09:58:34 -0400
Labels: app=nginx
Annotations: <none>
Status: Running
IP: 172.17.76.3
Containers:
nginx:
Container ID: docker://248a01e3010c97ea16f9bf964472109d6050557fcbb437925b538228135525aa
Image: nginx
Image ID: docker-pullable://nginx@sha256:53ddb41e46de3d63376579acf46f9a41a8d7de33645db47a486de9769201fec9
Port: <none>
Host Port: <none>
State: Running
Started: Sat, 31 Aug 2019 09:58:54 -0400
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-rmchc (ro)
Conditions:
Type Status
Initialized True
Ready True
PodScheduled True
Volumes:
default-token-rmchc:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-rmchc
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 75s default-scheduler Successfully assigned nginx-pod to 172.16.163.130
Normal SuccessfulMountVolume 75s kubelet, 172.16.163.130 MountVolume.SetUp succeeded for volume "default-token-rmchc"
Normal Pulling 74s kubelet, 172.16.163.130 pulling image "nginx"
Normal Pulled 56s kubelet, 172.16.163.130 Successfully pulled image "nginx"
Normal Created 56s kubelet, 172.16.163.130 Created container
Normal Started 55s kubelet, 172.16.163.130 Started container

pod的管理

基本管理:
# 创建pod资源
kubectl create -f pod.yaml
# 查看pods
kubectl get pods nginx-pod
# 查看pod描述
kubectl describe pod nginx-pod
# 更新资源
kubectl apply -f pod.yaml
# 删除资源
kubectl delete pod nginx-pod

Pod资源限制

apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"

Pod调度约束与重启策略

调度约束就是让某个应用运行在指定的节点上

apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
# nodeName: node01 //这个是指定到某个node节点上,填写node的ip地址
nodeSelector:
env_role: dev //通过标签来进行指定匹配
containers:
- name: nginx
image: nginx
//为node节点设置标签:
kubectl label nodes 172.16.163.130 env_role=dev

Pod的重启策略

三种重启策略:
Always:当容器停止,总是重建容器,默认策略。
OnFailure:当容器异常退出(退出状态码非0)时,才重启容器。
Never:当容器终止退出,从不重启容器。

例如:

apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
# nodeName: node01
nodeSelector:
env_role: dev //指定调度到某个节点上
containers:
- name: nginx
image: nginx
restartPolicy: OnFailure //只有当容器异常退出时才重启

Pod的健康检查

提供Probe机制,有以下两种类型:

  • livenessProbe: 探测应用是否处于健康状态,如果不健康则删除重建该容器

  • readinessProbe:探测应用是否启动完成并且处于正常服务状态,如果不正常则更新容器的状态

    Probe支持以下三种检查方法:

  • httpGet:发送HTTP请求,返回200-400范围状态码为成功。

  • exec :执行Shell命令返回状态码是0为成功。

  • tcpSocket :发起TCP Socket建立成功。

例如:

apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /index.html
port: 80

Pod问题定位

kubectl describe TYPE NAME_PREFIX
kubectl logs nginx-xxx
kubectl exec –it nginx-xxx bash

利用yaml文件管理资源的更多相关文章

  1. 利用unittest+ddt进行接口测试(二):使用yaml文件管理测试数据

    知道ddt的基本使用方法之后,练习把之前用excel文件来维护的接口测试用例改用unittest+ddt来实现. 这里我选用yaml文件来管理接口参数,开始本来想用json,但是json无法添加注释, ...

  2. 使用yaml配置文件管理资源

    [root@k8s-master ~]# vim nginx-deployment.yaml apiVersion: apps/v1beta2 kind: Deployment metadata: n ...

  3. .NET MVC4 实训记录之六(利用ModelMetadata实现资源的自主访问)

    上一篇我们已经实现自定义资源文件的访问,该篇我们使用它配合ModelMetadata实现资源文件的自主访问.这样做是为了我们能更简单的用MVC原生的方式使用资源文件.由于我的文章旨在记录MVC项目的实 ...

  4. K8S 通过 yaml 文件创建资源

    创建 pod cd ~ vi pod-demo.yaml # 内容如下 apiVersion: v1 kind: Pod metadata: name: pod-demo namespace: def ...

  5. java结合testng,利用yaml做数据源的数据驱动实例

    testng的功能很强大,利用@DataProvider可以做数据驱动,数据源文件可以是EXCEL,XML,YAML,甚至可以是TXT文本.在这以yaml为例: 备注:@DataProvider的返回 ...

  6. ios专题 - 使用bundle文件管理资源

    [原创]http://www.cnblogs.com/luoguoqiang1985 以前,自己写程序,图片等资源放得比较乱.后来,发现有个更好的方法来管理图片等资源文件 --bundle文件. 1) ...

  7. service自动发现,yaml文件管理内外部端口访问

    service服务发现 [root@k8s-master ~]# vim busybox-5d4f595646-dzjv4.yaml apiVersion: v1 kind: Pod metadata ...

  8. 《windows程序设计》学习_3.3:利用xp扫雷资源

    #include<windows.h> #include "resource.h" LRESULT CALLBACK WndProc (HWND, UINT, WPAR ...

  9. 利用 PorterDuff 动态改变资源色值,缩减安装包大小

    利用 PorterDuff 改变资源原有色值,从而实现只需要一个资源文件,就可以表示几种不同的状态,如在线或者离线等等 public Drawable colorDrawable(Resources ...

随机推荐

  1. Nginx事件管理之ngx_event_core_module模块

    1. 概述 ngx_event_core_module 模块是一个事件类型的模块,它在所有事件模块中的顺序是第一位.它主要完成以下两点任务: 创建连接池(包括读/写事件): 决定究竟使用哪些事件驱动机 ...

  2. Fastadmin 写关联命名时,最好前后台用同一个model,方便管理(会出现命名空间问题)

    1.php think crud -t test --relation=category(外键表1) --relation=admin(外键表2) --relationforeignkey=categ ...

  3. EBS 创建会计科目 小结

    1 创建会计科目 方式(以AP发票为例) 1)在发票工作台对单张发票进行创建科目: 参考网址: https://www.cnblogs.com/bruce_zhao/p/3809493.html 备注 ...

  4. java加密算法相关

    简介 RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.1987年首次公布,当 ...

  5. koa 基础(二十四)封装 DB 库 --- 新增数据、更新数据、删除数据

    1.根目录/module/db.js /** * DB库 */ var MongoClient = require('mongodb').MongoClient; var Config = requi ...

  6. MIL/SIL/PIL/HIL/VIL

    MIL:Model in the loop 模型在环,对模型在模型的开发环境下(如SIMULINK)进行仿真,通过输入一系列的测试用例,验证模型是否满足设计的功能需求.验证控制算法模型是否准确地实现了 ...

  7. CSS鼠标效果手型效果

    Example:CSS鼠标手型效果 <a href="#" style="cursor:hand">CSS鼠标手型效果</a> Exam ...

  8. vue路由嵌套,对应展示的视图

  9. Jeecg页面标签规则

    1.表单字段重复校验方法 <input name="departname" class="inputxt" value="${depart.de ...

  10. C++ 学习安排

    第一阶段主要是理解概念及最基本的定义和声明包含以下内容:1. 头文件2. 命名空间3. 变量和基本类型4. 函数5. 类6. 标准库类型第二部分进阶入门,主要学习C++中的某些内容的特殊性及逻辑编写1 ...