深入理解Pod对象:基本管理
Pod基本概念
Pod是Kubernetes创建和管理的最小单元,一个Pod由一个容器 或多个容器组成,这些容器共享存储、网络。
Pod特点:
一个Pod可以理解为是一个应用实例,提供服务
Pod中容器始终部署在一个Node上
Pod中容器共享网络、存储资源
Kubernetes直接管理Pod,而不是容器
Pod存在的意义
Pod主要用法:
运行单个容器:最常见的用法,在这种情况下,可以将Pod看做是单个容器的抽象封装
运行多个容器:封装多个紧密耦合且需要共享资源的应用程序
如果有这些需求,你可以运行多个容器:
两个应用之间发生文件交互
两个应用需要通过127.0.0.1或者socket通信
两个应用需要发生频繁的调用
Pod资源共享实现机制
共享网络:将业务容器网络加入到“负责网络的容器”实现网络共享
测试验证是否共享网络:
vim pod-net.yaml
apiVersion: v1kind: Podmetadata: name: my-podspec: containers: - name: web image: ...
资源编排(YAML)
YAML文件格式说明
K8s是一个容器编排引擎,使用YAML文件编排要部署应用,因此在学习之前,应先了解YAML语法格式:
缩进表示层级关系
不支持制表符“tab”缩进,使用空格缩进
通常开头缩进 2 个空格
字符后缩进 1 个空格,如冒号、逗号等
“—” 表示YAML格式,一个文件的开始
“#”注释
YAML文件创建资源对象
等同于:kubectl create deployment web --image=lizhenliang/java-demo -n default
apiVersion: apps/v1kind: Deploymentmetadata: name: web namespace: defaultspec: replicas: 3 selector: matchLabels: app: web template: metadata: labels: app: web spec: containers: - name: web image: ...
kubectl命令行管理工具
kubeconfig配置文件
kube-apiserver两个端口:
localhost:8080 非安全端口,是kubectl默认先连接8080,如果你配置kubeconfig(.kube/config)就直接走这个配置连接的安全端口
masterip:6443 安全端口
命令行指定配置文件:
kubectl get node --kubeconfig=admin.conf
拷贝认证文件到其他节点的(.kube/config)下:
scp .kube/config root@192.168.0.12:.kube/
kubectl使用kubeconfig认证文件连接K8s集群, 使用kubectl config指令生成kubeconfig文件。
kubectl管理命令概要
官方文档参考地址:https://kubernetes.io/zh/docs/reference/kubectl/overview/
牛刀小试,快速部署一个网站
使用Deployment控制器部署镜像:
kubectl create deployment web --image=lizhenl ...
快速部署一个K8s集群
生产环境部署K8s的2种方式
kubeadm
Kubeadm是一个工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。
部署地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
二进制
推荐,从官方下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。
下载地址:https://github.com/kubernetes/kubernetes/releases
服务器硬件配置推荐
使用kubeadm快速部署一个K8s集群
192.168.0.11/24
192.168.0.12/24
192.168.0.13/24
k8s-master
k8s-node1
k8s-node2
kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。
这个工具能通过两条指令完成一个kubernetes集群的部署:
# 创建一个 Master 节点$ kubeadm init# 将一个 Node 节点加入到当前集群中 ...
Kubernetes核心概念
有了Docker,为什么还用Kubernetes?
为提高业务并发和高可用,会使用多台服务器,因此会面向这些问题:
多容器跨主机提供服务
多容器分布节点部署
多容器怎么升级
怎么高效管理这些容器
容器编排系统:
Kubernetes
Swarm
Mesos Marathon
Kubernetes是什么
Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8s。
Kubernetes用于容器化应用程序的部署,扩展和管理,目标是让部署容器化应用简单高效
官方网站:http://www.kubernetes.io/
官方文档:https://kubernetes.io/zh/docs/home/
Kubernetes集群架构与组件
Master组件
kube-apiserver
Kubernetes API,集群的统一入口,各组件协调者,以RESTful API提供接口服务,所有对 象资源的增删改查和监听操作都交给 APIServer处理后再提交给Etcd存储。
kube-con ...
容器化搭建个人博客系统
Dockerfile涉及相关的文件及安装包
dockerfile.zip
前端项目镜像构建与部署:Nginx
nginx目录文件: 1.Dockerfile 2.nginx-1.15.5.tar.gz 3.nginx.conf4.php.conf
Dockerfile
FROM centos:7LABEL maintainer www.ctnrs.comRUN yum install -y gcc gcc-c++ make \ openssl-devel pcre-devel gd-devel \ iproute net-tools telnet wget curl && \ yum clean all && \ rm -rf /var/cache/yum/*ADD nginx-1.15.5.tar.gz /RUN cd nginx-1.15.5 && \ ./configure --prefix=/usr/local/nginx \ --with-http_ssl_module \ --wit ...
基于Docker构建企业Jenkins平台
CI/CD概述
持续集成(Continuous Integration,CI):代码合并、构建、部署、测试都在一起,不断地执行这个过程,并对结果反馈。
持续部署(Continuous Deployment,CD):部署到测试环境、预生产环境、生产环境。
持续交付(Continuous Delivery,CD):将最终产品发布到生产环境,给用户使用。
CI工作流程设计
开发者提交代码到gitlab仓库,gitlab随后触发jenkins代码编译,构建镜像以及推送镜像到harbor仓库,紧接着Jenkins部署到docker主机(从harbor仓库拉取镜像到本地部署启动)。
gitlab主机
jenkins主机
harbor主机
192.168.0.11/24
192.168.0.13/24
192.168.0.12/24
项目环境表
1、部署Gitlab
1.1 部署Gitlab
mkdir gitlabcd gitlabdocker run -d \ ...
实现Docker容器多主机通信
跨主机网络:实现Docker容器多主机通信
Flannel是CoreOS维护的一个网络组件,在每个主机上运行守护 进程负责维护本地路由转发,Flannel使用ETCD来存储容器网络 与主机之前的关系。
其他主流容器跨主机网络方案:
• Weave
• Calico
• OpenvSwitch
1、etcd安装并配置(任意找一台节点安装即可)
yum -y install etcdvim /etc/etcd/etcd.conf ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_CLIENT_URLS="http://192.168.0.11:2379"ETCD_NAME="default"ETCD_ADVERTISE_CLIENT_URLS="http://192.168.0.11:2379"systemctl start etcdsystemctl enable etcdss -anpt |grep 2379
2、flanneld安装并配置(两台跨 ...
Harbor部署
Harbor 概述
Harbor是由VMWare公司开源的容器镜像仓库。事实上,Harbor是在Docker Registry上进行了相应的企业级扩展, 从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及 审计日志等,足以满足基本企业需求。
官方:https://goharbor.io/
Github:https://github.com/goharbor/harbor
Harbor 部署先决条件
服务器硬件配置:
最低要求:CPU2核/内存4G/硬盘40GB
推荐:CPU4核/内存8G/硬盘160GB
软件:
Docker CE 17.06版本+
Docker Compose 1.18版本+
Harbor安装有2种方式:
在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小
离线安装:安装包包含部署的相关镜像,因此安装包比较大
Harbor 部署HTTP
1、先安装Docker和Docker Compose
https://github.com/docker/compose/releases
2、部署 ...
镜像的制作CMD与ENTRYPOINT区别
1.构建镜像时必须指定一个CMD 或者ENTRYPOINT 去夯住进程,不让它退出,放在容器前台执行,否则容器就退出了。
2.CMD exec 形式变量传参需要指定(“sh”,“-c”,“/usr/bin/run.sh $abc”)
FROM centos:7
LABEL maintalner liuzhe
COPY run.sh /usr/bin
ENV abc=azhe
EXPOSE 80
CMD [“sh”,“-c”,“/usr/bin/run.sh $abc”]
3.CMD shell形式直接使用变量传参
FROM centos:7
LABEL maintalner liuzhe
COPY run.sh /usr/bin
ENV abc=azhe
EXPOSE 80
CMD run.sh $abc
4.docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
docker run -d test run.sh liuzhe
通过命令行指定的形式覆盖Dockerfile 中的CMD命令
5.docker run [OPTIONS] IMAGE [CO ...