Java开发必须掌握的运维知识 (十)-- Docker集群自动化部署管理:Kubernetes快速入门

一、什么是Kubernetes

Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。
Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。
Kubernetes官网地址

二、Kubernetes相关特性

Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes一个核心特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望运行。以下是Kubernetes相关特性:

1、自动包装

根据资源需求和其他约束自动放置容器,同时不会牺牲可用性,混合关键和最大努力的工作负载,以提高资
源利用率并节省更多资源。

2、横向缩放

使用简单的命令或 UI,或者根据 CPU 的使用情况自动调整应用程序副本数。

3、自动部署和回滚

Kubernetes 逐渐部署对应用程序或其配置的更改,同时监视应用程序运行状况,以确保它不会同时终止所有实例。 如果出现问题,Kubernetes会为您恢复更改,利用日益增长的部署解决方案的生态系统。

4、存储编排

自动安装您所选择的存储系统,无论是本地存储,如公有云提供商 GCP 或 AWS, 还是网络存储系统 NFS,iSCSI, Gluster, Ceph, Cinder, 或 Flocker。

5、自我修复

重新启动失败的容器,在节点不可用时,替换和重新编排节点上的容器,终止不对用户定义的健康检查做出响应的容器,并且不会在客户端准备投放之前将其通告给客户端。

6、服务发现和负载均衡

不需要修改您的应用程序来使用不熟悉的服务发现机制,Kubernetes 为容器提供了自己的 IP 地址和一组容器的单个 DNS 名称,并可以在它们之间进行负载均衡。

7、密钥和配置管理

部署和更新密钥和应用程序配置,不会重新编译您的镜像,不会在堆栈配置中暴露密钥(secrets)。

8、批处理

除了服务之外,Kubernetes还可以管理您的批处理和 CI 工作负载,如果需要,替换出现故障的容器。

使用Kubernetes可以在物理或虚拟机的Kubernetes集群上运行容器化应用,Kubernetes能够提供一个以容器为中心的基础架构,满足在生产环境中运行应用的一些常见需求,如:

  • 多个进程协同工作
  • 存储系统挂载
  • Distributing secrets
  • 应用健康检测
  • 应用实例的复制
  • Pod自动伸缩/扩展
  • Naming and discovering
  • 负载均衡
  • 滚动更新
  • 资源监控
  • 日志访问
  • 调度应用程序
  • 提供认证和授权

三、Kubernetes快速入门

1、环境准备

1)关闭CentOS防火墙

systemctl disable firewalld
systemctl stop firewalld

2)安装etcd和kubernetes软件

yum install -y etcd kubernetes

3)启动服务

systemctl start etcd
systemctl start docker
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl start kubelet
systemctl start kube-proxy

注:如果docker启动失败,请参考(vi /etc/sysconfig/selinux 把selinux后面的改为disabled,重启一波机器,再重启docker就可以了)

2、配置Kubernetes

1)Tomcat配置

kubectl create -f mytomcat.rc.yaml

mytomcat.rc.yaml 配置内容

apiVersion: v1
kind: ReplicationController
metadata:
	name: mytomcat
spec:
	replicas: 2
	selector:
		app: mytomcat
template:
	metadata:
		labels:
			app: mytomcat
spec:
	containers:
		- name: mytomcat
			image: tomcat:7-jre7
			ports:
			- containerPort: 8080
kubectl create -f mytomcat.svc.yaml

mytomcat.svc.yaml 配置内容

apiVersion: v1
kind: Service
metadata:
	name: mytomcat
spec:
	type: NodePort
	ports:
		- port: 8080
		nodePort: 30001
	selector:
		app: mytomcat

3、浏览测试

配置并启动完成后,打开浏览器测试是否成功启动docker的tomcat服务。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/stalin_/article/details/128178532