当前位置:   article > 正文

Kubernetes_flannel-cni-plugin:v1.2.0

flannel-cni-plugin:v1.2.0

1.Kubernetes简介

Kubernetes
• 在Docker 作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应
用了很多年,Borg系统运行管理着成千上万的容器应用。
• Kubernetes项目来源于Borg,可以说是集结了Borg设计思想的精华,并且吸收了
Borg系统中的经验和教训。
• Kubernetes源于希腊语,意味“舵手”或“飞行员”,k8s是通过将8个字母“ubernete”替换为8而
导出的缩写
• Kubernetes作为自动化的容器编排平台,其核心功能:
• 服务发现与负载均衡
• 容器自动装箱
• 存储编排
• 自动容器恢复
• 自动发布与回滚
• 配置与密文管理
• 批量执行
• 水平伸缩

2.Kubernetes部署

首先 开启三台虚拟机 并且完全关闭swap 分别安装好docker
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
三台服务器 分别修改 docker配置文件
vim /etc/docker/daemon.json
{
“exec-opts”: [“native.cgroupdriver=systemd”],
“log-driver”: “json-file”,
“log-opts”: {
“max-size”: “100m”
},
“storage-driver”: “overlay2”
}
在这里插入图片描述
下载 Kubernetes repo源
cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF

在这里插入图片描述
在这里插入图片描述
下载 yum install
在这里插入图片描述
设置开机启动在这里插入图片描述安装Kubernetes 末尾 会有加入主机端的 命令 建议保存
在这里插入图片描述
下载一些 配置镜像
kubeadm config images list --image-repository registry.aliyuncs.com/google_containers
在这里插入图片描述kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
在这里插入图片描述
下载好后 设置下 pod的网络地址
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers
在这里插入图片描述
设置好后 调试变量 并且设置开机自启动
export KUBECONFIG=/etc/kubernetes/admin.conf
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
配置命令补齐功能
echo “source <(kubectl completion bash)” >> ~/.bashrc
在这里插入图片描述
安装网络组件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

在这里插入图片描述
拉取两个镜像
docker pull rancher/mirrored-flannelcni-flannel-cni-plugin:v1.1.0
docker pull rancher/mirrored-flannelcni-flannel:v0.18.1

在这里插入图片描述
拉取成功后在这里插入图片描述
安装 尾部 会有 添加这台主机 的方式 两台 服务器端 输入 即可添加
kubeadm join 192.168.0.207:6443 --token 5jrhru.1lef47izqeqgbn3h
–discovery-token-ca-cert-hash sha256:4e23c18e34790abd6b8a10c9b8c564d1575af768b5798fb14de945678ca3608c

成功后 主机端可以看到在这里插入图片描述
安装完成
在这里插入图片描述在这里插入图片描述

3.pod管理

docker 与 Kubernetes 连接 以及一些功能

首先docker 服务器 启动 harbor 此服务器 作k8s的 本地仓库
在这里插入图片描述
上传一些 需要的 镜像文件在这里插入图片描述在这里插入图片描述在这里插入图片描述
k8s服务端 编辑 vim /etc/docker/daemon.json
在这里插入图片描述
创建一个控制器 如果删除 pod 控制器会 自动重新 创建在这里插入图片描述
如果负责的服务器 出问题 则会 自动 让其他服务器 来接管pod在这里插入图片描述
控制器 后跟参数 可以 控制 数量
在这里插入图片描述
通过 --prot 进行端口映射在这里插入图片描述
在这里插入图片描述
**暴露到外网 修改 type设置为NodePort后 网络 为宿主机 **
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
给镜像 添加不同版本 升级 或者 降级在这里插入图片描述

4.资源清单

用命令行创建pod

