kubernetes基础配置(入门操作)

资源管理

一、资源管理方式

1.命令式对象管理:直接使用命令去操作kubernetes资源

[root@master ~]# kubectl run nginx-pod --image=nginx --port=80

kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.

deployment.apps/nginx-pod created

2.命令式对象配置:通过命令配置和配置文件去操作kubernetes资源

[root@master ~]# kubectl create -f nginx-pod.yaml

3.声明式对象配置:通过apply命令和配置文件去操作kubernetes资源

[root@master ~]# kubectl apply -f nginx-pod.yaml

pod/nginx-pod created

二、命令式对象管理

1.Kubectl命令:

Kubectl是kubernetes集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署,kubectl命令的语法如下:

# kubectl [command] [type] [name] [flags]

参数解析:

Comand:指定要对资源执行的操作,例如create 、get、delete

Type:指定资源类型,比如deployment、pod、service

Name:指定资源的名称,大小写敏感

Flags:制定额外的可选参数

#查看所有Pod

[root@master ~]# kubectl get pod

NAME                        READY   STATUS    RESTARTS   AGE

nginx-6867cdf567-qmxt5      1/1     Running   0          25h

nginx-pod                   1/1     Running   0          40m

nginx-pod-77f84df46-fr452   1/1     Running   0          46m

#查看nginx-pod

[root@master ~]# kubectl get pod nginx-pod

NAME        READY   STATUS    RESTARTS   AGE

nginx-pod   1/1     Running   0          40m

#查看nginx-pod,以yaml格式展示结果

[root@master ~]# kubectl get pod nginx-pod -o yaml

2.资源类型

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

[root@master ~]# kubectl api-resources

经常使用的资源有如下这些:

操作

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

[root@master ~]# kubectl --help

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

练习:

下面通过一个namespace/pod的创建和删除进行演示

#创建一个namespace

[root@master ~]# kubectl create namespace dev

namespace/dev created

#获取namespace

[root@master ~]# kubectl get ns

NAME              STATUS   AGE

default           Active   26h

dev               Active   17s

kube-node-lease   Active   26h

kube-public       Active   26h

kube-system       Active   26h

mem-example       Active   74m

#在此namespace下创建并运行一个nginx的pod

[root@master ~]# kubectl run pod --image=nginx -n dev

kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.

deployment.apps/pod created

#查看新建的pod

[root@master ~]# kubectl get pod -n dev

NAME                   READY   STATUS              RESTARTS   AGE

pod-864f9875b9-fth8f   0/1     ContainerCreating   0          22s

[root@master ~]# kubectl get pod -n dev

NAME                   READY   STATUS    RESTARTS   AGE

pod-864f9875b9-fth8f   1/1     Running   0          36s

#删除指定的pod

[root@master ~]# kubectl delete pod pod-864f9875b9-fth8f

pod “pod-864f9875b9-fth8f” deleted

#删除指定的namespace

[root@master ~]# kubectl delete ns dev

namespace "dev" deleted

三、命令式对象配置

命令式对象配置就是使用命令配合配置文件一起操作kubernetes资源

1.创建一个nginxpod.yaml,内容如下:

[root@master ~]# vi nginxpod.yaml

apiVersion: v1

kind: Namespace

metadata:

  name: dev

---

apiVersion: v1

kind: Pod

metadata:

  name: nginxpod

  namespace: dev

spec:

  containers:

  - name: nginx-containers

    image: nginx:latest

~

2.执行create命令,创建资源

3.执行get命令,查看资源

[root@master ~]# kubectl get -f nginxpod.yaml

NAME            STATUS   AGE

namespace/dev   Active   11h

NAME           READY   STATUS    RESTARTS   AGE

pod/nginxpod   1/1     Running   0          11h

4.执行delete命令,删除资源

[root@master ~]# kubectl delete -f nginxpod.yaml

namespace "dev" deleted

pod "nginxpod" deleted

四、声明式对象配置

[root@master ~]# kubectl apply -f nginxpod.yaml

namespace/dev created

pod/nginxpod created

#当第一次执行该命令,发现成功创建资源

[root@master ~]# kubectl apply -f nginxpod.yaml

namespace/dev unchanged

pod/nginxpod unchanged

#再次执行该命令,说资源没有变动

注:使用apply操作资源

若资源不存在,就会kubectl create 创建

若资源不存在,就会kubectl patch 更新

入门基础

一、Namespace

