Kubernetes1-Jenkins+K8s[待更新]
官网> jenkins.io下载warjava -jarxxx.war启动访问:localhost:80801.继续安装插件系统管理->管理插件->可选插件->rebuilder 每次构建不用重新输入参数safe restart 安全重启jenkins2. 系统管理->2.1 安全配置configuration global secu...
文章目录
\=== |
- 服务docker化(打包->Dockerfile->docker run)
jar里的配置文件${mysql.address}可以在docker run --mysql.address=**.**.中配置 - 推送到docker仓库
2.1 docker pull registry(从hub.docker.com)上拉取私有仓库
2.2 vmvare/harbor - k8s
docker |
其他文章已介绍
服务编排框架 >K8s |
其他服务编排:Apache Mesos,Docker Swarm ,Google Kubernetes
Borg,它是Google内部使用的一个超大规模集群管理系统,它基于容器技术,目的是实现资源管理自动化
Kubernetes(简称K8s)可理解为Borg的一个开源版本
Kubernetes是一个开放的开发平台,无论是Go、Java或Python编写的服务,都可以轻松映射为Kubernetes的Service,并通过标准的TCP通信协议进行交互,因此现有系统可以非常容易的迁移到Kubernetes平台上。
- 自动化部署
- 大规模可伸缩(自动化复制,失效则替换)
- 应用容器化管理,可以自动升级
- 提供负载均衡
>架构设计
- kube-dns整个集群中dns,可以通过名字访问pod
- Scheduler:将未分发的pod绑定到可用的node节点上,存到etcd中
调度解决方案preselect预选规则
NodiskConflict挂载冲突 CheckNodeMemoryPressure检查节点内存压力 NodeSelector节点选择器 FitResource Affinity亲和性
- Controller Manager:维护状态,扩容,根据etcd中的信息,调用node中的kubelet创建pod 并且监控运行状况
- etcd:[DB]API server将处理结果存入高可用键值存储系统etcd中
node: 用于部署应用的服务器
Pod: 基本操作单元,也是一组容器(container)和卷(volume)的载体,整个kubernetes系统都是围绕着Pod展开(部署运行,保证数量,访问pod)
每个pod被分配一个独立的IP地址,pod中的每个容器共享网络命名空间,包括IP地址和网络端口。pod内的容器可以使用localhost相互通信。
Pod不一定是同一个应用,可以是同一个应用的不同版本
- 如何确定哪些Pod是一个Service? Label Selector: 定义service时指定标签,确认哪个service有哪些pod
- kube-proxy: Service内部的服务发现和负载均衡
- pod是短暂的,那么重启时IP地址可能会改变,这时可以使用Service
>Kubernetes网络
CNI
Flannel,Calico,Weave
Pod网络
>安装(点击参考其他文章)
K8s是靠主机名识别节点的,主机名不可相同
两台虚拟机:桥接模式(可以连接外网)
都要安装docker
都要安装kubeadm,kubelet和kubectl
都要禁用虚拟内存
Debian / Ubuntu
# Linux swapoff命令用于关闭系统交换区(swap area)。 -a 将/etc/fstab文件中所有设置为swap的设备关闭
swapoff -a
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
>基本命令 管理K8S
检查node是否readykubectl get node
检查所有pod是否正常kubectl get pod --all-namespaces -o wide
在node上执行kubeadm reset
可以断开node,然后重新join
在master上执行kubeadm reset
可以重新init
1.deployment
查看kubectl get deployment --all-namespaces
删除kubectl delete deployment namexxx
获取deployment描述信息
kubectl describe deploy xxxx
扩容4
kubectl scale deploy deploy_name --replicas=4
创建运行
kubectl run xx --image -port
更新镜像
kubectl set image deploy deploy名 容器名=新镜像:版本
查看结果
kubectl rollout status deploy deploy名
回滚操作
kubectl rollout undo deploy deploy名
2.service
查看kubectl get service --all-namespaces
创建servicekubectl create -f test.yml
3.pod
查看全部namespace的pod kubectl get po --all-namespaces
kubectl get po --all-namespaces -o wide
查看某个namespace下的pod kubectl --namespace kube-system get po
kubectl describe pod xxxx
复制文件 kubectlsqc cp smartlink-sqc-wordle-5d4548d948-q4m6x:usr/local/wordle-py/data/cdr_data-3004870-3004870-20190701-30.csv /tmp
查看日志
kubectl --namespace clink2 logs clink2-realtime-p244h
>配置文件 管理K8S
1.pod
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
创建kubectl create -f nginx-pod.yaml
创建pod不会创建deploy
2.deployment
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2 # 副本
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
创建kubectl create -f nginx-deployment.yaml
kubectl apply -f test.yaml
删除kubectl delete -f test.yaml
jenkins-自动化搭建测试环境 > jenkins.io |
springboot如何使用jenkins打包构建
http://www.ityouknow.com/springboot/2017/11/11/spring-boot-jenkins.html
下载war / java -jar xxx.war启动
访问:localhost:8080
1.继续安装插件
系统管理->管理插件->可选插件->
rebuilder 每次构建不用重新输入参数
safe restart 安全重启jenkins
2. 系统管理->
2.1 安全配置
configuration global security->授权策略->安全矩阵
2.1 用户管理
新建用户等用户操作
开发自动化部署任务
1.git同步最新的代码
2. maven打包
3. 停止tomcat,部署应用
4. 启动tomcat
HELM
Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来管理 Charts。有点类似于 Ubuntu 中的 APT 或 CentOS 中的YUM。
Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。
概念
- Helm (客户端)
Helm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。 - Tiller (服务器)
Tiller 是 Helm 的服务端,部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的请求,并根据 Chart 生成 Kubernetes 的部署文件( Helm 称为 Release ),然后提交给 Kubernetes 创建应用。Tiller 还提供了 Release 的升级、删除、回滚等一系列功能。 - Chart (软件包)
Helm 的软件包,采用 TAR 格式。类似于 APT 的 DEB 包或者YUM 的 RPM 包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件。 - Repoistory (Chart 软件仓库)
Helm 的软件仓库,Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository。 - Release
使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。
https://blog.csdn.net/bbwangj/article/details/81087911
更多推荐
所有评论(0)