创建一个目录 存放yaml 编辑 yaml文件在这里插入图片描述

  • apiVersion: group/version  //指明api资源属于哪个群组和版本,同一个组可以有多个版本 kubectl api-versions //查询命令
    kind: //标记创建的资源类型, k8s主要支持以下资源类别
    Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,Cronjob •
    metadata: //元数据
    name: //对像名称
    namespace: //对象属于哪个命名空间
    labels: //指定资源标签,标签是一种键值数据
    annotations: //用来描述资源的注解
    ownerReference: // 用来描述多个资源之间相互关系
    spec: //定义目标资源的期望状态
    status: //用来描述观测到的状态
    $ kubectl explain pod //查询帮助文档

    在这里插入图片描述
    资源上限 最低要求 设置 会影响QoS
    BestEffort (不做任何限制)<Burstable(做一些限制 最低小于最大)<Guaranteed (敏感限制 资源上限和最低需求一致) Guaranteed优先级最大

5.pod生命周期

初始化容器 init

通过初始化容器 init 可以 阻塞或者检查 环境 通过后运行 会影响pod status的运行
编辑一个yaml在这里插入图片描述
在这里插入图片描述
init 两个 检测 在这里插入图片描述
正常运行 需要 设置需要的环境
在这里插入图片描述
在这里插入图片描述
环境 设置好 运行 running 成功 在这里插入图片描述

探针

创建yaml 文件 并编辑 会影响pod ready 位置 如果 有问题 不会启动在这里插入图片描述
在这里插入图片描述
如果想要 运行需要 满足 探针需求
在这里插入图片描述

6.控制器

Pod 的分类: • 自主式 Pod:Pod 退出后不会被创建
• 控制器管理的 Pod:在控制器的生命周期里,始终要维持 Pod 的副本数目
• 控制器类型:
• Replication Controller和ReplicaSet
• Deployment
• DaemonSet
• StatefulSet
• Job
• CronJob
• HPA全称Horizontal Pod Autoscaler

ReplicaSet控制器

创建ReplicaSet控制器 yaml 文件 并编辑在这里插入图片描述
在这里插入图片描述
创建后 会自动生成在这里插入图片描述

Deployment控制器

Deployment控制器更容易对容器进行 回档
创建Deployment控制器在这里插入图片描述在这里插入图片描述
Deployment >> ReplicaSet>>pod
控制器的删除在这里插入图片描述
修改镜像 vim rs.yaml
在这里插入图片描述在这里插入图片描述
每次修改 都会 增加副本 可以回滚版本在这里插入图片描述

DaemonSet控制器

创建DaemonSet控制器 给每个节点一个任务 不需要 设置数量
vim DaemonSet.yaml在这里插入图片描述在这里插入图片描述

Job控制器

执行批处理任务,仅执行一次任务,保证任务的一个或多个Pod成功结束
创建一个 yaml文件 并编辑
在这里插入图片描述
在这里插入图片描述

CronJob控制器

周期化的控制器 创建 yaml并编辑
在这里插入图片描述
在这里插入图片描述

7.service

Service可以看作是一组提供相同服务的Pod对外的访问接口。借助Service,应用可以方便地实现服务发现和负载均衡。
service的类型:
• ClusterIP:默认值,k8s系统给service自动分配的虚拟IP,只能在集群内部访问。
• NodePort:将Service通过指定的Node上的端口暴露给外部,访问任意一个
NodeIP:nodePort都将路由到ClusterIP。
• LoadBalancer:在 NodePort 的基础上,借助 cloud provider 创建一个外部的负载均衡器,并将请求转 发到< NodeIP>:NodePort,此模式只能在云服务器上使用。
• ExternalName:将服务通过 DNS CNAME 记录方式转发到指定的域名(通过spec.externlName 设定)。

创建一个svc 默认ClusterIP方式
在这里插入图片描述
在这里插入图片描述
svc没有 分配地址 在这里插入图片描述
**给yaml 文件中加入deployment控制器 ** 在这里插入图片描述
有了地址分配
在这里插入图片描述
在这里插入图片描述

开启IPVS

为了 更好的 查看 信息 可以给 service 设置IPVS模式,IPVS模式的service,可以使K8s集群支持更多量级的Pod。在这里插入图片描述mode位置加入ipvs在这里插入图片描述
重启proxy后 生效
kubectl get pod -n kube-system |grep kube-proxy | awk ‘{system(“kubectl delete pod “$1” -n kube-system”)}’

在这里插入图片描述安装一下ipvsadm
在这里插入图片描述安装成功后 查看更方便
在这里插入图片描述

NodePort方式 service

