第二章 Kuberbetes实践指南
kubernetes安装与配置
网络,安全,服务启动配置
参考: kubernetes权威指南第二版
kubectl命令行工具用法详解
kubectl [command] [type] [name] [flag]
command:子命令,用于操作资源对象如create delete describe get apply
type:如pod node
name:资源对象名称
flags:kubectl子命令的可选参数


更多子命令参考资料
flag参数

kubectl命令输出格式

如:kubectl get pods -n itsma1 -o=json
kubectl操作示例
1创建资源对象
根据yaml配置文件一次性创建service和rc
kubectl create -f my-service.yaml -f my-rc.yaml
根据<directory>目录下所有.yaml .yml .json文件的定义进行创建操作:
kubectl create -f <directory>
2查看资源对象
查看所有Pod列表
kubectl get pods
查看rc和service列表
kubectl get rc,service
3描述资源对象
显示node的详细信息
kubectl describe nodes <node-name>
显示pod的详细信息
kubectl describe pods/<pod-name>
显示由RC管理的Pod的信息
kubectl describe pods <rc-name>
4 删除资源对象
基于pod.yaml定义的名称删除Pod
kubectl delete -f pod.yaml
删除所有包含某个label的pod和service
kubectl delete pod,services -l name = <label-name>
删除所有pod:
kubectl delete pods --all
5 执行容器的命令
执行pod的data命令,默认使用pod中的第1个容器执行:
kubectl exec <pod-name> date
指定pod中某个容器执行date命令:
kubectl exec <pod-name> -c <container-name> date
通过bash获得pod中某个容器的TTY,相当于登录容器:
kubectl exec -ti <pod-name> -c <container-name> /bin/bash
6查看容器日志
查看容器输出到stdout的日志:
kubectl logs <pod-name>
跟踪查看容器的日志,相当于tail -f命令的结果:
kubectl logs -f <pod-name> -c <container-name>
深入掌握pod
apiVersion: v1
kind: Pod
metadata:
annotations: { ... }
labels:
deployment: docker-registry-
deploymentconfig: docker-registry
docker-registry: default
generateName: docker-registry--
spec:
containers:
- env:
- name: OPENSHIFT_CA_DATA
value: ...
- name: OPENSHIFT_CERT_DATA
value: ...
- name: OPENSHIFT_INSECURE
value: "false"
- name: OPENSHIFT_KEY_DATA
value: ...
- name: OPENSHIFT_MASTER
value: https://master.example.com:8443
image: openshift/origin-docker-registry:v0.6.2
imagePullPolicy: IfNotPresent
name: registry
ports:
- containerPort:
protocol: TCP
resources: {}
securityContext: { ... }
volumeMounts:
- mountPath: /registry
name: registry-storage
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: default-token-br6yz
readOnly: true
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: default-dockercfg-at06w
restartPolicy: Always
serviceAccount: default
volumes:
- emptyDir: {}
name: registry-storage
- name: default-token-br6yz
secret:
secretName: default-token-br6yz




创建pod
kubectl reate -f <yaml file>
查看pod
kubectl get pods -n <namespace>
pod容器共享数据卷(volumn)
pod的yaml文件中定义如下:


pod的配置管理(configmap)
容器应用配置管理:1)生成为容器的环境变量
2)设置容器启动命令的启动参数
3)configmap中的文件以volumn形式挂载到容器内部
configmap的创建
以yaml文件创建:

kubectl命令创建:
#kubectl create configmap NAME --from-file=[key=]source --from-file=[key=]source key为文件名 value为文件内容 列如: kubectl create configmap testConfigMap --from-file=test.txt #kubectl create configmap NAME --from-literal=key1=value1 --from-literal=key2=value2 列如: kubectl create configmap testConfigMap --from-literal=loglevel=debug --from-literal=appdir=/var/bin
将既有的configmap(cm-appvars)中的data设置pod环境变量:

将configmap中的文件挂载到容器内部:
pod定义:
登录容器:
#kubectl exec -ti cm-test-app --bash
# cat /configfiles/server.xml
pod生命周期和重启策略(RestartPolicy)


pod健康检查:
LivenessProbe探针:用于判断容器是否存活;
ReadinessProbe:用于判断容器是否启动完成;
玩转pod调度
1 RC,Deployment:全自动调度
2 NodeSelect:定向调度 pod指定node启动
3 NodeAffinity:亲和度调度 替换NodeSelector的下一代调度策略
4 job:批处理调度
pod的扩容和缩容
手动扩容 修改rc
#kubectl scale rc redis-slave --replicas= 基于cpu使用率自动扩容(HPA)
在RC的yaml文件中: spec:
containers:
- name:php-apache
image:gcr.io/google_containers/pha-example
resources:
request:
cpu:200m 创建一个HPA控制器,在1-10之间调整pod副本数,使得平均pod cpu使用率维持在50%
#kubectl autoscale rc php-apache --min= --max= --cpu-percent=
定义一个HPA yaml文件,并制定管理的RC:

pod滚动升级
定义一个新的RC,不同的label,不同的文件名,相同的namespace
#kubectl rolling-update reds-master -f redis-master-controller-v2.yaml
深入掌握Service

service基本用法:
service被设计类似负载均衡器来实现请求的分发。
创建service
1. kubectl expose rc webapp
2.kubectl create -f *.yaml
负载分发策略:

集群外部访问Pod或service
将容器应用的端口号映射到物理机上:

设置hostnetwork=true,使得pod中所有容器映射到物理机的端口:

