一、安装kubernetes
 
实验环境:
centos7.0(建议使用7.5版本)
实验机器IP:192.168.1.4
安装方式:yum安装
需求环境:Tomcat+Mysql
 
1:关闭防火墙
[root@k8s ~]# iptables -F
[root@k8s ~]# setenforce 0
 
2:由于使用centos7.0版本,安装包较为旧,update包
[root@k8s ~]# yum -y update
 
3:安装etcd和kubernetes(yum安装的kubernetes包比较老1.5版本,如果需要最新的去官网下载安装包)
[root@k8s ~]# yum -y install etcd kubernetes
 
4:修改配置文件
[root@k8s ~]# vim /etc/sysconfig/docker
修改下面内容:
--selinux-enabled更改为--selinux-enabled=false ##关闭selinux
--insecure-registry gcr.io ##添加到里面不让Https传输
 
修改完成内容如下:
# /etc/sysconfig/docker
 
# Modify these options if you want to change the way the docker daemon runs
OPTIONS='--selinux-enabled=false --insecure-registry gcr.io --log-driver=journald --signature-verification=false'
if [ -z "${DOCKER_CERT_PATH}" ]; then
DOCKER_CERT_PATH=/etc/docker
fi
 
[root@k8s ~]# vim /etc/kubernetes/apiserver
修改下面内容:
--admission_control参数中的ServiceAccount删除
 
修改完成内容如下:
# default admission control policies
KUBE_ADMISSION_CONTROL="--admission control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
 
5:准备工作
[root@k8s ~]# yum install python-rhsm-certificates
如果提示:python-rhsm-certificates-1.19.10-1.el7_4.x86_64 被已安装的 subscription-manager-rhsm-certificates-1.24.13-3.el7.centos.x86_64 取代,无须任何处理
 
解决方法:
[root@k8s ~]# rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm |cpio -iv --to-stdout ./etc/rhsm/ca/redhat- uep.pem > /etc/rhsm/ca/redhat-uep.pem
 
6:配置docker加速器
[root@k8s ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"]
}
 
7:启动所有服务
[root@k8s ~]# for s in etcd docker kube-apiserver kube-controller-manager kube-scheduler kubelet kube-proxy; do systemctl start $s; done
 
 
二、创建Mysql的RC和SVC
 
1:创建RC文件
[root@k8s ~]# vim mysql-rc.yaml
apiVersion: v1
kind: ReplicationController ##副本控制器RC
metadata:
name: mysql ##RC的名称,全局唯一
spec:
replicas: 1 ##Pod副本的期待数量
selector:
app: mysql ##符合目标的Pod拥有此标签
template: ##根据此模板创建Pod的副本(实例)
metadata:
labels:
app: mysql ##Pod副本拥有的标签,对应RC的Selector
spec:
containers: ##Pod内容器的定义部分
- name: mysql ##容器的名称
image: mysql:5.6 ##容器对应的Docker image
ports:
- containerPort: 3306 ##容器应用监听的端口号
env: ##注入容器内的环境变量
- name: MYSQL_ROOT_PASSWORD
value: "123456" ##数据库的密码
 
2:拉取mysql的docker镜像(此步骤可省略,kubernetes会自动去拉取,这里做演示)
[root@k8s ~]# docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
[root@k8s ~]# docker pull mysql:5.6
 
3:创建启动rc
[root@k8s ~]# kubectl create -f mysql-rc.yaml
replicationcontroller "mysql" created
 
4:查询是否有mysql-rc
[root@k8s ~]# kubectl get rc
NAME DESIRED CURRENT READY AGE
mysql 1 1 1 34m
 
