kubernetes 权威指南 从一个简单例子开始

100条k8s命令及例子 【代码】100条k8s命令及例子。 阅读详情

转载改编自  https://blog.youkuaiyun.com/hahaxu/article/details/79772296

 

目录

一、描述

二、环境准备

1、关闭CentOS 自带防火墙服务

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

3、安装好软件后,修改两个配置文件

4、按顺序启动所有服务:

5、Docker拉取mysql镜像和tomcat镜像

三、启动MySql服务

1、首先为MySql服务创建一个RC定义文件:mysql-rc.yaml

2、发布到Kubernetes集群

四、构建Mysql Kubernetes Service定义文件

1、创建Service

2、查看创建的service

五、启动Tomcat应用

1、创建对应的RC文件myweb-rc.yaml

2、发布到Kubernetes集群

六、构建Tomcat Kubernetes Service定义文件

1、创建Service

2、查看创建的Service

七、通过浏览器访问页面


附录 k8s 常用用法

kubectl get po   显示所有的 pod, 准确的说是显示 default 命名空间下的所有pod

kubectl get no   显示所有的node

kubectl get svc

kubectl get rc

kubectl get svc

kubectl get po --all-namespaces   所有命名空间下的pod

kubectl get po -n kube-system   只显示 kube-system 命名空间下的所有pod

kubectl describe no node-name  显示node-name指定的 node 的详细情况

kubectl describe po pod-name     显示 pod-name 指定的 pod 的详细情况 

describe 可以用于各种 k8s 资源, 比如 rc  ns  svc

 

标签

kubectl get po -l gpu=true   显示标签为 gpu=true的所有po

kubectl label no 192.168.254.157 gpu=true   给node  192.168...  添加 gpu=true标签

 

 

参考 《kubernetes 权威指南》一节的 从一个简单例子开始,操作实录。

一、描述

创建一个简单的Java web程序,此 Java Web 应用 的 结构 比较 简单, 是一 个 运行 在 Tomcat 里 的 Web App, 如图 1. 1 所示, JSP页面通过 JDBC 直接访问 MySQL 数据库并展示数据。 为了演示和简化的目的,只要程序正确连接到了数据库上,它就会自动完成对应的 Table的创建与初始化数据的准备工作。所以,当我们通过浏览器访问此应用的时候,就会显示一个表格的页面,数据则来自数据库。
Java Web应用的架构组成
此应用需要启动两个容器:Web App容器和MySQL容器,并且Web App容器需要访问MySQL容器。 在Docker 时代,假设我们在一个宿主机上启动了这两个容器,则我们需要把MySQL容器的 IP 地址通过环境变量的方式注入Web App容器里;同时,需要将 WebApp 容器的8080 端口映射到宿主机的8080端口,以便能在外部访问。在本章的这个例子里,我们看看在Kubernetes 时代是如何完成这个目标的。

二、环境准备

1、关闭CentOS 自带防火墙服务

# systemctl disable firewalld
# systemctl stop firewalld

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

# yum install -y etcd kubernetes

3、安装好软件后,修改两个配置文件

Docker配置文件 /etc/sysconfig/docker,其中OPTIONS的内容设置为:

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

Kubernets apiserver配置文件 /etc/kubernetes/apiserver,将 –adminssion_control参数中的ServiceAccount删除

4、按顺序启动所有服务:

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

5、Docker拉取mysql镜像和tomcat镜像

mysql镜像

docker pull mysql:5.6

注意 这里 拉取的是 mysql:5.6   不可以是最新的版本,否则由于驱动的问题,会导致jdbc 数据库连接错误。

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database 

tomcat镜像

docker pull kubeguide/tomcat-app:v1

三、启动MySql服务

1、首先为MySql服务创建一个RC定义文件:mysql-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.6
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"

2、发布到Kubernetes集群

1)、创建RC

# kubectl create -f mysql-rc.yaml

2)、验证创建是否成功

kubectl get rc

rc创建没成功

kubectl get pods

pods创建没成功

* 没创建成功 * 一直处于ContainerCreating

3)、查找kubernetes pod卡在ContainerCreating状态原因并解决

主要是通过“kubectl describe pod PodName”指令查看pod发生的事件,从事件列表中可以查找到错误信息。

# kubectl describe pod mysql

错误信息

通过最后一行错误提示,下载镜像超时,访问地址被墙了

