Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >4步让你驱动Kubernetes【Containers】

4步让你驱动Kubernetes【Containers】

作者头像
王欣壳
修改于 2019-11-13 02:08:30
修改于 2019-11-13 02:08:30
1.6K00
代码可运行
举报
文章被收录于专栏:Opensoure翻译Opensoure翻译
运行总次数:0
代码可运行

在本系列的第三篇文章中,我介绍了Kubernetes的基础知识:首先学习如何驱动,我强调您应该学会驱动Kubernetes,而不是构建它。我还解释了在Kubernetes中为应用程序建模必须学习的基本元素是最少的。我想强调这一点:您需要学习的原语集是您可以学习的最简单的原语集,以实现生产质量的应用程序部署(即高可用性[HA],多个容器,多个应用程序)。换句话说,学习Kubernetes内置的一组原语比学习集群软件,集群文件系统,负载平衡器,疯狂的Apache配置,疯狂的Nginx配置,路由器,交换机,防火墙和存储后端要容易得多,这一切您将需要在传统IT环境(用于虚拟机或裸机)中为简单的HA应用程序建模。

在第四篇文章中,我将分享一些工具,这些工具将帮助您学习快速驱动Kubernetes。

1. Katacoda

Katacoda是最简单的手动测试Kubernetes集群的方法。一键五秒的时间,您将拥有一个基于Web的终端,直接进入正在运行的Kubernetes集群。它对于娱乐和学习非常重要。我甚至将其用于演示和测试新想法。 Katacoda提供了一个完全短暂的环境,在您使用完该环境后便可以将其回收。

OpenShift playground
OpenShift playground
Kubernetes playground
Kubernetes playground

Katacoda提供了临时性的游乐场和更深的实验室环境。例如,我在过去的三,四年中一直在运行的Linux Container Internals Lab是在Katacoda中建立的。

Katacoda在其主站点上维护了大量Kubernetes和云教程,并与Red Hat合作以支持OpenShift专用的学习门户。两者都可以探索-它们都是出色的学习资源。

当您第一次学习使用自卸车时,最好总是先看别人如何使用。

2. Podman生成kube

Podman generate kube命令是一个出色的命令,它可以帮助用户自然地从运行简单容器的简单容器引擎过渡到运行许多容器的集群用例(如我在上一篇文章中所述)。为此,Podman允许您启动一些容器,然后导出可用的Kube YAML,然后在Kubernetes中启动它们。进行检查(pssst,您可以在此Katacoda实验室中运行它,该实验室已经具有Podman和OpenShift)。

首先,请注意运行容器的语法与Docker非常相似:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
podman run -dtn two-pizza  quay.io/fatherlinux/two-pizza

但这是其他容器引擎无法做到的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
podman generate kube two-pizza

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Generation of Kubernetes YAML is still under development!
#
# Save the output of this file and use kubectl create -f to import
# it into Kubernetes.
#
# Created with podman-1.3.1
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2019-06-07T08:08:12Z"
  labels:
    app: two-pizza
  name: two-pizza
spec:
  containers:
  - command:
    - /bin/sh
    - -c
    - bash -c 'while true; do /usr/bin/nc -l -p 3306 < /srv/hello.txt; done'
    env:
    - name: PATH
      value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    - name: TERM
      value: xterm
    - name: HOSTNAME
    - name: container
      value: oci
    image: quay.io/fatherlinux/two-pizza:latest
    name: two-pizza
    resources: {}
    securityContext:
      allowPrivilegeEscalation: true
      capabilities: {}
      privileged: false
      readOnlyRootFilesystem: false
    tty: true
    workingDir: /
status: {}
---
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2019-06-07T08:08:12Z"
  labels:
    app: two-pizza
  name: two-pizza
spec:
  selector:
    app: two-pizza
  type: NodePort
status:
  loadBalancer: {}