绑定外部端口 使用端口 可以访问
直接 编辑之前创建的svc
在这里插入图片描述在这里插入图片描述
NodePort 方式 可以 直接域名+ 端口 访问地址
在这里插入图片描述

dns服务

service服务中 k8s提供了一个dns插件在这里插入图片描述
容器中可以 使用svc名称 查看解析
在这里插入图片描述

Headless Service “无头服务”

编辑svc.ymal 加入clusterIP: None在这里插入图片描述设置无头服务后 将没有地址访问 但是可以直接用名称访问 解析
在这里插入图片描述

LoadBalancer方式的service

此方式 可以设置 虚拟地址 给 svc
直接编辑 yaml文件更改type
在这里插入图片描述在这里插入图片描述
为了实验需要 安装 metallb
更改proxy在这里插入图片描述在这里插入图片描述
创建一个目录 并且下载 需要的 环境
在这里插入图片描述在这里插入图片描述
上传镜像 到仓库端 在这里插入图片描述
在这里插入图片描述
编辑下载好的 将 镜像全部设为此路径
在这里插入图片描述
在这里插入图片描述完成后运行
在这里插入图片描述
创建一个config 配置文件在这里插入图片描述设置容器的 虚拟网址范围 不可与真机冲突在这里插入图片描述
完成后 自动给了60虚拟地址 在这里插入图片描述

ExternalName方式service

创建yaml文件 并编辑
在这里插入图片描述
在这里插入图片描述
编辑 externalNAME 可以随意更改 完成后运行在这里插入图片描述

部署Ingress

创建目录 下载需要的环境在这里插入图片描述
编辑文件在这里插入图片描述将3个 镜像 目录改为 本地仓库位置
在这里插入图片描述
成功后可以看到 ingress-nginx服务在这里插入图片描述
实验 开启 svc-1在这里插入图片描述
创建一个 ingress 文件
在这里插入图片描述
在这里插入图片描述
外部服务器可以 通过 端口访问在这里插入图片描述
在开启个 svc-2 再开启一个 ingress
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在外网访问时 可以 分别访问不同版本 访问时 需要解析在这里插入图片描述
在这里插入图片描述
如果不想加端口访问 可以优化
在这里插入图片描述
在这里插入图片描述在image镜像 controller 的Deployment控制器部分 加上type hostNetwork在这里插入图片描述访问时不需要加端口在这里插入图片描述
这个方式不需要转发 共享一个宿主机 网络

Ingress加密 认证

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2848 -keyout tls.key -out tls.crt -subj "/CN=nginxsvc/0=nginxsvc"在这里插入图片描述修改ins1 添加一些东西
在这里插入图片描述在这里插入图片描述
在这里插入图片描述认证 创建用户 在这里插入图片描述编辑ins1.yaml
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.k8s网络通信

flannel host-gw

主机网关性能好,但只能在二层网络中,不支持跨网络
配置host-gw 修改kube-flannel type即可在这里插入图片描述在这里插入图片描述
在这里插入图片描述

calico网络插件

这个网络插件 会和flannel 冲突 所以先关闭flannel .yaml在这里插入图片描述
上传镜像到本地仓库在这里插入图片描述
主机端创建目录 编辑yaml文件在这里插入图片描述将所有镜像文件目录修改
在这里插入图片描述
完成后运行在这里插入图片描述
在这里插入图片描述
完成后需要重启 pod 或者yaml 转换到 calico网络在这里插入图片描述
创建一个配置文件yaml 并编辑在这里插入图片描述
在这里插入图片描述
通过 ns 标签 可以 访问 网络 创建一个 ns test 加上标签 来满足 网络需求在这里插入图片描述在这里插入图片描述
测试结果 成功
在这里插入图片描述
还可以通过pod标签 role=demo 访问
在这里插入图片描述成功
在这里插入图片描述
yaml文件 一点区别
有两个杠 代表满足一个即可
在这里插入图片描述
只有一个杠 需要全部满足 才能访问
在这里插入图片描述
在这里插入图片描述
同时满足才可以 访问 在这里插入图片描述

9.kubernetes存储

Configmap配置管理

• 创建ConfigMap的方式有4种:
• 使用字面值创建
• 使用文件创建
• 使用目录创建
• 编写configmap的yaml文件创建

