avatar

Wz Blog

运维学习・持续更新

  • 首页
  • 文章
  • 登录/注册
  • 管理后台
主页 k8s实战操作
文章

k8s实战操作

发表于 2026-10-11 更新于 2026-10- 11
作者 Administrator
12~16 分钟 阅读

▶ Namespace

• 概念和作用

Namespace是k8s系统中的一种非常重要的资源,它用来隔离Pod,一个命名空间下有多个Pod,不同命名空间内的Pod互相隔离。

• 默认namespace(不可删除)

▪ default:所有未指定Namespace的对象都会被分配在default命名空间

▪ kube-node-lease:集群节点之间的心跳维护

▪ kube-public:此命名空间下的资源可以被所有人访问

▪ kube-system:所有由k8s系统创建的资源都处于这个命名空间

• 具体命令操作

▪ 增


kubectl create namespace demo

▪ 删


kubectl delete namespace demo

▪ 改


kubectl edit ns demo

▪ 查


kubectl get ns
kubectl describe ns demo

• 资源清单方式


vim ns-demo.yaml
apiVersion: v1
kind: Namespace
metadata:
name: demo

执行命令:

创建:kubectl create -f ns-demo.yaml

删除:kubectl delete -f ns-demo.yaml

▶ Pod

• 概念

Pod是k8集群管理的最小单元,程序运行在容器中,而容器必须存在于Pod中

tpis:pause容器的作用是什么?

Pause容器负责创建并维护这个网络命名空间,其他容器共享这个网络命名空间,使它们能够相互通信,而不会与其他Pod中的容器发生冲突

• 具体命令操作

▪ 增


kubectl run nginx --image=nginx:1.17.1 --port=80 --namespace demo

▪ 删


kubectl -n demo delete pod 名称

▪ 改


kubectl -n demo edit pod 名称

▪ 查

查看pod基本信息:


kubectl -n demo get pods -o wide

查看pod的详细信息:


kubectl -n demo describe pod 名称

• 资源清单方式


vim pod-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: demo
spec:

containers: #Pod的容器列表
- image: nginx:1.17.1 #- 代表第一个容器,拉取镜像nginx
name: pod #容器名
ports: #容器端口配置列表,声明容器内部监听哪些端口(仅声明)
- name: nginx-port #起一个端口名,Service通过端口名引用
containerPort: 80 #容器内部监听的端口号
protocol: TCP #端口协议
### ▶ Label
####  • 概念和作用

Label是k8s中的一个重要概念。它的作用就是在资源上添加标识,用来对它们进行区分和选择

• Label Selector

Label用于给某个资源对象定义标识

Label Selector用于查询和筛选拥有某些标签的资源对象

▪ 基于等式的Label Selector

name=salve

env!=production

▪ 基于集合的Label Selector

name in (master,slave)

name not in (frontend)

• 具体命令操作

▪ 增


kubectl -n demo label pod nginx-pod version=1.0

▪ 删


kubectl -n demo label pod nginx-pod version-

▪ 改


kubectl -n demo label pod nginx-pod version=2.0 --overwrite

▪ 查

查看标签:


kubectl -n demo get pod nginx-pod --show-labels

筛选标签:


kubectl -n demo get pod -l version=2.0 --show-labels

• 资源清单方式


vim labels.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: demo
labels:
version: 3.0

▶ Depolyment

• 概念和作用

在k8s中,Pod是最小的控制单元,但是k8s很少直接控制Pod,一般都是通过Pod控制器来完成的。Deployment就是一种Pod控制器。负责在Pod死掉的时候瞬间拉起一个新的补上。

• 具体命令操作

▪ 增


kubectl -n demo create deployment mydp --image nginx:1.17.1 --port 80 --replicas 3

▪ 删


kubectl -n demo delete deployment mydp

▪ 改

修改副本数:


kubectl -n demo scale deployment mydp --replicas 5

修改deployment:


kubectl -n demo edit deployment mydp

▪ 查

查看deployment:


kubectl -n demo get deployment

查看deployment的详细信息:


kubectl -n demo describe deployment mydp

查看depolyment创建的pod


kubectl -n demo get pods

查看NAME的前面,应该是mydp-xxxxx

• 资源清单方式


vim /deploy-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
namespace: demo