现在,您有了一些可以正常工作的Kubernetes YAML,您可以将其用作学习和调整的起点。-s标志为您创建了一个服务。 布伦特·鲍德(Brent Baude)甚至还在研究新功能,例如添加卷/持久卷声明。 要进行更深入的研究,请在他的博客文章“ Podman现在可以简化向Kubernetes和CRI-O的过渡”中查看Brent的出色工作。

3. Oc new-app

Oc new-app命令非常强大。 它是特定于OpenShift的,因此它在默认的Kubernetes中不可用,但是当您开始学习Kubernetes时,它确实很有用。 让我们从快速命令开始,创建一个相当复杂的应用程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
oc new-project -n example
oc new-app -f https://raw.githubusercontent.com/openshift/origin/master/examples/quickstarts/cakephp-mysql.json

使用Oc new-app,您确实可以使用OpenShift开发人员的模板,并在开发用于描述您自己的应用程序的原语时拥有一个已知的良好起点。 运行上述命令后,您的Kubernetes命名空间(在OpenShift中)将由一堆新的已定义资源填充。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
oc get all

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NAME                                READY     STATUS      RESTARTS   AGE
pod/cakephp-mysql-example-1-build   0/1       Completed   0          4m
pod/cakephp-mysql-example-1-gz65l   1/1       Running     0          1m
pod/mysql-1-nkhqn                   1/1       Running     0          4m

NAME                                            DESIRED   CURRENT   READY     AGE
replicationcontroller/cakephp-mysql-example-1   1         1         1         1m
replicationcontroller/mysql-1                   1         1         1         4m

NAME                            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
service/cakephp-mysql-example   ClusterIP   172.30.234.135   <none>        8080/TCP   4m
service/mysql                   ClusterIP   172.30.13.195    <none>        3306/TCP   4m

NAME                                                       REVISION   DESIRED   CURRENT   TRIGGERED BY
deploymentconfig.apps.openshift.io/cakephp-mysql-example   1          1         1         config,image(cakephp-mysql-example:latest)
deploymentconfig.apps.openshift.io/mysql                   1          1         1         config,image(mysql:5.7)

NAME                                                   TYPE      FROM      LATEST
buildconfig.build.openshift.io/cakephp-mysql-example   Source    Git       1

NAME                                               TYPE      FROM          STATUS     STARTED         DURATION
build.build.openshift.io/cakephp-mysql-example-1   Source    Git@47a951e   Complete   4 minutes ago   2m27s

NAME                                                   DOCKER REPO                                                      TAGS      UPDATED
imagestream.image.openshift.io/cakephp-mysql-example   docker-registry.default.svc:5000/example/cakephp-mysql-example   latest    About aminute ago

NAME                                             HOST/PORT                                                                         PATH   SERVICES                PORT      TERMINATION   WILDCARD
route.route.openshift.io/cakephp-mysql-example   cakephp-mysql-example-example.2886795271-80-rhsummit1.environments.katacoda.com   cakephp-mysql-example   <all>                   None

这样做的好处是,您可以删除Pod,观察复制控制器重新创建它们,按比例放大Pod和按比例缩小它们。 您可以使用模板并将其更改为其他应用程序(这是我第一次启动时所做的)。

4. Visual Studio代码

我最后保存了我的最爱之一。 我的大部分工作都使用vi,但我从未为Kubernetes找到一个好的语法突出显示和代码完成插件(如果有,请告诉我)。 相反,我发现微软的VS Code有一套杀手er的插件,可以完成Kubernetes资源的创建并提供样板。

首先,安装上图所示的Kubernetes和YAML插件。

然后,您可以从头开始创建一个新的YAML文件,并自动完成Kubernetes资源。 上面的示例显示了服务。

当您使用自动完成功能并选择“服务”资源时,它将为对象填充一些样板。 当您第一次学习驱动Kubernetes时,这是非常好的。 您可以构建Pod,服务,复制控制器,部署等。当您从头开始构建这些文件,甚至修改使用Podman生成kube创建的文件时,这是一个非常不错的功能。

