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

相关推荐
北龙云海8 小时前
案例分享 | 面向公网业务系统境内访问白名单配置实操方案
运维·网络·安全·网络安全·告警·数据泄露·入侵攻击
FoldWinCard9 小时前
D5 Linux 网络及端口命令
linux·运维·服务器
SakitamaX10 小时前
LVS(Linux Virtual Server)概念详解
linux·运维·lvs
小张同学a.11 小时前
Linux系统管理
linux·运维
会飞的小新11 小时前
Windows CMD 与 PowerShell 深度解析:底层原理、命令差异、自动化选型指南
运维·windows·自动化
代码村新手11 小时前
Linux的基本指令
linux·运维·服务器
MonolithIoT12 小时前
实战方案|设备备件无人值守仓库:连续化产线运维备件 7×24 小时数字化管控方案
运维·网络·数据库
gwf21613 小时前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
AAA@峥13 小时前
CentOS7 源码编译安装 MySQL5.7|SQL 基础操作 + 备份恢复完整实战
运维·数据库·sql·centos
码上上班14 小时前
docker课程
java·docker·容器