1. 概述

k8s主要通过Object定义各种部署任务(例如:部署应用、部署Ingress路由规则、部署service等等),通过kubectl命令远程操作k8s集群。

Object的定义通常以Yaml格式进行描述。

Yaml是一种直观的数据序列化格式,主要通过缩进的方式组织数据。

Yaml例子:

 
#  注释
house:
family:
name: Doe
parents: # - 开始,表示数组元素
- John
- Jane
children:
- Paul
- Mark
- Simone
address:
number: 34
street: Main Street
city: Nowheretown
zipcode: 12345

定义好object文件后就可以通过kubectl命令将object发送给k8s服务器执行。

Object格式:

 
apiVersion: apps/v1 # k8s api版本
kind: Deployment # Object类型
metadata: # Object元数据定义,例如定义名字
name: nginx-deployment
spec: # Object 内容定义
.....
status: # Object 运行状态, 通常不需要我们定义,k8s负责更新
....

2.  kubectl 命令详解

2.1. kubectl安装&配置

安装kubectl命令

 
#LINUX
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.14.0/bin/linux/amd64/kubectl
chmod +x ./kubectl
mv ./kubectl /usr/bin/kubectl #Windows, 下载kubectl命令,然后配置下环境变量PATH,将kubectl的路径加入到PATH
https://storage.googleapis.com/kubernetes-release/release/v1.14.0/bin/windows/amd64/kubectl.exe

配置k8s集群连接凭证

kubectl命令连接远程服务器的配置默认存放在$HOME/.kube/config文件中,也可以通过指定--kubeconfig参数执行配置文件,例子:kubectl --kubeconfig ./k8s.conf  get pods

k8s集群的凭证,以阿里云为例展示如何获取:

复制下图中的凭证保存到指定的位置即可

2.2. kubectl命令常用操作

 
#应用一个object配置, 至于部署什么,就看yaml配置文件定义了什么, 这里部署一个pod
kubectl apply -f ./pod.yaml #kubectl get子命令用户展示k8s资源,k8s资源就是我们通过object部署的东西。
#展示所有pod
kubectl get pods #展示kube-system名字空间下的所有pod, 默认kubectl命令只是操作default默认名字空间,可以通过-n参数指定名字空间
kubectl get pods -n kube-system #展示所有deployment
kubectl get deploy #展示所有service(服务)
kubectl get svc #展示所有ingress
kubectl get ingress #以yaml格式,展示具体的ingress资源的配置, 展示任意资源具体的yaml配置命令格式:kubectl get 资源类型 资源名字 -o yaml
kubectl get ingress 资源名字 -o yaml #删除指定的资源,具体删除内容由配置文件object定义
kubectl delete -f ./pod.yaml #在容器中执行命令格式
kubectl exec 容器id 命令 #在admin-app-5f84f57f7-vthlf容器中,执行ls /alidata/www 命令
kubectl exec admin-app-5f84f57f7-vthlf ls /alidata/www #在admin-app-5f84f57f7-vthlf容器中,打开shell交互窗口, 需要加上-it参数
kubectl exec -it admin-app-5f84f57f7-vthlf bash

3. k8s常用对象(Object)类型

3.1. deployment

主要用于部署pod,支持滚动升级。

 
apiVersion: apps/v1
#对象类型
kind: Deployment
metadata:
name: nginx-deployment #deployment名字
labels:
app: nginx #deployment标签,可以自由定义
spec:
replicas: 3 #pod 副本数量
selector: #pod选择器定义,主要用于定义根据什么标签搜索需要管理的pod
matchLabels:
app: nginx #pod标签
template: #pod模版定义
metadata:
labels: #pod 标签定义
app: nginx
spec:
containers: #容器数组定义
- name: nginx #容器名
image: nginx:1.7.9 #镜像地址
command: #容器启动命令,【可选】
- /alidata/www/scripts/start.sh
ports: #定义容器需要暴露的端口
- containerPort: 80
env: #环境变量定义【可选】
- name: CONSOLE_URL #变量名
value: https://www.xxx.com #变量值

3.2. service

服务定义,主要用于暴露pods容器中的服务。

 
apiVersion: v1
#对象类型
kind: Service
metadata:
name: my-service #服务名
spec:
selector: #pod选择器定义,由这里决定请求转发给那些pod处理
app: nginx #pod 标签
ports: #服务端口定义
- protocol: TCP #协议类型,主要就是TCP和UDP
port: 80 # 服务端口
targetPort: 80 #pod 容器暴露的端口

3.3. ingress

http路由规则定义,主要用于将service暴露到外网中

