【7年工作-Java技术栈整理】——容器化编排技术K8S——单机版K8S最简安装 【练手k8s必备】_Coder_Boy_的博客-程序员信息网

技术标签: DevOps  K8S  docker  

 

1 . kubernetes单机版搭建

一、实验环境

虚拟机vmware:Centos7
ip:192.168.146.132
内存:1G
硬盘:20G

二、kubernetes单机版环境搭建

1、关闭CentOS自带的防火墙

systemctl disable firewalld
systemctl stop firewalld

2、安装etcd和Kubernetes软件(会自动安装Docker软件)

yum install -y etcd kubernetes

3、修改配置文件

修改/etc/sysconfig/docker,修改为:

OPTIONS='--selinux-enabled=false --insecure-registry gcr.io'

Kubernetes apiserver配置文件/etc/kubernetes/apiserver中,把--admission_control参数中的ServiceAccount删除

4、配置CentOS证书

参考内容:Kubernetes创建pod一直处于ContainerCreating排查和解决
因为拉取gcr.io的镜像需要redhat的证书,但是系统默认是没有的,所以,这里我们自己添加。

安装rhsm

yum install -y *rhsm*

通过python-rhsm-certificates的rpm包获得证书:

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm

rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem

安装完成后,执行一下docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest

5、配置docker阿里云镜像加速

这个镜像仓库是我个人在阿里云申请的:

mkdir -p /etc/docker

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ckq4qobq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

systemctl deamon-reload
systemctl restart docker

6、启动所有服务

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

三、搭建服务

从github上下载需要的yaml文件:
需要用到的是 java_web_app 文件夹内内容
下载地址:https://github.com/bestlope/k8s_practice
或者:git clone https://github.com/bestlope/k8s_practice.git

1、搭建mysql服务

cd k8s_practice/java_web_app/mysql

#启动mysql的RC服务
kubectl create -f mysql-rc.yaml

#查看刚刚创建的RC
kubectl get rc

#查看pod创建的情况
kubectl get pods

#启动mysql的SVC服务
kubectl create -f mysql-svc.yml

#查看刚刚创建的service
kubectl get svc

2、启动tomcat应用

cd k8s_practice/java_web_app/tomcat

#创建tomcat的RC服务
kubectl create -f myweb-rc.yaml

#创建tomcat的SVC服务
kubectl create -f myweb-svc.yaml

3、通过浏览器访问网页

访问:http://192.168.146.132:30001/

成功看到跳转到Tomcat页面,即成功单机版 K8S 搭建。

 

2. 部署一个spring-boot项目

      开发一个spring boot 项目 基于JPA操作MySQL的CRUD.

      项目目录结构如下:

       

核心配置文件: 

Dockerfile:

FROM openjdk:8-jdk-alpine
#将本地文件挂到到/tmp目录
VOLUME /tmp
#复制文件到容器
ADD spring-boot-docker-1.0.jar /app.jar
#暴露8080端口
EXPOSE 8081
#配置启动容器后执行的命令
ENTRYPOINT ["java","-jar","/app.jar"]

k8s-app-mysql.yaml 

apiVersion: v1
kind: Service
metadata:
  name: k8s-app
  namespace: default
  labels:
    app: k8s-app
spec:
  type: NodePort
  ports:
  - port: 8081
    nodePort: 30002
  selector:
    app: k8s-app

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: k8s-app
  labels:
    app: k8s-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: k8s-app
  template:
    metadata:
      labels:
        app: k8s-app
    spec:
      containers:
      - name: k8s-app
        image: k8s-mysql:latest
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8081
        livenessProbe:
          httpGet:
            port: 8081
            path: /
            scheme: HTTP
          periodSeconds: 15
          initialDelaySeconds: 30

 pom.xml : 配置项目依赖与Docker插件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.neo</groupId>
	<artifactId>spring-boot-docker</artifactId>
	<version>1.0</version>
	<packaging>jar</packaging>

	<name>spring-boot-docker</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.0.RELEASE</version>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
		<docker.image.prefix>springboot</docker.image.prefix>
	</properties>

	<dependencies>
	     <dependency>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter-web</artifactId>
	    </dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.34</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<!-- Docker maven plugin -->
			<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<version>1.0.0</version>
				<configuration>
					<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
					<dockerDirectory>src/main/docker</dockerDirectory>
					<resources>
						<resource>
							<targetPath>/</targetPath>
							<directory>${project.build.directory}</directory>
							<include>${project.build.finalName}.jar</include>
						</resource>
					</resources>
				</configuration>
			</plugin>
			<!-- Docker maven plugin -->
		</plugins>
	</build>
	

</project>

 后台部署:

 docker build -t k8s-mysql . 构建镜像

docker images  查询构建的镜像

kubectl create -f k8s-app-mysql.yaml 创建k8s管理的service 、deployment 对外暴露服务

   最终效果先展示一下:

   

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Coder_Boy_/article/details/107096191

