kubenetes学习 4

简介: kubenetes学习

10.安装网络插件

kubernetes支持多种网络插件,比如flannelcalicocanal等等 任选一种即可 本次选用flannel

(下面操作只在master节点上执行即可,插件使用的是DaemonSet的控制器,它会在每个节点上都运

行)

#获取flannel配置文件
[root@master ~]# wget
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube￾flannel.yml
#使用配置文件启动flannel
[root@master ~]# kubectl apply -f kube-flannel.yml
namespace/kube-flannel created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
资源管理
资源管理介绍
在Kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理Kubernetes。
daemonset.apps/kube-flannel-ds created
#查看启动状态
node1 Ready <none> 19m v1.18.1
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 83m v1.18.1
node Ready <none> 19m v1.18.1
node1 Ready <none> 19m v1.18.1
[root@master ~]#
#STATUS(状态)就从NotReady(未准备就绪)变成Ready(准备就绪)
#到这里kubernetes集群就准备就绪了

11.部署程序

#部署一个nginx程序
[root@master ~]# kubectl create deployment nginx --image=nginx
deployment.apps/nginx created
#暴漏端口
[root@master ~]# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
[root@master ~]# kubectl get pod -o wide #查看程序运行在哪个工作节点上面 看NODE的值
NAME READY STATUS RESTARTS AGE IP NODE
NOMINATED NODE READINESS GATES
nginx-f89759699-dphvr 1/1 Running 0 81s 10.244.2.7 node1
<none> <none>
#查看暴漏的端口
[root@master ~]# kubectl get service -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
SELECTOR
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4h34m
<none>
nginx NodePort 10.101.178.129 <none> 80:30733/TCP 35s
app=nginx
#通过IP:端口访问查看是否运行成功
#如果出现以下界面就是运行成功

资源管理

资源管理介绍

Kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理Kubernetes

Kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,就是在
Kubernetes集群中运行一个个的容器,并将指定的程序跑在容器里。
Kubernetes的最小管理单元是pod而不是容器,所以只能将容器放在pod中,而Kubernetes一般也不会
直接管理Pod,而是通过Pod控制器来管理pod的。
Pod可以提供服务之后,就要考虑如何访问Pod中的服务,Kubernetes提供了Service资源实现这个功
能。
当然,如果Pod中的程序数据需要持久化,Kubernetes还提供了各种的存储系统

image.png

学习kubernetes的核心,就是学习如何对集群上的Pod、Pod控制器、Service、存储等各种资源进行操作

YAML语言介绍

YAML是一个类似 XMLJSON 的标记性语言。它强调以数据为中心,并不是以标识语言为重点。因而

YAML本身的定义比较简单,号称"一种人性化的数据格式语言"

#XML语法
<xiaole>
<age>15</age>
<address>anhui</address>
</xiaole>
#YAML语法
xiaole:
age: 15
address: anhui

YAML的语法比较简单,主要有下面几个:

大小写敏感

使用缩进表示层级关系

缩进不允许使用tab,只允许空格( 低版本限制 )

缩进的空格数不重要,只要相同层级的元素左对齐即可

address: anhui'#'表示注释

YAML支持以下几种数据类型:

纯量:单个的、不可再分的值