字面创建在这里插入图片描述
通过文件创建
在这里插入图片描述
使用目录创建在这里插入图片描述
编写configmap的yaml文件创建在这里插入图片描述
在这里插入图片描述

Configmap使用方法

使用configmap设置环境变量在这里插入图片描述
在这里插入图片描述
可以简化一下内容在这里插入图片描述
在这里插入图片描述另一种写法在这里插入图片描述
Configmap热更新
创建一个nginx文件在这里插入图片描述将配置文件存储到cm中在这里插入图片描述编写yaml文件在这里插入图片描述更新nginx配置文件后访问不会变更在这里插入图片描述
在这里插入图片描述可以关闭重启 生效更新在这里插入图片描述
也可以手动输入指令更新在这里插入图片描述

Secret配置管理

Secret 对象类型用来保存敏感信息,例如密码、OAuth 令牌和 ssh key。 敏感信息放在 secret 中比放在 Pod 的定义或者容器镜像中来说更加安全和灵活。
编写一个secret对象在这里插入图片描述
在这里插入图片描述
将Secret挂载到Volume中
在这里插入图片描述
在这里插入图片描述
向指定路径映射 secret 密钥在这里插入图片描述
在这里插入图片描述
存储私有仓库的 数据调取
创建认证信息在这里插入图片描述编辑yaml内容在这里插入图片描述
在这里插入图片描述

Volumes配置管理

empty卷

在这里插入图片描述
在这里插入图片描述vm1 vm2为不同的地址但是挂载的 是相同的卷在这里插入图片描述内容使用 也得到了了限制在这里插入图片描述

hostPath卷

hostPath 卷能将主机节点文件系统上的文件或目录挂载到您的 Pod 中。 虽然这不是大多数 Pod
需要的,但是它为一些应用程序提供了强大的逃生舱。
创建yaml并编辑
在这里插入图片描述挂载到宿主机路径 修改 index即可显示在这里插入图片描述在这里插入图片描述
NFS 示例
在这里插入图片描述在这里插入图片描述在这里插入图片描述

PersistentVolume(pv 持久卷)

PersistentVolumeClaim(持久卷声明,简称PVC)
• PVC与PV的绑定是一对一的映射。没找到匹配的PV,那么PVC会无限期得处于unbound未绑定
状态。

静态分配存储 编写pv.yaml并启动在这里插入图片描述在这里插入图片描述
**编写与之对应的pvc 运行 **
在这里插入图片描述绑定成功
在这里插入图片描述
Pod挂载PV在这里插入图片描述
在这里插入图片描述
在这里插入图片描述添加多个 静态pv 编辑 pv.yaml在这里插入图片描述
在这里插入图片描述
编辑pvc.yaml添加 pvc在这里插入图片描述
在这里插入图片描述
使用 时 pod 文件 修改即可 在这里插入图片描述
动态分配存储
创建一个namespce 并给权限
在这里插入图片描述
编辑depolyment.yaml文件在这里插入图片描述
在这里插入图片描述编辑class.yaml
在这里插入图片描述在这里插入图片描述编辑pvc.yaml
在这里插入图片描述
在这里插入图片描述本地仓库nfs端 在这里插入图片描述
主机端 修改pvc 在这里插入图片描述
在这里插入图片描述
会自动创建新需求pv
在这里插入图片描述
nfs端在这里插入图片描述
编辑 pod.yaml使用 在这里插入图片描述
在这里插入图片描述成功
在这里插入图片描述
• 默认的 StorageClass 将被用于动态的为没有特定 storage class 需求的
PersistentVolumeClaims 配置存储:(只能有一个默认StorageClass)
• 如果没有默认StorageClass,PVC 也没有指定storageClassName 的值,那么意
味着它只能够跟 storageClassName 也是“”的 PV 进行绑定。

输入命令 可以修改
kubectl patch storageclass -p '{“metadata”:
{“annotations”:{“storageclass.kubernetes.io/is-default-class”:“true”}}}
在这里插入图片描述
输入此补丁 创建pvc时

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/952899
推荐阅读
相关标签
  

闽ICP备14008679号