将service端口号映射到物理机
通过设置nodePort映射到物理机,同时设置Service的类型为Nodeport:


DNS搭建指南
kubenetes提供虚拟DNS服务名为skydns,由四个组件组成。
1)etcd :DNS存储
2)kube2sky:将kubernetes master中的service 注册到etcd里面
3)skyDNS:提供DNS域名解析服务
4)healthz:提供对skyDNS服务的健康检查功能
Ingress Http 7层路由机制

第二章 Kuberbetes实践指南的更多相关文章
- PMP备考指南之第二章:项目运作环境
本文已同步至 GitHub/Gitee/公众号,感兴趣的同学帮忙点波关注~ 第二章:项目运作环境 1. 事业环境因素.组织过程资产 事业环境因素 Enterprise Environmental Fa ...
- 第二章 C语言编程实践
上章回顾 宏定义特点和注意细节 条件编译特点和主要用处 文件包含的路径查询规则 C语言扩展宏定义的用法 第二章 第二章 C语言编程实践 C语言编程实践 预习检查 异或的运算符是什么 宏定义最主要的特点 ...
- Knockout应用开发指南 第二章:监控属性(Observables)
原文:Knockout应用开发指南 第二章:监控属性(Observables) 关于Knockout的3个重要概念(Observables,DependentObservables,Observabl ...
- Python编程-从入门到实践 Eric Matthes 著 袁国忠 译 - - 第二章 动手试一试
因为第一章的动手试一试基本都是探索性的,所以直接进入第二章. # 2.2 动手试一试 # 2_1 简单消息: 将一条消息存储到变量中,再将其打印出来. message = 'python 编程从入门到 ...
- Spring学习指南-第二章-Spring框架基础(完)
第二章 Spring框架基础 面向接口编程的设计方法 在上一章中,我们看到了一个依赖于其他类的POJO类包含了对其依赖项的具体类的引用.例如,FixedDepositController 类包含 ...
- HTTP权威指南:第二章
URL概览 前面提到,URL资源是HTTP协议所使用的寻找资源位置的定位符.分为三个部分,主要的结构是: 方案://服务器/路径 这种结构使得网络上的每一个资源都只有唯一的命名方法,从而使得浏览器可以 ...
- 【vue.js权威指南】读书笔记(第二章)
[第2章:数据绑定] 何为数据绑定?答曰:数据绑定就是将数据和视图相关联,当数据发生变化的时候,可以自动的来更新视图. 数据绑定的语法主要分为以下几个部分: 文本插值:文本插值可以说是最基本的形式了. ...
- Javascript权威指南——第二章词法结构,第三章类型、值和变量,第四章表达式和运算符,第五章语句
第二章 词法结构 一.HTML并不区分大小写(尽管XHTML区分大小写),而javascript区分大小写:在HTML中,这些标签和属性名可以使用大写也可以使用小写,而在javascript中必须小写 ...
- Spring 3.x 实践 第一个例子(Spring 3.x 企业应用开发实战读书笔记第二章)
前言:工作之后一直在搞android,现在需要更多和后台的人员交涉,技术栈不一样,难免鸡同鸭讲,所以稍稍学习下. 这个例子取自于<Spring 3.x 企业应用开发实战>一书中的第二章,I ...
随机推荐
- 深入探究JVM之对象创建及分配策略
@ 目录 前言 正文 一.对象的创建方式 二.对象的创建过程 对象在哪里创建 分配内存 对象的内存布局 三.对象的访问定位 四.判断对象的存活 对象生死 回收方法区 引用 对象的自我拯救 五.对象的分 ...
- jmeter零散知识点
- [转]十分钟带你理解Kubernetes核心概念
本文将会简单介绍 Kubernetes的核心概念.因为这些定义可以在Kubernetes的文档中找到,所以文章也会避免用大段的枯燥的文字介绍.相反,我们会使用一些图表(其中一些是动画)和示例来解释这些 ...
- Docker 挂载
简介 集群当中挂载数据卷的方式采用--mount标志.而且-mount标记相比于-v意图更明确. 如果不进行数据挂载的话,当容器不在时,对应的数据也不会持久存在 存储方式 卷存储,由docke ...
- 利用Python的装饰器一键开启多线程
记录一下自己写的烂代码 import time import threading def WithThread(obj): """这是一个开启线程的装饰器"&q ...
- Python访问、修改、删除字典中的值
Python访问字典中的值: # 使用字典 ['键'] 获取字典中的元素 dic = {'a':123,'b':456,'c':789} print(dic['a']) # print(dic['c' ...
- PHP strnatcmp() 函数
实例 使用"自然"算法来比较两个字符串(区分大小写): <?php高佣联盟 www.cgewang.comecho strnatcmp("2Hello world! ...
- PDOStatement::bindColumn
PDOStatement::bindColumn — 绑定一列到一个 PHP 变量(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 bool PDOSta ...
- C/C++编程笔记:C++入门知识丨多态性和虚函数
本篇要学习的内容和知识结构概览 多态性 编译时的多态性称为静态联编. 当调用重载函数时, 在编译期就确定下来调用哪个函数. 运行时的多态性称为动态联编. 在运行时才能确定调用哪个函数, 由虚函数来支持 ...
- bzoj 5206 [Jsoi2017]原力
LINK:原力 一张无向图 这道题统计三元环的价值和.有重边但是无自环. 我曾经写过三元环计数 这个和那个题差不太多. 不过有很多额外操作 对于重边问题 我们把所有颜色相同的重边缩在一起 这样的话我们 ...