结论

这四个工具(如果算上这两个插件,则为六个)将帮助您学习驱动Kubernetes,而不是构建或装备它。 在系列的最后一篇文章中,我将讨论为什么Kubernetes对于运行这么多不同的工作负载如此激动人心。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spring Boot 微服务上容器平台的最佳实践 - 3
Zipkin使用MySQL数据库进行存储,这反过来又需要创建一个OpenShift 共享存储。假定已经有了:
东风微鸣
2022/04/21
4700
Spring Boot 微服务上容器平台的最佳实践 - 3
开发者openshift4使用入门教程 - 11 - 部署redis - 单实例模式
容器内同一租户 的Java应用/微服务等直接通过以下域名+端口来使用: redis:6379 密码在部署时会有提示, 如:* Redis Connection Password=onTXNxV05Nsiea5c # generated, 如果提示没有就仔细在其他地方找找.
东风微鸣
2022/04/21
6060
开发者openshift4使用入门教程 - 11 - 部署redis - 单实例模式
13 Mar 2020 ingress方式访问ocp应用
这里需要注意,需要在你的/etc/hosts文件中添加相应的ip和host映射,例如:
俊采
2023/10/17
2110
Kubernetes基础知识:先学会如何驱动它【Containers】
在本系列的前两篇文章中,我解释了Kubernetes如何像自卸车,并且总是需要学习一些曲线来理解诸如Kubernetes(以及自卸车,起重机等)之类的优雅而专业的工具。 本文介绍了下一步:学习如何驱动它。
王欣壳
2019/11/12
4880
Kubernetes基础知识:先学会如何驱动它【Containers】
从Podman到Kubernetes:实用集成指南
了解如何将 Podman 与 Kubernetes 集成以增强容器管理并提高部署效率
云云众生s
2024/03/29
1.4K0
从Podman到Kubernetes:实用集成指南
Kubernetes 编排系统
1.1 Kubernetes简介 1.1.1 什么是Kubernetes Kubernetes (通常称为K8s,K8s是将8个字母“ubernete”替换为“8”的缩写) 是用于自动部署、扩展和管理
惨绿少年
2018/03/30
3K1
12 Mar 2020 route方式访问ocp应用
这里需要注意,如果你是通过手动方式创建route,那么需要在你的/etc/hosts文件中添加相应的ip和host映射,例如:
俊采
2023/10/17
1930
从一张图看Devops全流程
一、持续交付工具链全图 上图源自网络。上图很清晰地列出了CD几个阶段使用的工具。 CD的工具链很长,但并不是每个模块所有工具都那么流行;换言之,我们在每个模块用好一种工具就足够了。 Build 在SC
魏新宇
2018/03/22
14.1K0
从一张图看Devops全流程
Kubernetes(k8s)中dashboard的部署。
1、k8s的dashboard的安装部署,首先需要将压缩包下载下来,然后进行解压缩操作。
别先生
2020/06/24
1.1K0
Kubernetes(k8s)中dashboard的部署。
Fabric8 Kubernetes 教程——OpenShift 客户端
OpenShift客户端(oc)是Red Hat推出的开源容器平台OpenShift的命令行工具,用于与OpenShift集群交互。通过oc,开发者可以高效管理应用全生命周期——包括部署、扩展、监控及调试容器化应用。它支持Kubernetes原生操作,同时扩展了OpenShift特有功能(如构建镜像、触发部署)。
FunTester
2025/04/06
1100
Fabric8 Kubernetes 教程——OpenShift 客户端
OpenShift总体架构设计
OpenShift被其供应商Red Hat称为“ 企业级Kubernetes”。其实Kubernetes是OpenShift不可或缺的一部分,并围绕它构建了更多功能。
网络安全观
2021/03/01
1.2K0
将Coolstore微服务引入服务网格:第1部分 - 探索自动注入
随着业界走向云端原生微服务的幻灭之谷,我们最终明白分布式架构会带来更多的复杂性(奇怪吧?),服务网格可以帮助软化着陆,将一些复杂性从我们的应用程序中移出,并将它放置在应用程序的操作层中。
Aaroncang
2018/06/25
1.6K0
010.OpenShift综合实验及应用
[student@workstation ~]$ lab review-install setup
木二
2020/06/24
1.3K0
为什么容器和Kubernetes几乎有潜力运行一切【Containers】
在我的第一篇文章中,《Kubernetes是一辆自卸车:这就是为什么》中,我谈到了Kubernetes在定义,共享和运行应用程序方面如何出色,类似于自卸卡车在移动污垢方面如何出色。在第二篇《如何导航Kubernetes学习曲线》中,我解释了Kubernetes的学习曲线实际上与运行生产中的任何应用程序的学习曲线相同,实际上比学习所有传统作品(负载均衡器,路由器,防火墙,交换机,集群软件,集群文件系统等)。这是DevOps,这是开发人员和运营部门之间的合作,用于指定事物在生产中的运行方式,这意味着双方都需要学习。在第四篇Kubernetes的基础知识中:学习如何首先驾驶,我重新构造了Kubernetes的学习框架,重点是驾驶自卸卡车而不是建造或装备它。在第四篇文章中,有4种工具可以帮助您驱动Kubernetes,我将分享我爱上的工具,以帮助您在Kubernetes中构建应用程序(驱动自卸车)。
王欣壳
2019/11/09
3890
为什么容器和Kubernetes几乎有潜力运行一切【Containers】
学习使用Kubectl部署Containers
如何使用Kubectl创建和启动部署、复制控制器,并通过服务公开它们,而不需要编写yaml定义。快速地将容器启动到集群中。
sparkle123
2021/02/05
6560
OpenShift:关于OpenShift(OKD)通过命令行的方式部署镜像以及S2I流程Demo
傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波
山河已无恙
2023/10/25
7170
OpenShift:关于OpenShift(OKD)通过命令行的方式部署镜像以及S2I流程Demo
万字长文,说透了 Openshift4 的安装过程!
上篇文章准备了离线安装 OCP 所需要的离线资源,包括安装镜像、所有样例 Image Stream 和 OperatorHub 中的所有 RedHat Operators。本文就开始正式安装 OCP(Openshift Container Platform) 集群,包括 DNS 解析、负载均衡配置、ignition 配置文件生成和集群部署。
米开朗基杨
2020/06/09
6.7K2
万字长文,说透了 Openshift4 的安装过程!
007.OpenShift管理应用部署
RC确保pod指定数量的副本一直运行。如果pod被杀死或被管理员显式删除,复制控制器将自动部署相应的pod。类似地,如果运行的pod数量超过所需的数量,它会根据需要删除pod,以匹配指定的副本计数。
木二
2020/06/23
1.9K0
Docker集群编排工具之Kubernetes(K8s)介绍、安装及使用
K8s基础原理 k8s中文社区:https://www.kubernetes.org.cn/ 简介 Kubernetes与较早的集群管理系统Mesos和YARN相比,对容器尤其是 Docker的支持更加原生,同时提供了更强大的机制实现资源调度,自动 管理容器生命周期,负载均衡,高可用等底层功能,使开发者可以专注于开发应用。 Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用
863987322
2018/03/29
5.1K0
Docker集群编排工具之Kubernetes(K8s)介绍、安装及使用
Centos7中单节点openshift_3.11安装及配置开机自启
Centos7中单节点openshift_3.11安装及配置开机自启
Java架构师必看
2021/06/09
9590
Centos7中单节点openshift_3.11安装及配置开机自启
相关推荐
Spring Boot 微服务上容器平台的最佳实践 - 3
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验