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实践指南的更多相关文章

  1. PMP备考指南之第二章:项目运作环境

    本文已同步至 GitHub/Gitee/公众号,感兴趣的同学帮忙点波关注~ 第二章:项目运作环境 1. 事业环境因素.组织过程资产 事业环境因素 Enterprise Environmental Fa ...

  2. 第二章 C语言编程实践

    上章回顾 宏定义特点和注意细节 条件编译特点和主要用处 文件包含的路径查询规则 C语言扩展宏定义的用法 第二章 第二章 C语言编程实践 C语言编程实践 预习检查 异或的运算符是什么 宏定义最主要的特点 ...

  3. Knockout应用开发指南 第二章:监控属性(Observables)

    原文:Knockout应用开发指南 第二章:监控属性(Observables) 关于Knockout的3个重要概念(Observables,DependentObservables,Observabl ...

  4. Python编程-从入门到实践 Eric Matthes 著 袁国忠 译 - - 第二章 动手试一试

    因为第一章的动手试一试基本都是探索性的,所以直接进入第二章. # 2.2 动手试一试 # 2_1 简单消息: 将一条消息存储到变量中,再将其打印出来. message = 'python 编程从入门到 ...

  5. Spring学习指南-第二章-Spring框架基础(完)

    第二章 Spring框架基础 面向接口编程的设计方法 ​ 在上一章中,我们看到了一个依赖于其他类的POJO类包含了对其依赖项的具体类的引用.例如,FixedDepositController 类包含 ...

  6. HTTP权威指南:第二章

    URL概览 前面提到,URL资源是HTTP协议所使用的寻找资源位置的定位符.分为三个部分,主要的结构是: 方案://服务器/路径 这种结构使得网络上的每一个资源都只有唯一的命名方法,从而使得浏览器可以 ...

  7. 【vue.js权威指南】读书笔记(第二章)

    [第2章:数据绑定] 何为数据绑定?答曰:数据绑定就是将数据和视图相关联,当数据发生变化的时候,可以自动的来更新视图. 数据绑定的语法主要分为以下几个部分: 文本插值:文本插值可以说是最基本的形式了. ...

  8. Javascript权威指南——第二章词法结构,第三章类型、值和变量,第四章表达式和运算符,第五章语句

    第二章 词法结构 一.HTML并不区分大小写(尽管XHTML区分大小写),而javascript区分大小写:在HTML中,这些标签和属性名可以使用大写也可以使用小写,而在javascript中必须小写 ...

  9. Spring 3.x 实践 第一个例子(Spring 3.x 企业应用开发实战读书笔记第二章)

    前言:工作之后一直在搞android,现在需要更多和后台的人员交涉,技术栈不一样,难免鸡同鸭讲,所以稍稍学习下. 这个例子取自于<Spring 3.x 企业应用开发实战>一书中的第二章,I ...

随机推荐

  1. VS Code 上那些沙雕插件

    本文整理自网络,作者不详,如有侵权,则可删除. VS Code 作为前端最牛逼的一个前端编辑器,可以说是最流行的开发工具了,以其可支持扩展程序(通过安装扩展程序,VS Code 可以支持更多新的语言. ...

  2. 缓存利器、Lua模块下的共享内存

    上一节讲到了worker进程的共享内存,它利用丰富的指令使数据的缓存操作变得非常简单,但它也存在一些缺点. 1.worker进程之间会有锁竞争,在高并发的情况下会增加性能开销.2.只支持Lua布尔值. ...

  3. java JDBC自我总结

    preparedstatement和statement的区别 当不需要预编译时(不需要占位符)可以选用statement,存在不安全 当有占位符(?)时,需要选用preparedstatement s ...

  4. 报错:invalid operands to binary - (have ‘int’ and ‘char *’)

    //这个题是输入大写的一串字符,然后按A对应1...这个规律求乘积 char a[],b[]; scanf("%s",a); scanf("%s",b); in ...

  5. 【问题记录】springMVC @Valid使用不生效问题

    问题描述 在网上找到如何使用@Valid注解后,就把用到的配置和jar包加上,然后测试发现一直不生效.下面是配置及解决方法 配置 1.引入依赖 2.添加相应的配置(springmvc配置文件) < ...

  6. ElasticSearch 基本概念 and 索引操作 and 文档操作 and 批量操作 and 结构化查询 and 过滤查询

    基本概念 索引: 类似于MySQL的表.索引的结构为全文搜索作准备,不存储原始的数据. 索引可以做分布式.每一个索引有一个或者多个分片 shard.每一个分片可以有多个副本 replica. 文档: ...

  7. Linux的VMWare中Centos7用户和用户管理三个系统文件(/etc/passwd-shadow-group解读)和批量创建用户user及用户工作环境path

    Linux 用户和用户组管理 用户工作环境PATH Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用 ...

  8. Efficient Knowledge Graph Accuracy Evaluation 论文笔记

    前言 这篇论文主要讲的是知识图谱正确率的评估,将知识图谱的正确率定义为知识图谱中三元组表述正确的比例.如果要计算知识图谱的正确率,可以用人力一一标注是否正确,计算比例.但是实际上,知识图谱往往很大,不 ...

  9. ssm框架中applicationContext.xml文件中配置别名

    在applicationContext.xml中配置如下: 通过以下property标签中给定name属性value属性及对应的值,来将domain包下所有实体类设置别名. 在xxxDao.xml中 ...

  10. 企业签名和TF签名哪个好?TF签名和企业签名怎么选?

    很多开发者在App无法上架Appstore,需要内测或者开放给苹果用户使用的时候,需要选择企业签名来帮助自己的App开放下载链接,给苹果用户使用.苹果企业签名的类型有很多,TF签名最近又很火爆,那么企 ...