K8S基本配置

一。kubelet内的结构

1.Namespace:作用是实现多套环境的隔离或者多租户的资源隔离,默认情况下,集群中的所有port都是可以通信的,但是实际上可能不想让两个pod之间相互通信,++这个收可以将两个不同的pot划分到不同的namespace下,k8s通过将集群中内部的资源分配到不同的namespace中++,形成逻辑上的组,以便于资源的隔离

查看空间内的所有namespace:kubectl get ns

查看具体某一个namespace:kubectl get ns dev

查看某一个namespace的详细信息:kubectl describe ns dev

创建一个namespace: kubectl create ns dev

删除一个namespace: kubectl delete ns dev

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

查看某一个namespace内的容器: kubectl get po -n ++dev++

创建一个pod: kubectl run nginx --image=nginx:1.17.1 --port=80 --namespace ++dev++

删除一个pod:kubectl delete pod nginx -n ++dev++

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

特点:

一个Label会以key/value键值对的形式附加到各种对象上,如node,pod,service等等

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

Label通常在资源对象定义时确定,一边灵活的,方便的进行调度

查看标签:kubectl get pod -n dev -o wide --show-labels

添加标签:kubectl label pod nginx ++ver=1.0++-n dev(如果是添加相同的内容,使用--overwrite进行覆盖)

删除标签:kubectl label pod nginx ver- -n dev

筛选标签:kubectl get pod -n dev -l ver=1.0

二。资源管理方式:

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

kubelet comand(对资源执行的操作) type(资源类型) name(资源名) flages(额外参数)

例如:

kubectl get po -n kube-system:查看所有pod

kubectl get pod pod_name:查看某个pod

kubectl get ns kube-public -o yaml:查看某个pod,以yaml格式展示结果,或者是json结构

kubectl api-resources:查看资源类型

kubectl run pod --image=nginx -n dev:创建并运行一个nginx的pod

kubectl get pod -n dev:查看新创建的dev

kubectl delete ns dev:删除dev

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

(1)使用yaml创建一个namespace组

mkdir /test

vim ns.yaml

kubectl create -f ns.yaml:使用yaml创建一个namespace

kubectl get ns:查看namespace的内容,信息

(2)创建一个pod

kubetl apply -f nginx.yaml:使用yaml文件启动pod

kubetl delete -f nginx.yaml:删除pod

kubectl get po -n dev -o wide:查看配置的镜像信息

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

三。要想其他的node能够使用kubectl命令:

scp -r HOME/.kube/ 主机名:HOME/

四。k8s的控制器

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

1.创建一个控制器:kubectl create deployment nginxpod --image nginx:1.17.1 --replicas 3 --port=80 -n dev(--replicas 3:创建副本数量为3)

2.查看状态:kubectl get deployments.apps -n dev

3.查看详细内容:kubectl get po -n dev -o wide

4.删除一个内容:kubectl delete pod nginxpod-d97444cb8-krbwk -n dev

注释:当删除了一个pod后,会重新创建一个pod,因为控制器的存在,且副本数量为3,会维持副本数量在3个

5.生成一个yaml文件:kubectl create deployment nginxpod --image nginx:1.17.1 --replicas 3 --port=80 -n dev --dry-run=client -o yaml > nginx-deploy.yaml

五。service配置

目的:在集群内部的ip不能进行访问,通过service将ip进行暴露服务,供外界访问,Service可以看作一组同类的pod对外的访问接口,借助service,应用可以方便地实现服务发现和负载均衡,++生成的ip可以外界访问,通过--type=Node++++Port生成的端口,pod容器也可以直接访问++

1.添加暴露端口:kubectl expose deployment nginxpod --name=svc-ng2 --type=NodePort --port=80 --target-port=80 -n dev

注释:当服务类型设置为 NodePort 时,Kubernetes 会在集群内每个节点上开放一个端口,--port 参数指定的是服务所监听的端口,--target-port 参数指定的是服务将流量转发到后端 Pod 时所使用的端口

2.查看service:kubectl get svc -n dev:

3.删除暴露端口:kubectl delete svc svc-ng1 -n dev

4.生成yaml文件:kubectl expose deployment nginxpod --name=svc-ng2 --type=NodePort --port=80 --target-port=80 -n dev --dry-run=client -o yaml > svc-ng2.yaml

5.测试是否成功:

4.进入其中一个pod:exec -it nginxpod-d97444cb8-krbwk -n dev -- bash

当以上三个pod配置好页面后,cuel svc的ip即可进行负载均衡(如上的curl 10.108.45.141,或者curl http://172.18.140.200:30368也可以进行负载均衡)

六。k8s开启ipvs

  1. yum install ipvsadm:下载软件

2.lsmod | grep ip_vs:查看是否有ipvsadm的模块

3.kubectl edit configmap kube-proxy -n kube-system:编辑文件

4.kubectl get pod -n kube-system

5.kubectl get pods -n kube-system | grep kube-proxy:过滤查看是否有负载均衡内容

6.kubectl delete pod -l k8s-app=kube-proxy -n kube-system:删除之前内容

kubectl get pod -n kube-system -l k8s-app=kube-proxy:查看

注释:-l--selector 的简写形式,用于通过标签选择器来筛选资源。k8s-app=kube-proxy 表示筛选出带有 k8s-app 标签且值为 kube-proxy 的 Pod。kube-proxy 是 Kubernetes 网络代理,其功能是在节点上实现网络规则,让 Pod 能够与服务进行通信,删除后会重新建立

7.ipvsadm -Ln:查看结果

相关推荐
2301_810746312 小时前
CKA冲刺40天笔记 - day10 K8S namespace
笔记·容器·kubernetes·k8s
abcy0712132 小时前
k8s ipc-namespace进程间通信隔离类型详解
docker·容器·kubernetes
观熵2 小时前
SaaS 系统的自动化部署结构设计实战指南:基于 K8s + Helm 的工程落地路径
运维·kubernetes·自动化·saas 架构
chinesegf2 小时前
ubuntu中虚拟环境的简单创建和管理
linux·运维·ubuntu
月亮不营业啦2 小时前
docker 教程(带详细图文)
docker
若涵的理解2 小时前
一文读懂K8S kubectl 命令,运维小白必看!
运维·docker·kubernetes
java_logo2 小时前
2025 年 11 月最新 Docker 镜像源加速列表与使用指南
linux·运维·docker·容器·运维开发·kylin
牛肉胡辣汤2 小时前
【详解】K8S集群卸载清理
云原生·容器·kubernetes
XMYX-03 小时前
Ubuntu 22.04.5 LTS 安装 Docker 29.1.5(阿里云镜像,生产环境实战)
ubuntu·阿里云·docker