spec: #Deployment的期望状态
replicas: 3 #副本数
selector: #Deployment通过标签匹配管理哪些Pod
matchLabels: #标签匹配规则,之管理app:nginx的Pod
app: nginx #这里和下面的必须一样,不然报错
template: #Pod模板,创建Pod是,就按照这个模板生成
metadata: #模板内Pod的元数据
labels:
app: nginx #这里和上面的必须一样,不然报错
spec:
containers: #容器列表
.................
### ▶ Service
####  • 概念和作用

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

• 具体命令操作

▪ 增


kubectl -n demo expose deploy nginx --name=svc-nginx -type=ClusterIP --port 80 --target-port 80

--port:Service自身的端口,集群其他服务访问它的端口

--target-port:后端Pod/容器上真实监听的端口

**type的四种类型:**

1.ClusterIP(默认):

仅集群内部可访问,集群外无法访问

k8s分配一个虚拟内网IP

场景:微服务之间互相调用

2.NodePort:

在每一台节点机器上打开一个端口(30000-32767范围)

外部可以通过节点IP:NodePort端口访问服务

集群内部仍然可以互相访问

场景:适合测试,不建议生产大规模使用

3.LoadBalancer:

需要云厂商支持

在NodePort的基础上,向云厂商申请公网负载均衡IP

用户直接访问公网LB的IP就可以到达服务

4.ExternalName:

不做端口代理

把Service映射倒一个外部域名,集群内访问svc,会CNAME解析到外部域名

没有port/target-port的端口转发,多用于访问外部第三方服务

▪ 删


kubectl -n demo delete svc svc-nginx

▪ 改


kubectl -n demo edit svc svc-nginx

▪ 查


kubectl -n demo get svc svc-nginx -o wide

• 资源清单方式


vim service.yaml
apiVersion: v1
kind: Service
metadata:
name: svc-nginx
namespace: demo
spec:
clusterIP:10.0.8.10

#手动指定IP的话要写,不指定的话不写这行,会自动分配

**#不能随便写,要看集群的service-cluster-ip-range地址池**

**常见默认网段:10.96.0.0/12(最常见)** **10.109.0.0/16 172.16.0.0/12**

**查询可执行命令如下:**


kubectl get pod -n kube-system $(kubectl get pod -n kube-system |grep kube-apiserver |awk '{print $1}') -o yaml | grep service-cluster-ip-range
ports:

#Service自身端口,集群其他应用访问这个Service就用这个端口

#访问地址:svc-nginx:80

- port: 80

protocol: TCP

targetPort: 80 #后端Pod容器监听的端口


selector:
#标签选择器,会筛选当前命名空间下,app:nginx标签的所有Pod
app: nginx
type: ClusterIP
容器与云原生
笔记 Kubernetes
许可协议:  CC BY 4.0
分享

相关文章

10月 17, 2026

Kubernetes v1.28.2 双Master堆叠etcd + Haproxy/Keepalived 高可用部署 SOP(Docker + cri-dockerd)

架构一句话:3 台阿里云 ECS,2 台跑 kube-apiserver + etcd 堆叠控制平面,同时在这 2 台上混部 Haproxy + Keepalived 提供 VIP 172.26.127.62:6443;第 3 台做 Worker。所有 kubelet / kubectl 一律连 V

10月 11, 2026

使用Docker方式部署Harbor镜像仓库

1.下载离线安装包 wget https://github.com/goharbor/harbor/releases/download/v2.13.1/harbor-offline-installer-v2.13.1.tgz 2.解压到/opt目录下 tar xvzf harbor-offli

10月 11, 2026

kubernetes概念

▶ k8s简介以及主要功能(优势) • k8s简介 k8s的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化。 • 主要功能 ▪ 自我修复:RS deployment 一旦某一个容器崩溃,能够在1秒左右迅速启动新的容器 ▪ 弹性伸缩:

下一篇

k8s持久化存储

上一篇

k8s安全认证

最近更新

  • Kubernetes v1.28.2 双Master堆叠etcd + Haproxy/Keepalived 高可用部署 SOP(Docker + cri-dockerd)
  • 名词解释
  • ECS 实例反复冻结 —— 故障根因分析报告
  • 运维六大工作内容
  • 磁盘相关命令

热门标签

监控 Linux 数据库 Docker 笔记 CI/CD Kubernetes Nginx

目录

©2026 Wz Blog. 保留部分权利。

使用 Halo 主题 Chirpy