3.Kubernetes核心资源:POD控制器
[toc]
POD资源创建资源清单数据类型
string
字符串
boolean
布尔值
示例
12True/YesFalse/No
integer
整型
[ ]
列表类型
示例1
1['苹果','香蕉','桃子']
示例2
1234567891011121314ansible:yum: name: - nginx - mysql-server - php-fpmk8s:containers:- name: image: imagePullPolicy:- name: image: imagePullPolicy:
object
字典类型
示例
123name: zlsage: 18app: nginx
命令行创建POD123456789101112131415# 语法格式kubectl create [控制器名称] [POD名称] [--image=指定镜像]# 创建nginx的pod(根据资源自动指定node节点)kubectl create deploym ...
2.Kubernetes部署和基础命令
[toc]
安装准备环境准备
主机名
外网IP
内网IP
角色
应用
组件
k8s01
10.0.0.11
172.16.1.11
K8S Master
docker-19.03.15、kubeadm-1.19.3
apiServer、etcd、Scheduler、Controller、kubelet、proxy、docker
k8s02
10.0.0.12
172.16.1.12
K8S Node
docker-19.03.15
kubelet、proxy、docker
k8s03
10.0.0.13
172.16.1.13
K8S Node
docker-19.03.15
kubelet、proxy、docker
IP规划
三种Service
IP
Pod IP
10.2.0.0/16
Cluster IP
10.1.0.0/16
NodePort IP(宿主机IP)
10.0.0.0/24
K8S安装方式
二进制安装
ansible
kubeadm(生产最佳实践)
Rancher(图形化k8s管理界面)
云服务:ACK EKS
安装k ...
1.Kubernetes基础入门
[toc]
学习K8S参考网站官网:TP
官方文档:TP
官方介绍:TP
kubeadm官方文档:TP
docker官方文档:TP
prometheus官方文档:TP
ansible安装k8s项目:TP
阿里云K8S产品ACK:TP
aws亚马逊云K8S产品EKS:TP
腾讯云K8S产品TKE:TP
什么是k8s
多机编排工具
borg(最早期)
swarm(docker官方)
mesos
k8s(最强大)
声明式管理
Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。
Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为 k 和 s 之间有八个字符的关系。Google 在 2014 年开源了 Kubernetes 项目。 Kubernetes 建立在 Google 大规模运行生产工作负载十几年经验的基础上, 结合了社区中最优秀的想法和实践。
时光回溯
传统部署时代:
早期,各个组织是在物理 ...
9.Docker资源限制
[toc]
资源限制介绍官网:TP
带有内存、CPU 和 GPU 的运行时选项
默认情况下,容器没有资源限制,可以使用主机内核调度程序允许的尽可能多的给定资源。Docker 提供了控制容器可以使用多少内存或 CPU 的方法,设置docker run命令的运行时配置标志。
何时应该设置此类限制以及设置这些限制可能出现哪些影响?
其中许多功能需要您的内核支持 Linux 功能。要检查支持,您可以使用该 docker info命令。如果您的内核中禁用了某个功能,您可能会在输出的末尾看到如下警告:WARNING: no swap limit support
警告示例12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364# 检查功能是否完成docker infoClient: Docker Engine - Community Version: 24.0.2 Context: default Debug ...
8.Docker跨主机通信
[toc]
两台主机如何实现跨主机通信?
跨主机通信类型
静态路由
flannel
overlay
macvlan
calico
静态路由
flannel(最常用)
部署flannel网络结构环境准备
主机名
内网IP
外网IP
角色
应用
elkstack01
172.16.1.81
10.0.0.81
docker
docker、flannel
elkstack02
172.16.1.82
10.0.0.82
docker
docker、flannel
elkstack03
172.16.1.83
10.0.0.83
ETCD数据库
etcd
部署ETCD1234567891011121314151617181920212223242526272829303132333435363738# 安装etcdyum install -y etcd# 编辑etcd配置文件vim /etc/etcd/etcd.conf#[Member]ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_C ...
7.Docker容器化代码上线
[toc]
代码上线图示传统代码上线
容器化代码上线
容器化代码上线示例
使用docker-compose启动gitlab和jenkins
部署harbor私有镜像仓库
Jenkins从Gitlab上拉代码
使用docker部署web页面
环境准备
主机
内网IP
外网IP
应用
环境
docker01
172.16.1.81
10.0.0.81
Gitlab Jenkins
docker部署容器
docker02
172.16.1.82
10.0.0.82
Harbor
私有镜像仓库
docker03
172.16.1.83
10.0.0.83
web
部署代码
部署harbor私有镜像仓库12345678910111213141516171819202122232425262728# 下载Harborwget https://github.com/goharbor/harbor/releases/download/v2.8.1/harbor-offline-installer-v2.8.1.tgz# 安装docker-composeyum install - ...
6.Docker-compose单机编排工具
[toc]
Docker-compose介绍Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景
Docker-compose使用步骤
需要有一个镜像
dockerhub 拉镜像
dockerfile 自己制作镜像
docker-compose定义构成应用程序的服务
写一个yaml文件,来启动多个组件(容器)
启动docker-compose
Compose版本和Docker兼容性Docker-compose版本说明
Reference file
What changed in this version
Version 3
Version 3 updates
Versi ...
5.Docker私有仓库Harbor
[toc]
简介Harbor 是为企业用户设计的容器镜像仓库开源项目,包括了权限管理(RBAC)、LDAP、审计、安全漏洞扫描、镜像验真、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。Harbor私有仓库下载地址:https://github.com/goharbor/harbor/releases
Harbor部署及使用安装部署Harbor12345678910111213141516171819202122# 下载Harborwget https://github.com/goharbor/harbor/releases/download/v2.8.1/harbor-offline-installer-v2.8.1.tgz# 安装docker-composeyum install -y docker-compose# 解压Harbortar xf harbor-offline-installer-v1.9.0-rc1.tgz# 修改harbor中docker-compose文件名mv /root/harbor/harbor.yml ...
4.Docker网络
[toc]
Docker默认网络Docker网络模式概述Docker使用Linux桥接的方式,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。
Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法通过直接Container-IP访问到容器。如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主主机(端口映射),即docker run创建容器时候通过 -p 或 -P 参数来启用,访问容器的时候就通过[宿主机IP]:[容器端口]访问容器。
Docker网络模式工作方式1234567891011121314151617181920Docker自身的4种网络工作方式,和一些自定义网络模式.Docker容器与容器之间网络相互隔离。安装Docker时,它会自动创建三个网络,brid ...
3.Docker制作镜像
[toc]
手动制作wordpress镜像配置容器环境123456789101112131415161718192021# 启动centos:7镜像docker run -it centos:7 /bin/bash# 删除所有官方源rm -fr ./*# 更换阿里云的yum源curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repocurl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo# 准备php安装包docker cp php.tgz a0e746d7788f:/opt# 解压安装包tar xf php.tgz# 安装phpcd /opt && yum localinstall -y *.rpm# 安装nginxyum install -y nginx
在容器内部署wordpress123456789101112131415161718192021 ...