对象:键值对的集合,又称为映射(mapping/ 哈希(hash / 字典(dictionary

数组:一组按次序排列的值,又称为序列(sequence / 列表(list

# 纯量, 就是指的一个简单的值,字符串、布尔值、整数、浮点数、Null、时间、日期
# 1 布尔类型
c1: true (或者True)
# 2 整型
c2: 234
# 3 浮点型
c3: 3.14
# 4 null类型
c4: ~ # 使用~表示null
# 5 日期类型
c5: 2018-02-17 # 日期必须使用ISO 8601格式,即yyyy-MM-dd
# 6 时间类型
c6: 2018-02-17T15:02:31+08:00 # 时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用
+代表时区
# 7 字符串类型
c7: heima # 简单写法,直接写值 , 如果字符串中间有特殊字符,必须使用双引号或者单引号包裹
c8: line1
line2 # 字符串过多的情况可以拆成多行,每一行会被转化成一个空格
# 对象
# 形式一(推荐):
sz:
age: 15
address: Beijing
# 形式二(了解):
sz: {age: 15,address: Beijing}
# 数组
# 形式一(推荐):
address:
- 顺义
- 昌平
# 形式二(了解):
address: [顺义,昌平]
小提示:
1 书写yaml切记: 后面要加一个空格
2 如果需要将多段yaml配置放在一个文件中,中间要使用---分隔
3 下面是一个yaml转json的网站,可以通过它验证yaml是否书写正确
https://www.json2yaml.com/convert-yaml-to-json


资源管理方式

命令式对象管理

(直接使用命令去操作kubernetes资源)

kubectl run nginx-pod --image=nginx --port=80

kubectl命令

kubectlkubernetes集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器

化应用的安装部署,kubectl的命令语法如下:

kubectl [comand] [type] [name] [flags]

comand:指定要对资源执行的操作,例如creategetdelete

type:指定类型的资源类型 比如deploymentpodservice

name:指定资源的名称(大小写敏感)

flags:指定额外的可选参数

#查询所有pod
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-f89759699-dphvr 1/1 Running 3 4d5h
nginx1-56db585f94-br4rr 1/1 Running 0 6s
nginx2-669c86457c-bvw5x 0/1 ContainerCreating 0 3s
#查询指定pod
[root@master ~]# kubectl get pod nginx-f89759699-dphvr
NAME READY STATUS RESTARTS AGE
nginx-f89759699-dphvr 1/1 Running 3 4d5h
#查询指定详细pod
[root@master ~]# kubectl get pod nginx-f89759699-dphvr -o wide
NAME READY STATUS RESTARTS AGE IP NODE
NOMINATED NODE READINESS GATES
nginx-f89759699-dphvr 1/1 Running 3 4d5h 10.244.2.10 node1
<none> <none>
-o wide 是携带的参数 查看资源的详细信息包括资源所在ip等

资源类型

kubernetes中所有的内容都抽象为资源,可以通过下面的命令进行查看:

kubectl api-resources

经常使用的资源有下面这些:image.png


操作

kubernetes允许对资源进行多种操作,可以通过--help查看详细的操作命令

kubectl --help

经常使用的操作有下面这些:

image.png


下面以一个namespace / pod的创建和删除演示一下命令的操作

#创建一个namespace
[root@master ~]# kubectl create namespace xiaole
namespace/xiaole created
#获取所有namespace(命名空间)
[root@master ~]# kubectl get namespace
NAME STATUS AGE
default Active 4d10h
kube-flannel Active 4d8h
kube-node-lease Active 4d10h
kube-public Active 4d10h
kube-system Active 4d10h
xiaole Active 93s
xiaole123 Active 10s
#运行一个pod并namespace(指定命名空间)
[root@master ~]# kubectl run pod --image=nginx -n xiaole
pod/pod created
#查询指定namespace(命名空间)下运行的pod
[root@master ~]# kubectl get pod -n xiaole
NAME READY STATUS RESTARTS AGE
pod 1/1 Running 0 9m24s
#删除namespace(命名空间)
[root@master ~]# kubectl delete namespace xiaole
namespace "xiaole" deleted
#获取所有namespace(命名空间)
[root@master ~]# kubectl get namespace
NAME STATUS AGE
default Active 4d10h
kube-flannel Active 4d9h
kube-node-lease Active 4d10h
kube-public Active 4d10h
kube-system Active 4d10h


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
Kubernetes API 调度
Kubernetes必备知识: CNI
CNI的全称是 Container Network Interface,即容器网络的 API 接口。 它是 K8s 中标准的一个调用网络实现的接口。Kubelet 通过这个标准的 API 来调用不同的网络插件以实现不同的网络配置方式。实现了这个接口的就是 CNI 插件,它实现了一系列的 CNI API 接口。常见的 CNI 插件包括 Calico、flannel、Terway、Weave Net 以及 Contiv。
2162 0
Kubernetes必备知识: CNI
|
4月前
|
Kubernetes 负载均衡 API
Kubernetes通俗讲解
Kubernetes(K8s)是自动部署、扩展和管理容器化应用的开源平台,源自Google的Borg系统。它简化了大规模容器应用的部署和维护,支持自动部署、扩展、高可用性、服务发现与负载均衡及存储管理。K8s具有Master和Node节点架构,涵盖API Server、Scheduler等组件,其核心概念包括Pod、Service、Deployment和Namespace。使用时需安装集群、定义资源配置文件并应用配置。K8s具备可移植性、可扩展性、自动化及强大的社区支持等优势。
67 2
|
存储 Kubernetes Docker
kubenetes学习 1
kubenetes学习
|
7月前
|
Kubernetes Cloud Native 测试技术
「译文」深入了解 Kubernetes 和 Nomad
「译文」深入了解 Kubernetes 和 Nomad
|
Kubernetes 容器
kubenetes学习 2
kubenetes学习
|
Kubernetes 容器 Perl
kubenetes学习 4
kubenetes学习
110 0
|
Kubernetes Ubuntu Linux
浅入kubernetes(5) 尝试kubeadm
浅入kubernetes(5) 尝试kubeadm
835 0
|
Kubernetes 网络协议 Linux
【2023】Kubernetes-网络原理
【2023】Kubernetes-网络原理
127 0
|
存储 运维 Kubernetes
【kubernetes技术专题】Kubernetes架构分析介绍篇(入门篇)
【kubernetes技术专题】Kubernetes架构分析介绍篇(入门篇)
148 0
【kubernetes技术专题】Kubernetes架构分析介绍篇(入门篇)
|
Kubernetes 负载均衡 网络协议
浅入Kubernetes(8):外网访问集群
浅入Kubernetes(8):外网访问集群
1837 1
浅入Kubernetes(8):外网访问集群