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:查看结果

相关推荐
Harvey90311 分钟前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
陈桴浮海36 分钟前
Kustomize实战:从0到1实现K8s多环境配置管理与资源部署
云原生·容器·kubernetes
珠海西格电力科技1 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀2 小时前
Linux环境变量
linux·运维·服务器
zzzsde2 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
70asunflower3 小时前
Emulation,Simulation,Virtualization,Imitation 的区别?
linux·docker
聆风吟º3 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
ShiLiu_mtx3 小时前
k8s - 7
云原生·容器·kubernetes
NPE~3 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化
神梦流4 小时前
GE 引擎的内存优化终局:静态生命周期分析指导下的内存分配与复用策略
linux·运维·服务器