从国内镜像下载pod-infrastructure,使用阿里镜像服务,或者国内其它镜像服务
下载地址 registry.cn-hangzhou.aliyuncs.com/sunyuki/pod-infrastructure,并且重新命名。 f66f4bd9b894 是我这里下载pod-infrastructure的imageId

# docker pull registry.cn-hangzhou.aliyuncs.com/sunyuki/pod-infrastructure
# docker tag f66f4bd9b894 registry.access.redhat.com/rhel7/pod-infrastructure:latest

删除之前创建的rc,重新创建MySql Rc

# kubectl delete -f mysql-rc.yaml
# kubectl create -f mysql-rc.yaml

使用 # kubectl describe pod mysql 查看是否创建成功
这里写图片描述
通过docker ps指令查看正在运行的容器

# docker ps | grep mysql

这里写图片描述

四、构建Mysql Kubernetes Service定义文件

文件名为 mysql-scv.yaml

内容:

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
    - port: 3306
  selector:
    app: mysql

1、创建Service

# kubectl create -f mysql-scv.yaml

2、查看创建的service

# kubectl get svc
[root@localhost test]# kubectl get svc
NAME         CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
kubernetes   10.254.0.1       <none>        443/TCP    1d
mysql        10.254.138.253   <none>        3306/TCP   1m

注意到MySql服务被分配了一个值为10.254.138.253的ClusterIP地址,这是一个虚地址,随后Kubernetes集群中其他新创建的Pod就可以通过Service的ClusterIP+端口号6379来连接和访问它。根据Service的唯一名字,容器可以从环境变量中获取到Service对应的ClusterIP地址和端口,从而发起TCP/IP连接请求了。

五、启动Tomcat应用

上面我们定义和启动了MySql服务,接下来我们采用同样的步骤,完成Tomcat应用的启动过程。

1、创建对应的RC文件myweb-rc.yaml

内容:

kind: ReplicationController
metadata:
  name: myweb
spec:
# Pod的数量
  replicas: 1
# spec.selector与spec.template.metadata.labels,这两个字段必须相同,否则下一步创建RC会失败。
  selector:
    app: myweb
  template:
    metadata:
      labels:
        app: myweb
#   容器组的定义
    spec:
      containers:
#       容器名称
        - name: myweb
#         容器对应的镜像
          image: kubeguide/tomcat-app:v1
          ports:
#         在8080端口上启动容器进程,PodIP与容器端口组成Endpoint,代表着一个服务进程对外通信的地址
          - containerPort: 8080
          env:
          - name: MYSQL_SERVICE_HOST
            value: 'mysql'
          - name: MYSQL_SERVICE_PORT
            value: '3306'

2、发布到Kubernetes集群

1)、创建RC

# kubectl create -f myweb-rc.yaml

2)、验证创建是否成功

# kubectl get rc
# kubectl get pods

创建成功
这里写图片描述

六、构建Tomcat Kubernetes Service定义文件

文件名为 myweb-svc.yaml

内容:

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

1、创建Service

# kubectl create -f myweb-svc.yaml

2、查看创建的Service

# kubectl get svc
[root@localhost test]# kubectl get svc
NAME         CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes   10.254.0.1       <none>        443/TCP          1d
mysql        10.254.138.253   <none>        3306/TCP         34m
myweb        10.254.29.1      <nodes>       8080:30001/TCP   1m

myweb可以通过30001这个端口访问myweb(对应到8080的虚端口上)

七、通过浏览器访问页面

可以通过本机IP/127.0.0.1:30001打开tomcat页面。

然鹅,我们使用127.0.0.1:30001/demo打开页面提示jdbc数据库连接错误。

[root@localhost ~]# kubectl get ep
NAME         ENDPOINTS                                                     AGE
kubernetes   192.168.80.128:6443                                           9h
mysql        172.17.0.7:3306                                               9h
myweb        172.17.0.2:8080,172.17.0.3:8080,172.17.0.4:8080 + 2 more...   9h
[root@localhost ~]# kubectl exec -ti myweb-qrjsd -- /bin/bash
root@myweb-qrjsd:/usr/local/tomcat# echo $MYSQL_SERVICE_HOST
mysql
root@myweb-qrjsd:/usr/local/tomcat# echo "172.17.0.7      mysql" >> /etc/hosts
root@myweb-qrjsd:/usr/local/tomcat# 