Namespace是kubernetes系统中的重要资源,作用是实现多套环境的资源隔离或者多租户的资源隔离

Kubernetes在集群启动之后,默认创建几个namespace

[root@master ~]# kubectl get namespace

NAME              STATUS   AGE

default           Active   38h      #所有未指定namespace的对象都会分配在该命名间

dev               Active   8m31s 

kube-node-lease   Active   38h     #集群节点之间的心跳维护

kube-public       Active   38h     #此命名空间下的资源可以被所有人访问(未认证用户)

kube-system       Active   38h    #所有由kubernetes系统创建的资源都处于该命名空间

mem-example       Active   13h

Namespace资源的具体操作

查看

1.查看所有的ns

[root@master ~]# kubectl get ns

NAME              STATUS   AGE

default           Active   38h

dev               Active   8m51s

kube-node-lease   Active   38h

kube-public       Active   38h

kube-system       Active   38h

mem-example       Active   13h

2.查看指定的ns

[root@master ~]# kubectl get ns dev

NAME   STATUS   AGE

dev    Active   9m36s

3.指定输出格式

命令:kubectl get ns ns名称 -o 格式参数(kubernetes支持的格式参数常见的有wide、json、yaml)

4.查看ns详情

[root@master ~]# kubectl describe ns dev

Name:         dev

Labels:       <none>

Annotations:  kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"dev"}}

Status:       Active

No resource quota.

resource quota.:针对namespace做的资源限制

No LimitRange resource.

LimitRange :针对namespace中的每个组件做的资源限制

5.创建

[root@master ~]# kubectl create ns ywj

namespace/ywj created

6.删除

[root@master ~]# kubectl delete ns ywj

namespace "ywj" deleted

7.配置方式

二、Pod

Pod是kubernetes集群进行管理的最小单元,程序要运行必须部署在容器中,而容器必须存在于pod中;pod可以认为是容器的封装,一个pod中可以存在一个或者多个容器

Kubernetes在集群启动之后,集群中的各个组件都是以pod方式运行的

1.创建并运行

#kubernetes没有提供单独运行pod的命令,都是通过pod控制器来实现的

#命令格式:kubectl run (pod控制器名称)  [参数]

#-image                指定pod的镜像

#-port                  指定端口

#-namespace            指定namespace

[root@master ~]# kubectl run nginx --image=nginx:latest --port=80 --namespace dev

kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.

deployment.apps/nginx created

2.查看pod信息

(1)查看pod基本信息

[root@master ~]# kubectl get pods -n dev

NAME                    READY   STATUS    RESTARTS   AGE

nginxpod                1/1     Running   0          37m

(2)查看pod详细信息

3.访问pod

#获取pod的ip

[root@master ~]# kubectl get pods -n dev -o wide

NAME                    READY   STATUS    RESTARTS   AGE    IP               NODE    NOMINATED NODE   READINESS GATES

nginxpod                1/1     Running   0          38m    10.244.166.134   node1   <none>           <none>

#访问pod

[root@master ~]# curl http://10.244.166.134:80

<!DOCTYPE html>

<html>

<head>

<title>Welcome to nginx!</title>

<style>

html { color-scheme: light dark; }

body { width: 35em; margin: 0 auto;

font-family: Tahoma, Verdana, Arial, sans-serif; }

</style>

</head>

<body>

<h1>Welcome to nginx!</h1>

<p>If you see this page, the nginx web server is successfully installed and

working. Further configuration is required.</p>

<p>For online documentation and support please refer to

<a href="http://nginx.org/">nginx.org</a>.<br/>

Commercial support is available at

<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>

</body>

</html>

4.删除指定pod

删除指定pod

[root@master ~]# kubectl delete pod nginxpod -n dev

pod "nginxpod" deleted

#虽然显示pod删除成功,但又产生了一个

[root@master ~]# kubectl get pods -n dev -o wide

NAME                    READY   STATUS    RESTARTS   AGE   IP               NODE    NOMINATED NODE   READINESS GATES

nginx-dd6b5d745-vkcjw   1/1     Running   0          9s    10.244.166.136   node1   <none>           <none>

#这是因为当前pod是由pod控制器创建的,控制台会监视pod状况,一旦发现pod死亡,就会立即重建

#若想删除pod,必须删除pod控制器

#查询当前namespace下的pod控制器

[root@master ~]# kubectl get deploy -n dev

NAME    READY   UP-TO-DATE   AVAILABLE   AGE

