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. sqli(8)

    第八关:单引号GET盲注 前言:感冒了很有以后摸到靶场,如若隔世....我的天,说不定又有同学要去实习了,再看看我.啧啧啧,神的飞起来.. 盲注需要掌握一些MySQL的相关函数:length(str) ...

  2. onupdate

    数据的初始化显示刚开始写在onupdate中,文档类中的数据更新之后,希望通过调用UpdateAllViews(FALSE)来实现视图的更新,可以实现!后来觉得不妥,想把初始化显示写在ondraw中, ...

  3. Zabbix通过邮件发送Screen图形报表实现

    在使用Zabbix的过程中,我们通常会建立一些需要的Screen图形报表来汇总需要监控的Graph. 而下面的两个脚本,则是通过从Zabbix数据库中获取所有的Screen图形参数,提供Zabbix的 ...

  4. Ubuntu 18.04 安装 CUDA 9.0

    sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb sudo apt-key add /var/cuda-repo-< ...

  5. 【leetcode】1042. Flower Planting With No Adjacent

    题目如下: You have N gardens, labelled 1 to N.  In each garden, you want to plant one of 4 types of flow ...

  6. linux运维、架构之路-HTTP服务

    一.HTTP协议 1.介绍 HTTP协议,全称HyperText Transfer Protocol,中文名为超文本传输协议,是互联网中最常用的一种网络协议.HTTP协议是互联网上常用的通信协议之一. ...

  7. ubuntu 18.04下Chromium设置为系统代理

    前言 在ubuntu 18.04下挂上ss后firefox能直接上google了但是chromium上不去 会出现下面两种情况 # This site can't be reached xxxxxx ...

  8. (3.1)狄泰软件学院C++课程学习剖析二

    深度剖析C++第二部分 1.通过对象名能够访问public成员变量.每个对象的成员变量都是专属的,成员变量不能够在对象之间共享. 2.需求:统计在程序运行期间某个类的对象数目,保证程序的安全性(不能使 ...

  9. 减轻Temporal AA 的 拖影问题(ghosting)

    Temporal AA 效率高,但是有拖影等问题,UE4中可以如下修改减轻拖影问题: 搜索到PostProcessTemporalAA.usf文件,打开,找到 #define AA_DYNAMIC_A ...

  10. 如何正确安装Mysql

    1.官网去下载 2.针对操作系统的不同下载不同的版本  安装步骤: 第一步解压文件:位置为你想要安装的盘符第二步加载环境变量加载的是bin目录第三步初始化:在cmd终端中输入 mysqld --ini ...