注意: mysql 对应的 ip 地址,大家电脑上的应该不一样,根据 kubctl get rp 返回的 mysql ip信息来配置。 其实就是人肉把域名ip给加上去 

经过上面的几个步骤,我们终于成功实现了Kubernets上第1个例子部署搭建工作,在浏览器打开,地址 http://虚拟机IP:30001/demo/
这里写图片描述

Ubuntu20.04下SRS流媒体服务器的安装与开机自启动优化指南 本文详细介绍了在Ubuntu20.04系统下安装SRS流媒体服务器并优化开机自启动的完整指南。从基础环境准备、服务管理方案对比到systemd自启动深度优化,提供了实用的配置技巧和排查方法,帮助用户快速搭建稳定的流媒体服务环境。特别推荐使用systemd方案实现高效的自启动管理。 阅读详情

相关推荐

iOS安全攻防:从DarkSword漏洞利用链剖析到纵深防御实践

在移动安全领域,内存破坏漏洞(如堆溢出、释放后使用)是攻击者突破系统防线、实现远程代码执行和权限提升的核心技术原理。这些漏洞利用技术通过精心构造的攻击链,能够绕过沙箱、地址空间布局随机化等安全机制,最终威胁设备内核安全,其技术价值在于揭示了系统安全架构的潜在薄弱环节。在iOS应用开发与系统防护中,理解此类攻击链对于构建有效的纵深防御体系至关重要。应用场景涵盖从安全编码、网络通信加固到运行时应用程序自保护等多个层面。本文以DarkSword工具包为例,深入拆解其利用链,并分享如何通过内存安全实践、代码签名强化

weixin_30357231的博客 480

K8S(kubernetes)学习(三):K8S实战案例

一、部署wordpress+mysql(NodePort方式) (1)创建命名空间:wordpress [root@m ~]# kubectl create namespace wordpress namespace/wordpress created [root@m ~]# 附:查看命名空间命令 kubectl get namespace kubectl get ns (2)创建wordpress-db.yaml文件(mysql) 创建wordpress-db.yaml文件,这里以mysql作为.

HaleyTiger的博客 5794

致远OA公文管理模块相关操作

致远oa协同办公系统 公文管理模板 相关操作

weixin_59666050的博客 4275

K8S - Service简介和 1个简单NodePort例子

严格来说,Kubernetes中的Service仅仅包括ClusterIP、NodePort和LoadBalancer这三种类型。NodePort类型的Service是Kubernetes中最常见的一种服务类型。让我来详细介绍一下NodePort Service:NodePort Service会在每个NodeNode上随机分配一个端口(默认范围30000-32767),通过这个端口就可以从集群外访问Service。

nvd11的专栏 2824

(超全面,超基础)Kriging插值推导理论笔记,算法,普通克里金

最近老师让我再重新推导一下克里金插值的方法如何求出预测结果,于是我又无数次地打开了大神的推导原理过程链接????:克里金(Kriging)插值的原理与公式推导 作者:xg1990,但是不可避免地在推导过程中,数学知识基础薄弱的我卡住在一些公式推导的步骤中。 所以就想基于上面大神的推导过程,将里面的推导写得更具体些,当然觉得毫不吃力可以进行推导的大神们可以不看我的注释,直接点开链接看就好。 我看到csdn中很多关于克里金推导的博客里面的内容直接截屏或者复制了上面链接里大神发表的内容,也不注

Olivel1997的博客 1万+

ENVI入门系列教程---一、数据预处理---1.1基本操作--5.x以后的界面(新界面)

every blog every motto: You never know how strong you really are until being strong is the only choice you have。 0. 前言 本系列教程旨在系统学习并梳理ENVI。说来惭愧,作为一名GISer,对ENVI这类软件还不能熟练掌握,这也是本系列教程的初衷。种一棵树最好的时间是十年以前,其次是...

胡侃有料的博客 1万+

kubernetes 从一个简单例子开始 Centos7

kubernetes 从一个简单例子开始 参考 《kubernetes 权威指南》一节的 从一个简单例子开始,操作实录。 一、描述 创建一个简单的Java web程序,此 Java Web 应用 的 结构 比较 简单, 是一 个 运行 在 Tomcat 里 的 Web App, 如图 1. 1 所示, JSP页面通过 JDBC 直接访问 MySQL 数据库并展示数据。 为了演示和简化的目...