nginx   1/1     1            1           4m32s

#删除pod控制器

[root@master ~]# kubectl delete deploy nginx -n dev

deployment.apps "nginx" deleted

#再次查询pod,发现被删除了

[root@master ~]# kubectl get pods -n dev

No resources found in dev namespace.

5.配置操作

创建一个pod-nginx.yaml

然后就可以执行对应的创建和删除命令

三、Label

Label是kubernetes系统中的一个重要概念,作用就是在资源上添加标识,用来区分和选择

Label的特点:

一个Label会以key/value键值对的形式附加到各种对象上,如Node、Pod、Service等等

一个资源对象可以定义任意数量的Label ,同一个Label也可以被添加到任意数量的资源对象上去

Label通常在资源对象定义时确定,当然也可以在对象创建后动态添加或者删除

1.命令方式

#为pod资源打标签

[root@master ~]# kubectl label pod nginx version=1.0 -n dev

pod/nginx labeled

#为pod资源更新标签

[root@master ~]# kubectl label pod nginx version=2.0 -n dev --overwrite

pod/nginx labeled

#查看标签

[root@master ~]# kubectl get pod nginx -n dev --show-labels

NAME    READY   STATUS    RESTARTS   AGE   LABELS

nginx   1/1     Running   0          16m   version=2.0

#筛选标签

[root@master ~]# kubectl get pod -n dev -l version=2.0 --show-labels

NAME    READY   STATUS    RESTARTS   AGE   LABELS

nginx   1/1     Running   0          18m   version=2.0

[root@master ~]# kubectl get pod -n dev -l version!=2.0 --show-labels

No resources found in dev namespace.

#删除标签

[root@master ~]# kubectl label pod nginx version- -n  dev

pod/nginx labeled

2.配置方式

四、Deployment

在kubernetes中,Pod是最小的控制单元,但是kubernetes很少直接控制Pod,一般都是通过Pod控制器来完成的。Pod控制器用于pod的管理,确保pod资源符合预期的状态,当pod的资源出现故障时,会尝试进行重启或重建pod。

在kubernetes中Pod控制器的种类有很多,deployment是其中一种

1.命令操作

#命令格式: kubectl create deployment 名称  [参数]

#-image                   指定pod的镜像

#-port                     指定端口

#-replicas                  指定创建pod数量

#-namespace               指定namespace

[root@master ~]# kubectl run nginx --image=nginx:latest --port=80 --replicas=3 -n dev

kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.

deployment.apps/nginx created

#查看创建的pod

[root@master ~]# kubectl get pods -n dev

NAME                    READY   STATUS    RESTARTS   AGE

nginx                   1/1     Running   0          47m

nginx-dd6b5d745-69hj9   1/1     Running   0          3m37s

nginx-dd6b5d745-r5gb9   1/1     Running   0          3m37s

nginx-dd6b5d745-z5mcr   1/1     Running   0          57s

#查看deployment的信息

[root@master ~]# kubectl get deploy -n dev

NAME    READY   UP-TO-DATE   AVAILABLE   AGE

nginx   3/3     3            3           2m50s

注:#UP-TO-DATE:成功升级的副本数量

    #AVAILABLE:可用副本的数量

[root@master ~]# kubectl get deploy -n dev -o wide

NAME    READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS   IMAGES         SELECTOR

nginx   3/3     3            3           5m17s   nginx        nginx:latest   run=nginx

查看deployment的详细信息

删除

[root@master ~]# kubectl delete deploy nginx -n dev

deployment.apps "nginx" deleted

2.配置操作

创建一个deploy-nginx.yanl文件

五、Service

虽然每个Pod都会分配一个单独的Pod IP,然而却存在如下两问题:

(1)Pod IP 会随着Pod的重建产生变化

(2)Pod IP 仅仅是集群内可见的虚拟IP,外部无法访问

这样对于访问这个服务带来了难度。因此,kubernetes设计了Service来解决这个问题。

Service可以看作是一组同类Pod对外的访问接口。借助Service,应用可以方便地实现服务发现和负载均衡。

1.创建集群内部可访问的Service

#暴露Service

[root@master ~]# kubectl expose deploy nginx --name=svc-nginx1 --type=ClusterIP --port=80 --target-port=80 -n dev

service/svc-nginx1 exposed

#查看Service

[root@master ~]# kubectl get svc svc-nginx1 -n dev -o wide

NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE   SELECTOR

svc-nginx1   ClusterIP   10.100.104.101   <none>        80/TCP    31s   run=nginx

上面产生一个Cluster-IP,这就是Service的IP,在Service的生命周期中,这个地址不会变

可以通过这个IP访问Service对应的pod

2.创建集群外部可访问的Service

[root@master ~]# kubectl expose deploy nginx --name=svc-nginx2 --type=NodePort --port=80 --target-port=80

service/svc-nginx2 exposed

[root@master ~]# kubectl get svc svc-nginx1 -n dev -o wide

NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE   SELECTOR

svc-nginx2   NodePort   10.100.94.0   <none>        80/31928/TCP    9s   run=nginx

在电脑主机上通过浏览器访问下面地址

3.删除Service

[root@master ~]# kubectl delete svc svc-nginx1 -n dev

service "svc-nginx1" deleted

4.配置方式

创建一个svc-nginx.yaml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1550308.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

煤矿厂智能化可视化:提升安全与效率

运用图扑可视化技术对煤矿厂进行实时监控与数据分析&#xff0c;提高安全管理水平和生产效率。

Java8/9/10/11新特性

目录 一、 Lambda表达式二、函数式(Functional)接口三、方法引用与构造器引用3.1、方法引用3.2 构造器引用和数组引用3.2.1 构造器引用3.2.2 数组引用 四、 强大的Stream API4.1 Stream API说明4.2 Stream 的操作三个步骤4.3 创建 Stream方式4.4 、Stream 的中间操作4.4.1 筛选…

VMware Tools安装——VMware Tools是灰色的,不能安装, (不带图形化界面的虚拟机,只有命令行的模式!!!)

问题 VMware Workstation 中“ 安装VMware Tools”是灰色的&#xff0c;无法点击安装 解决 1.挂载镜像文件 打开 VMware&#xff0c;点击虚拟机设置>>CD/DVD&#xff0c;选择“使用ISO映像文件”&#xff0c;点击“浏览” 再选择 VMware 安装目录中的 linux.iso 文件&a…

FPGA到底要怎么学?一篇文章直接让你搞清楚!!!

学好FPGA&#xff08;现场可编程门阵列&#xff09;涉及理论学习和实践操作的结合。以下是学习FPGA的基本流程和建议&#xff1a; 关注我&#xff0c;我会更新更多的知识&#xff0c;这会给你很多的帮助。 1. 理论基础 数字逻辑&#xff1a;了解基本的逻辑门、组合逻辑、时序…

JS对不同浏览器的检测问题

Navigator对象也称浏览器对象&#xff0c;该对象包含了浏览器的整体信息&#xff0c;如浏览器名称&#xff0c;版本号等。Navigator对象由Navigator浏览器率先使用&#xff0c;后来各方浏览器都开始支持Navigator对象&#xff0c;逐步成为一种标准。 一、Navigator对象的属性 …

HttpClientHandler 详解及使用

在现代网络编程中&#xff0c;HttpClientHandler 是一个至关重要的组件&#xff0c;它提供了对 HTTP 请求的底层配置和控制。本文将详细介绍 HttpClientHandler 的核心概念、配置选项以及如何在实际应用中使用它。 1. 什么是 HttpClientHandler&#xff1f; HttpClientHandle…

mongodb光速上手

开始 mongodb是一种nosql数据库&#xff0c;即非关系型数据库。 安装好后将bin目录添加到环境变量。 安装studio-3t&#xff0c;这是可视化编辑器。 启动 mongo --host localhost --port 27017 指令 查看所有库 show dbs 使用或创建并使用库 use school use 数据库名 向…

引入 LangChain4j 来简化 LLM 与 Java 应用程序的集成

作者&#xff1a;来自 Elastic David Pilato LangChain4j 框架于 2023 年创建&#xff0c;其目标如下&#xff1a; LangChain4j 的目标是简化将 LLM 集成到 Java 应用程序的过程。 LangChain4j 提供了一种标准方法&#xff1a; 根据给定内容&#xff08;例如文本&#xff09;创…

【Lcode 随笔】C语言版看了不后悔系列持续更新中。。。

文章目录 题目一&#xff1a;爬楼梯问题描述&#xff1a;题目分析&#xff1a;解题思路&#xff1a;示例代码&#xff1a;深入剖析&#xff1a; 题目二&#xff1a;打家劫舍问题描述&#xff1a;题目分析&#xff1a;解题思路&#xff1a;示例代码&#xff1a;深入剖析&#xf…