智能推荐

[Linq]LINQ的左连接、右连接、内连接_厦门德仔的博客-程序员信息网_c# linq 左连接

1、左连接:var LeftJoin = from emp in ListOfEmployeesjoin dept in ListOfDepartmenton emp.DeptID equals dept.ID into JoinedEmpDeptfrom dept in JoinedEmpDept.DefaultIfEmpty()select new {EmployeeName = emp.Name,DepartmentName = dept

字符型图片验证码识别完整过程及Python实现_风中追风风的博客-程序员信息网

1摘要验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的防火墙功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越来越严峻。本文介绍了一套字符验证码识别的完整流程,对于验证码安全和OCR识别技术都有一定的借鉴意义。文章更新:2017-09-20本文的基于传统的机器学习SVM的源码共享:介绍文章:http://www.cnblogs.com/bee...

ArcGIS学习总结(九)——将.kml转换为.shp_Arcgiser的博客-程序员信息网_kml转shp

打开ArcMap,选择ArcToolbox-&gt;Conversion Tools-&gt;From KML-&gt;KML To Layer在打开的对话框中选择Input KML File,其他选项默认即可。本次所选择的kml文件中包含了点和线。点击ok,弹出进度条对话框,转换完成以后对话框自动关闭。...

C语言字符串输入函数 scanf,gets,fgets 的比较与解析_OneLine_的博客-程序员信息网_c语言中文件的字符串输入函数是

想先讲一下,关于输入字符串输入如果是单个字符输入 要在输入前后都要加上 getchar() 读取空字符个人经验,如有错误请指出。原博地址:https://blog.csdn.net/jzqt_t/article/details/38315675许多ACMer在做ACM题时经常会被一些字符串输入搞混,如果认为几个字符串输入函数的功能基本一样那就大错特错了。今天把C语言中的三个字符串输入函数(scan...

python3.6环境下使用pyinstaller无法成功生成EXE可执行文件_晒太阳的魚的博客-程序员信息网

目前pyinstaller稳定版Release 3.2.1: stable, supports Python 2.7, 3.3–3.5,不支持python 3.6(可以安装,但无法使用)。使用3.6的亲们可以使用“pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz”命令安装最新的开发版pyins...

随便推点

linux的traceroute命令详解_雪域白狼的博客-程序员信息网_traceroute6

traceroute命令详解traceroute [-46dFITUnrAV] [-f first_ttl] [-g gate,...]        [-i device] [-m max_ttl] [-p port] [-s src_addr]        [-q nqueries] [-N squeries] [-t tos]        [-l flow_label] [-w wait...

测试人生 | 突破“大专学历+半路转行”标签,从拉垮到测试团队骨干,走到这一步很知足_霍格沃兹测试开发的博客-程序员信息网

原文链接️ 关注霍格沃兹测试学院公众号,回复「面试」,领取测试开发面试真题合集!编者按:本文是霍格沃兹测试学院学员 @XiaoW 分享的测试人生故事,作为学习群阳光活跃的“学习小王子”,背后竟有如此曲折和令人钦佩的经历,这种积极向上的力量极具感染力,也发人深省,当幸福来敲门时,你是否做好了准备?在霍格沃兹测试学院收获很多,应学院的邀请,分享下我个人的测试技术成长经历,深感荣幸,请大家多多指教!为告别频繁出差,从传统制造业转向 IT 行业我转行进入 IT 行业有 2 年多时间了,在这之前,一直

自适应滤波:维纳滤波器——LCMV及MVDR实现_weixin_33734785的博客-程序员信息网

作者:桂。时间:2017-03-24  06:52:36链接:http://www.cnblogs.com/xingshansi/p/6609317.html 声明:欢迎被转载,不过记得注明出处哦~ 【读书笔记03】前言西蒙.赫金的《自适应滤波器原理》第四版,上一篇看到维纳滤波基本形式:最优化问题,且无任何条件约束。这次看到有约束的部分,简单整理一下思路: ...

MD5摘要算法的几种解密方法,分享md5免费解密网站_哈客部落的博客-程序员信息网_md5解密

在一个md5解密交流群看到有人讨论MD5算法解密,消息有上百条,但是具体怎么解密却没人讨论。所以,今天就这个话题浅谈一下MD5摘要算法的几种解密方法,以及分享使用MD5免费解密网站如何进行md5加密解密,大家可要轻点喷。...

hive 表存储大小_Hive中文件存储格式及大小比较测试_逍遥Eric的博客-程序员信息网

在hive中创建表是有如下一个语句[ROW FORMAT row_format]row_format 的类型有如下:file_format:: SEQUENCEFILE| TEXTFILE -- (Default, depending on hive.default.fileformat configuration)| RCFILE -- (Note: Available in H...

推荐文章

热门文章

相关标签