大白的专栏 7106

103:vue+cesium 设置球体水部分颜色为黄色

本示例在 Vue + cesium 项目中设置球体水部分颜色为黄色。这里的操作是将球体内部设置为空的,在地球内部添加一个黄色的圆球,这样水的部分就被突出出来了。直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果.

大剑师兰特的GIS世界 625

Kubernetes(K8s)技术深度解析与实战案例

K8s以其强大的容器编排和管理能力,已经成为当今云原生应用和微服务架构的首选平台。通过本文的深入探讨和实战案例,我们可以看到K8s在运维中的强大功能和便利性。它不仅简化了应用的部署和管理流程,还提供了丰富的监控和日志收集功能,帮助我们更好地了解应用的运行状态和性能表现。未来,随着K8s生态的不断发展和完善,我们相信它将在企业运维中发挥更加重要的作用。无论是大型互联网公司还是初创企业,都可以通过K8s来实现高效、可靠、可扩展的容器化应用管理。

运维人生 3381

【Bug已解决】claude: command not found 解决方案

方案适用场景推荐指数添加 PATH全局 bin 目录确实存在但未加入 PATH⭐⭐⭐⭐⭐nvm 重新安装多 Node 版本切换导致失效⭐⭐⭐⭐⭐Windows 环境变量检查Windows 平台专用⭐⭐⭐⭐原生安装脚本想彻底避开 npm PATH 问题⭐⭐⭐⭐清理多重 Node 安装系统里有多套 Node 管理方式冲突⭐⭐⭐报错的核心是npm 全局安装的可执行文件路径没有正确出现在系统的 PATH 环境变量里,而不是安装本身失败了。

一键难忘的博客 1万+

智能车图像处理24-进阶篇16--三叉路口的判断

这篇文章主要讲述图像处理中如何判断三叉路口并进行补线操作。

taiyuezyh的博客 1万+

Kubernetes权威指南------一个简单的例子

一个简单的例子 安装k8s集群 下载相关镜像 docker pull kubeguide/tomcat-app:v2 #需要下载5.7版本的mysql镜像,否则可能出现兼容性问题 docker pull mysql:5.7 #使用docker images查看镜像 docker images 创建mysql的rc文件mysql-rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: mysql spec: rep

liuqi_67676767的博客 289

微信删除的聊天记录怎么恢复(2024年最新攻略合集)

随着微信对我们生活中方方面面的渗透,微信已然从一款简单的社交软件过渡成为现时代的一种生活方式,而微信中的聊天记录就是我们和朋友之间历程的最好证明。对此,今天我们来聊聊微信删除的聊天记录怎么恢复的问题。

m0_70960708的博客 945

【k8s权威指南】第1章 Kubernetes入门

本系列文章是<Kubernetes权威指南(第四版)>的学习笔记,适合初学者,理清k8s学习框架

weixin_45909424的博客 2645

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

kubernetes权威指南第五版_书单丨5本书带你学习Kubernetes,掌控云计算的未来

在过去的几年时间里,Kubernetes 发展迅猛,有着近5成企业都在使用,已然成为事实上的容器编排标准。很多人都在说掌控了Kubernetes便等于掌控了云计算的未来,而掌控K8s的金钥匙就藏在下面这5本书中~ 01 ▊《Kubernetes权威指南:从Docker到Kubernetes实践全接触(第4版)》龚正 等 编著基于K8s 1.14,提供源码下载人人都想拥有的K8S重磅级案头手册本书从...

weixin_39818662的博客 4223

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

kubernetes 根 README 深度解读:从源码构建 K8s 到把 K8s 组件当库用的实践指南