什么是数字化转型?数字化转型对企业有哪些优势?

一、什么是数字化转型&#xff1f; 定义&#xff1a; 数字化转型是指企业或组织将传统业务转化为数字化业务&#xff0c;利用人工智能、大数据、云计算、区块链、5G等数字技术提升业务效率和质量的过程。通俗来说&#xff0c;就是将数字技术应用到企业的各个方面&#xff0c;…

【C语言软开面经】

C语言软开面经 malloc calloc realloc free动态分配内存malloccalloc函数&#xff1a;realloc 函数&#xff1a;free函数&#xff1a; 堆栈-内存分区栈区&#xff08;Stack&#xff09;&#xff1a;堆区&#xff08;Heap&#xff09;&#xff1a;全局&#xff08;静态&#xff…

windows下安装rabbitMQ并开通管理界面和允许远程访问

如题&#xff0c;在windows下安装一个rabbitMQ server&#xff1b;然后用浏览器访问其管理界面&#xff1b;由于rabbitMQ的默认账号guest默认只能本机访问&#xff0c;因此需要设置允许其他机器远程访问。这跟mysql的思路很像&#xff0c;默认只能本地访问&#xff0c;要远程访…

【C++前缀和 动态规划 博弈】1140. 石子游戏 II|2034

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 C动态规划 博弈&#xff1a;往往后续状态已知&#xff0c;前续状态未知 LeetCode1140. 石子游戏 II Alice 和 Bob 继续他们的石子游戏。许多堆石子 排成一行&#xf…

android SELinux权限适配

抓log方法&#xff0c; setenforce 0, 如果不先将selinux设置为permission mode&#xff0c;会导致一个问题。 程序运行的时候遇到权限策略限制&#xff08;假设 sepolicy 1&#xff09;&#xff0c;程序运行失败。添加权限&#xff08;sepolicy 1&#xff09;&#xff0c;然后…

如何将音频转换成mp3?5个宝藏音频转换的方法,学起来!

音频文件已成为我们日常生活中不可或缺的一部分&#xff0c;无论是聆听喜爱的音乐、学习语言课程&#xff0c;还是录制会议内容&#xff0c;音频都扮演着重要角色。然而&#xff0c;随着音频格式的多样化&#xff0c;我们常常会遇到格式不兼容的问题&#xff0c;尤其是在需要将…

【完-网络安全】Windows注册表

文章目录 注册表启动项及常见作用五个根节点常见入侵方式 注册表 注册表在windows系统的配置和控制方面扮演了一个非常关键的角色&#xff0c;它既是系统全局设置的存储仓库&#xff0c;也是每个用户的设置信息的存储仓库。 启动项及常见作用 快捷键 WinR打开运行窗口&#x…

大模型增量训练--基于transformer制作一个大模型聊天机器人

针对夸夸闲聊数据集&#xff0c;利用UniLM模型进行模型训练及测试&#xff0c;更深入地了解预训练语言模型的使用方法&#xff0c;完成一个生成式闲聊机器人任务。 项目主要结构如下&#xff1a; data 存放数据的文件夹 dirty_word.txt 敏感词数据douban_kuakua_qa.txt 原始语…

ubuntu18.04安装教程

window分区 制作启动盘 插入 按F12进入启动选项页面&#xff0c;选择usb启动 选择install ubuntu 进入安装页面 选择中文&#xff08;简体&#xff09; 键盘布局选择英语&#xff08;美国&#xff09; 选择正常安装 等一小会儿 选择其他选项 分区 包括500mb系统分区 1000…

HuggingChat macOS版正式发布!文章内附体验地址!我国打造糖尿病专用AI模型|AI日报

文章推荐 全新豆包AI视频模型发布&#xff01;实测下的可灵与豆包&#xff01;原来它们的差距不止一点点... 今日热点 我国团队打造糖尿病专用AI模型 上海交通大学清源研究院MIFA实验室携手复旦大学附属中山医院内分泌科&#xff0c;组建专家团队&#xff0c;联手开发一款名…

[sql-04] 连续出现至少三次的数字

数据准备 CREATE TABLE leecode_01 (id bigint not null AUTO_INCREMENT,num int DEFAULT NULL COMMENT 用户名,primary key(id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT leecode(连续出现3次的数字)insert into leecode_01(num) values(12); insert into leecode_01…