利用yaml文件管理资源
利用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文件管理资源的更多相关文章
- 利用unittest+ddt进行接口测试(二):使用yaml文件管理测试数据
知道ddt的基本使用方法之后,练习把之前用excel文件来维护的接口测试用例改用unittest+ddt来实现. 这里我选用yaml文件来管理接口参数,开始本来想用json,但是json无法添加注释, ...
- 使用yaml配置文件管理资源
[root@k8s-master ~]# vim nginx-deployment.yaml apiVersion: apps/v1beta2 kind: Deployment metadata: n ...
- .NET MVC4 实训记录之六(利用ModelMetadata实现资源的自主访问)
上一篇我们已经实现自定义资源文件的访问,该篇我们使用它配合ModelMetadata实现资源文件的自主访问.这样做是为了我们能更简单的用MVC原生的方式使用资源文件.由于我的文章旨在记录MVC项目的实 ...
- K8S 通过 yaml 文件创建资源
创建 pod cd ~ vi pod-demo.yaml # 内容如下 apiVersion: v1 kind: Pod metadata: name: pod-demo namespace: def ...
- java结合testng,利用yaml做数据源的数据驱动实例
testng的功能很强大,利用@DataProvider可以做数据驱动,数据源文件可以是EXCEL,XML,YAML,甚至可以是TXT文本.在这以yaml为例: 备注:@DataProvider的返回 ...
- ios专题 - 使用bundle文件管理资源
[原创]http://www.cnblogs.com/luoguoqiang1985 以前,自己写程序,图片等资源放得比较乱.后来,发现有个更好的方法来管理图片等资源文件 --bundle文件. 1) ...
- service自动发现,yaml文件管理内外部端口访问
service服务发现 [root@k8s-master ~]# vim busybox-5d4f595646-dzjv4.yaml apiVersion: v1 kind: Pod metadata ...
- 《windows程序设计》学习_3.3:利用xp扫雷资源
#include<windows.h> #include "resource.h" LRESULT CALLBACK WndProc (HWND, UINT, WPAR ...
- 利用 PorterDuff 动态改变资源色值,缩减安装包大小
利用 PorterDuff 改变资源原有色值,从而实现只需要一个资源文件,就可以表示几种不同的状态,如在线或者离线等等 public Drawable colorDrawable(Resources ...
随机推荐
- linux升级安装openssh时出现依赖冲突
通过如下方式下载到openssh安装包 https://www.cnblogs.com/qq931399960/p/11120429.html -rwxrwxrwx. root root Jul : ...
- Cortex-M3 异常中断响应与返回
[异常/中断响应]Cortex-M3的异常/中断响应序列包括: 入栈:把8个寄存器的值压入栈. 取向量:从向量表中找出对应的服务程序入口地址. 更新寄存器:更新堆栈指针SP,更新连接寄存器LR,更新程 ...
- RN在Mac环境下开发环境搭建
1.推荐使用Homebrew来安装 Node 和 Watchman.在命令行中执行下列命令安装: brew install node brew install watchman 如果你已经安装了 No ...
- 六十九:flask上下文之线程隔离的g对象的使用
保存全局对象的g对象g对象是在整个flask应用运行期间都是可以使用的,并且也是和request一样,是线程隔离的,这个对象是专门用来存放开发者自己定义的一些数据,方便在整个flask程序中都可以使用 ...
- java文件分片上传,断点续传
百度的webUploader的前端开源插件实现的大文件分片上传功能 前端部分 前端页面代码如下,只需要修改自己的文件上传地址接口地址: <!DOCTYPE html> <html l ...
- SQL中group by使用
多条重复记录,有一个字段可以进行区分,从重复的记录中取出其中一条,可利用group by字段 举例如下: 查询所有 查询地区中的最高分
- c++11实现线程池
http://note.youdao.com/noteshare?id=de17ff681b277bb914ef46aeb9271fc4
- Python的Multiprocessing多进程实例
最近在拜读RBG大神的faster-rcnn源码时发现他用了多进程去分阶段处理神经网络,原因如下: # ------------------------------------------------ ...
- PYTHON TDD学习(一)-->Python 3.4版本环境安装Django及其启动
1.安装Python3.4版本,原因:3.4及其以后版本默认自带pip工具,非常好用 2.django 安装命令(c:\Python34\Scripts):pip install django 3.s ...
- Eclipse新建新的工作空间,将原有的配置全部或部分复制
1.部分复制 File->Switch workspace->Other...,按下图选择 只复制简单的配置,如cvs之类的信息是不会复制的. 2.全部复制(build path) 在1. ...