本文基于 kubernetes 仓库根目录 [README.md](https://link.gitcode.com/i/b7f700c85eaa8c2d40a7c031e44d02a0) 展开,带你完整掌握三件事:Kubernetes 的定位与设计渊源(Google Borg 经验)、两种官方支持的源码构建方式(Go 环境 `make` 与 Docker 环境 `make quick-relea

gitblog_00036的博客 1133

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

赠书福利丨Kubernetes权威指南第4版

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33904756的博客 3839

Kubernetes权威指南

网站 更多书籍点击进入>> CiCi岛 下载 电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍 电子书下载(皮皮云盘-点击“普通下载”) 购买正版 封页 编辑推荐 本书是容器圈Kubernetes重磅开山作《Kubernetes权威指南》的纪念版,内容更新到Kubernetes v1.6 版本。   本书作者全部来自惠普公司云计算实战一线,敏锐...

CiCi岛的专栏 2084

【免费下载】 Kubernetes权威指南(纪念版)PDF资源介绍

Kubernetes权威指南(纪念版)PDF资源介绍 【下载地址】Kubernetes权威指南纪念版PDF资源介绍分享 Kubernetes权威指南(纪念版)PDF资源介绍欢迎来到Kubernetes学习资源页面!这里我们自豪地分享《Kubernetes权威指南(纪念版)》的PDF版本,此版本虽然相对旧些,但其核心概念和...

gitblog_06545的博客 2329

K8S权威指南-第二版下载仓库

K8S权威指南-第二版下载仓库 【下载地址】K8S权威指南-第二版下载仓库 Kubernetes权威指南第二版是深入学习Kubernetes的必备资源,适合从初学者到高级开发者。本书全面介绍了Kubernetes的基础概念、核心模块及其工作原理,并通过丰富的实践案例和最佳实践帮助读者快速上手。对于希望深入研究的读者,书中...

gitblog_06705的博客 422

【亲测免费】 探索云原生世界的必备指南:《Kubernetes 权威指南》

探索云原生世界的必备指南:《Kubernetes 权威指南》 【下载地址】Kubernetes权威指南分享 Kubernetes 权威指南欢迎使用《Kubernetes 权威指南》,这是一本全面覆盖Kubernetes技术栈的深度学习资料 ...

gitblog_06653的博客 1259

【亲测免费】 Kubernetes 权威指南

Kubernetes 权威指南 【下载地址】Kubernetes权威指南分享 Kubernetes 权威指南欢迎使用《Kubernetes 权威指南》,这是一本全面覆盖Kubernetes技术栈的深度学习资料 项目地址: http...

gitblog_06675的博客 802

kubernetes权威指南_如何快速上手成为大厂标配的kubernetes?

程序员书库(ID:CodingBook) 猿妹 综合整理过去几年,以docker、kubernetes为代表的容器技术已发展为一项通用技术,BAT、滴滴、京东、头条等大厂,都争相把容器和k8s项目作为技术重心。据说阿里巴巴目前所有业务都跑在云上,许多业务已迁移到自己定制 kubernetes 集群上。然而,要想用好Kubernetes,还是有些东西要注意的,否则可能会给自己带来一些小麻烦...

weixin_42375011的博客 202

《Kubernetes网络权威指南》读书笔记 | 汇总

18.打通CNI与Kubernetes:Kubernetes网络驱动。书籍来源:《Kubernetes网络权威指南:基础、原理与实践》22.Kubernetes网络策略:为你的应用保驾护航。15.容器基础设施的代言人:Kubernetes。10.打开万花筒:Docker的四大网络模式。16.终于等到你:Kubernetes网络。7.Linux隧道网络的代表:VXLAN。19.找到你并不容易:从集群内访问服务。20.找到你并不容易:从集群外访问服务。12.容器网络的第一个标准:CNM。

团爸讲算法 1578

单节点k8s(kubernetes)的一个小例子

最近开始阅读《Kubernetes权威指南》这本书,根据书上有一个单节点k8s的小例子一步步来做,踩过的坑记录 这是一个简单的Java Web应用,结构简单,是一个运行在Tomcat里的Web App,JSP页面通过JDBC直接访问MySQL数据库并展示数据。 此应用需要启动两个容器:Web App容器和MySQL容器,并且Web App容器需要访问MySQL容器。 环境准备 VM下一台虚拟机,N...

大树下那片阴凉 1058

K8S权威指南-第二版下载仓库:深入掌握容器编排利器

K8S权威指南-第二版下载仓库:深入掌握容器编排利器 【下载地址】K8S权威指南-第二版下载仓库 Kubernetes权威指南第二版是深入学习Kubernetes的必备资源,适合从初学者到高级开发者。本书全面介绍了Kubernetes的基础概念、核心模块及其工作原理,并通过丰富的实践案例和最佳实践帮助读者快速上手。对于希...

gitblog_06797的博客 363
上一篇: Vm虚拟机扩展Ubuntu系统磁盘空间
下一篇: centos 相关备忘
乃不知有汉
博客等级 码龄17年 96粉丝 73原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值