5:查询pod的状态
[root@k8s ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
mysql-19h65 1/1 Running 0 34m
 
6:创建svc文件
[root@k8s ~]# vim mysql-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
 
7:创建启动svc
[root@k8s ~]# kubectl create -f mysql-svc.yaml
service "mysql" created
 
8:查询svc运行状态
[root@k8s ~]# kubectl get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.254.0.1 <none> 443/TCP 33m
mysql 10.254.27.65 <none> 3306/TCP 13s
 
三、创建Tomcat的RC和SVC
 
1:创建RC文件
[root@k8s ~]# vim tomcat-rc.yaml
apiVersion: v1
kind: ReplicationController ##副本控制器RC
metadata:
name: tomcat ##RC的名称,全局唯一
spec:
replicas: 1 ##Pod副本的期待数量
selector:
app: tomcat ##符合目标的Pod拥有此标签
template: ##根据此模板创建Pod的副本(实例)
metadata:
labels:
app: tomcat ##Pod副本拥有的标签,对应RC的Selector
spec:
containers: ##Pod内容器的定义部分
- name: tomcat ##容器的名称
image: kubeguide/tomcat-app:v1 ##容器对应的Docker image
ports:
- containerPort: 8080 ##容器应用监听的端口号
env:
- name: MYSQL_SERVICE_HOST
value: 'mysql_service_ip'
- name: MYSQL_SERVICE_PORT
value: '3306'
 
2:创建启动rc
[root@k8s ~]# kubectl create -f tomcat-rc.yaml
replicationcontroller "tomcat" created
 
3:查询是否有tomcat-rc
[root@k8s ~]# kubectl get rc
NAME DESIRED CURRENT READY AGE
mysql 1 1 1 1h
tomcat 1 1 1 14m
 
4:查询pod的状态
[root@k8s ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
mysql-19h65 1/1 Running 0 1h
tomcat-p9x0h 1/1 Running 0 14m
 
5:创建svc文件
[root@k8s ~]# vim tomcat-svc.yaml
kind: Service
metadata:
name: tomcat
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30001 ##设置映射端口,本机IP加此port供外部访问,该端口号不能小于30000
selector:
app: tomcat
 
6:创建启动svc
[root@k8s ~]# kubectl create -f tomcat-svc.yaml
service "tomcat" created
 
7:查询svc运行状态
[root@k8s ~]# kubectl get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.254.0.1 <none> 443/TCP 1h
mysql 10.254.27.65 <none> 3306/TCP 1h
tomcat 10.254.250.150 <nodes> 8080:30001/TCP 10m
 
四、测试
 
1:用curl命令
[root@k8s ~]# crul 10.254.250.150:8080
[root@k8s ~]# crul 192.168.1.4:30001
 
2:浏览器访问,添加防火墙规则
[root@k8s ~]# iptables -P FORWARD ACCEPT
输入IP:PORT(注意该端口是映射的30001端口,不是8080)

 

kubernetes-单机实验(入门)的更多相关文章

  1. kubernetes入门(10)kubernetes单机安装后 - helloworld

    前言 查看端口是否被监听了 ::netstat -tlp |grep 31002 我是用的yum install etcd kubernetes docker vim, 这样装的是1.5.2,不是最新 ...

  2. 3、kubernetes应用快速入门190625

    一.kubernetes应用入门 1.kubectl命令 Basic Commands create Create a resource from a file or from stdin. expo ...

  3. centos7 kubernetes单机安装

    单机版的kubernetes 适合初学者,对kuber有个很好的入门. 因为centos系统内置了安装源.我们可以直接安装 1.yum install -y etco kubernetes 2.whe ...

  4. kubernetes单机板

    参考地址: *** http://blog.csdn.net/carter115/article/details/51121223 ** http://www.cnblogs.com/dongdong ...

  5. Kubernetes单机安装部署

    系统环境: Ubuntu 16.04.2 LTS 软件环境: Docker 1.12.6 Go 1.8.3 Etcd 3.1.8 Flannel 0.7.1 Kubernetes master 1.7 ...

  6. Kubernetes服务发现入门:如何高效管理服务?

    愈发复杂的应用程序正在依靠微服务来保持可扩展性和提升效率.Kubernetes为微服务提供了完美的环境,并能够让其与Kubernetes的工具组件和功能兼容.当应用程序的每个部分放置在一个容器中,整个 ...

  7. Kubernetes 学习4 kubernetes应用快速入门

    一.相关命令 1.kubectl 通过连接api server 进行各k8s对象资源的增删改查,如pod,service,controller(控制器),我们常用的pod控制器replicaset,d ...

  8. kubernetes 应用快速入门

    使用kubectl进行增.删.查.改等常用操作 查看kubectl命令帮助 kubectl -h kubectl controls the Kubernetes cluster manager. Fi ...

  9. kubernetes快速应用入门

    kubectl 就是 api server的客户端工具 创建一个nginx的pod [root@master ~]# kubectl run nginx-deploy --image=nginx:1. ...

随机推荐

  1. 力扣(LeetCode)删除排序链表中的重复元素II 个人题解

    给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 思路和上一题类似(参考 力扣(LeetCode)删除排序链表中的重复元素 个人题解)) 只不过这里需要用到一个前 ...

  2. ubantu删除源码安装文件

    1.在安装目录下执行 make uninstall (如安装目录为/opt/software/opencv3.1.0/release) 2.删除系统相关文件 cd /usr sudo find . - ...

  3. vue computed计算属性 watch监听

    计算属性 computed:{ 变量:function(){ return 计算好的值 } } 这时候计算好的值 就付给了你的变量 在实例中可以this.使用 注意 声明的变量的data中不可以重复声 ...

  4. nslookup命令查找域名

    了解 DNS 域名服务 熟悉使用 nslookup 查找 DNS 服务器上登记的域名,记录几次查询的结果, 及服务器的 ip. 1. 某个子域下的一部分主机的名字- IP 地址对应关系,如 flame ...

  5. day 40 文本属性 常用css属性 定位

    一. 浮动的特性 1.浮动的元素脱标 2.浮动的元素互相贴靠 3.浮动的元素由"字围"效果 4.收缩的效果 前提是标准文档流,margin的垂直方向会出现塌陷问题. 如果盒子居中: ...

  6. Python3学习-基础

    1.直接运行.py文件 在Windows上是不行的,但是在Mac和Linux上是可以的,方法是在.py文件的第一行加上一个特殊的注释: #!/usr/bin/env python3 print('he ...

  7. 《程序人生》系列-害敖丙差点被开除的P0事故

    你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub https://github.com/JavaFamily上已经收录有一线大厂面试点脑图.个人联系方式和技术交流群,欢迎Star和指教 ...

  8. PHP后端代码生成微信小程序带参数的二维码保存成jpg图片上传到服务器getwxacodeunlimit

    老板最近有点飘了,他要在PC端的网站放一个微信小程序的二维码,并且扫描这个二维码以后要跳到小程序对应的房源详情页. 这是微信官方给出的文档,连接地址:https://developers.weixin ...

  9. 《手把手教你》系列练习篇之7-python+ selenium自动化测试 -压轴篇(详细教程)

    1. 简介 “压轴”原本是戏曲名词,指一场折子戏演出的倒数第二个剧目.在现代社会中有很多应用,比如“压轴戏”,但压轴也是人们知识的一个盲区.“压轴”本意是指倒数第二个节目,而不是人们常说的倒数第一个, ...

  10. C语言I博客作业01

    C语言I博客作业01 作业1 这个作业属于哪个课程? C语言程序设计I 这个作业要求在哪里? https://edu.cnblogs.com/campus/zswxy/CST2019-2/homewo ...