apiVersion: extensions/v1beta1
#对象类型
kind: Ingress
metadata:
name: my-ingress #ingress应用名
spec:
rules: #路由规则
- host: www.xxx.com #域名
http:
paths: #访问路径定义
- path: / #代表所有请求路径
backend: #将请求转发至什么服务,什么端口
serviceName: my-service #服务名
servicePort: 80 #服务端口
 

3.4. ConfigMap

主要用于容器配置管理。

apiVersion: v1
kind: ConfigMap
metadata:
name: my-config #配置项名字
data:
key1: value1
key2: value2
 

定义完配置后,可以通过以下方式在容器中应用配置:

#通过环境变量注入配置
apiVersion: v1
kind: Pod
metadata:
name: config-pod-1
spec:
containers:
- name: test-container
image: busybox
command: [ "/bin/sh", "-c", "env" ]
env:
- name: SPECIAL_LEVEL_KEY ## 环境变量
valueFrom: ##使用valueFrom来指定env引用配置项的value值
configMapKeyRef:
name: my-config ##引用的配置文件名称
key: key1 ##引用的配置项key
restartPolicy: Never
#通过数据卷注入配置
apiVersion: v1
kind: Pod
metadata:
name: config-pod-4
spec:
containers:
- name: test-container
image: busybox
command: [ "/bin/sh", "-c", "ls /etc/config/" ] ##列出该目录下的文件名
volumeMounts:
- name: config-volume #配置项名字
mountPath: /etc/config #容器中的挂载目录
volumes: #数据卷定义
- name: config-volume #数据卷名
configMap: #数据卷类型
name: my-config #配置项名字
restartPolicy: Never

k8s应用配置详解的更多相关文章

  1. Log4j配置详解(转)

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  2. logback 常用配置详解<appender>

    logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...

  3. [转]阿里巴巴数据库连接池 druid配置详解

    一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...

  4. libCURL开源库在VS2010环境下编译安装,配置详解

    libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...

  5. logback配置详解3<filter>

    logback 常用配置详解(三) <filter> <filter>: 过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一.返回DENY ...

  6. logback配置详解2<appender>

    logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...

  7. log4j.properties配置详解

    1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.WARN.ERROR和FATAL.这五个级别是有顺序的,DEBUG < INFO < WARN < ...

  8. Log4J日志配置详解

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  9. Windows下Nginx Virtual Host多站点配置详解

    Windows下Nginx Virtual Host多站点配置详解 此教程适用于Windows系统已经配置好Nginx+Php+Mysql环境的同学. 如果您还未搭建WNMP环境,请查看 window ...

随机推荐

  1. 一、IIS性能检测与网站管理

    一.性能监视器 1.Windows Server自带的性能监视器.(开始 运行 perfmon ) 另一种方式打开 Performance Monitor 点击Windows+R,在Run中输入per ...

  2. 使用python3搭建Linux-mariadb主从架构

    环境准备两台: 192.168.193.90 master 192.168.193.91 slave 需要Linux装python环境: https://www.cnblogs.com/kingzhe ...

  3. tailf 跟踪日志文件

    1.命令功能 tailf 跟踪日志文件增长,作用跟tail –f相同.tailf将输出文件的最后10行,然后等待文件增长. 2.语法格式 tailf  option  file 参数说明 参数 参数说 ...

  4. 关于pug的笔记

    一.简介 Pug 是一款健壮.灵活.功能丰富的模板引擎,专门为 Node.js 平台开发.Pug 是由 Jade 改名而来,他可以帮助我们写html的时候更加的简单明了.安装.使用pug的过程打开cm ...

  5. 免插件,简单实现上拉加载loading

    上拉加载是前端经常遇到的问题,采用插件往往能够轻松解决,这里介绍一种免插件简单实现上拉加载的方法,参考一下,下面分享一下代码. html <body> <ul> <li& ...

  6. 谷歌浏览器 安装 Vue.js devtools 工具

    如果是vue写的项目,谷歌浏览器右上角的vue小图标会亮起!下面介绍如何安装 1.谷歌浏览器插件商店可以点击安装[需要梯子] 2.vue官网有对应的安装包,需要自己手动 npm run build 一 ...

  7. nginx之安装

    1.简介 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供俄 ...

  8. redis测试

    1,安装redis软件 2,引入redis jar包 3,案例 package test; import java.util.List; import redis.clients.jedis.Jedi ...

  9. Java中POI操作Excel常用方法

    1. https://blog.csdn.net/yjt520557/article/details/82763785 2. https://blog.csdn.net/zxh66/article/d ...

  10. 牛客网编程练习(华为机试在线训练)-----求int型正整数在内存中存储时1的个数

    题目描述 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数. 输入描述: 输入一个整数(int类型) 输出描述: 这个数转换成2进制后,输出1的个数 示例1 输入 5 输出 2 P ...