品牌网站建设哪里有,松江品划网络做网站,带地板翻转的网站怎么做,2021友情链接qq群k8s官方文档Kubernetes 文档 | Kubernetes作用#xff1a;kubernetes用于容器化应用程序的部署#xff0c;扩展和管理。目标#xff1a;是让部署容器化应用简单高效。Kubernetes集群架构与组件 Master组件 kube-apiserverkubernetes API#xff0c;集群的统一入口#xff… k8s官方文档 Kubernetes 文档 | Kubernetes 作用 kubernetes用于容器化应用程序的部署扩展和管理。 目标 是让部署容器化应用简单高效。 Kubernetes集群架构与组件 Master组件 kube-apiserver kubernetes API集群的统一入口各组件协调者以RESTful API提供接口服务所有对象资源的增删改查和监听操作都交给APIServer处理后在提交给Etcd存储。 kube-controller-manager 处理集群中常规后台任务一个资源对应一个控制器而ControllerManager就是负责管理这些控制器的。例如Deployment、Service kube-scheduler 根据调度算法为新创建的Pod选择一个Node节点可以任意部署可以部署在同一个节点上也可以部署在不同的节点上。 etcd 分布式键值存储系统。用于保存集群状态数据比如Pod、Service等对象信息。 Node组件 kubelet kubelet是Master在node节点上的Agent管理本机运行容器的生命周期比如创建容器、Pod挂载数据卷、下载secret、获取容器和节点状态等工作。kubelet将每个Pod转换成一组容器。 kube-proxy 在Node节点上实现Pod网络代理维护网络规则和四层负载均衡工作。 第三方容器引擎 容器引擎运行容器例如docker、containerd、podman 简要架构图 kubeconfig配置文件 常用kubectl命令 kubectl案例 #使用镜像控制器部署镜像 kubectl create deployment java-demo --imagegyq/java-demo
kubectl get deployment,pods--image 指定镜像地址镜像来源有哪些
1、docker hub公共镜像仓库即镜像地址里不含IP或者域名的都是从这里下载的
2、私有镜像仓库、即镜像地址里包含ip或者域名 #使用Service将Pod暴露出去 kubectl expose deployment java-demo --port80 --target-port8080 --typeNodePort
kubectl get service 访问应用
http://NodeIP:Port #端口随机生成通过kubectl get service获取
--port80 #service的端口暂时还不用
--target-port8080 #目标端口即镜像中服务的端口 , 例如nginx 80、mysql 3306
--typeNodePort #service类型用于将容器暴露集群之外访问
kubectl get endpoints #查看service关联的pod
kubectl get pods --show-labels #查看pod标签
kubectl get pods -l appjava-demo #根据标签筛选
命名空间工作区 应用场景 资源分类管理可根据不同团队、项目划分命名空间 基于命名空间权限授权 #创建命名空间 kubectl create namespace 命名空间名 #获取命名空间 default get namespace ·default默认命名空间
·kube-systemk8s系统方面的命名空间
·kub-public公开的命名空间谁都可以访问
·kube-node-leasek8s内部命名空间 获取所有命名空间 指定命名空间 -n 删除某个deployment kubectl delete deployment/deployment_name -n namespacedeployment_name为具体的deployment名称namespace为具体的命名空间 #如果不指定命名空间则在默认的命名空间中查找目标 案例删除这三个deployment 删除第一个 全部删除了 基本资源概念 Pod: k8s最小部署单元一组容器的集合 Deployment: 最常见的控制器用于更高级别部署和管理Pod Service为一组Pod提供负载均衡对外提供统一访问入口 Label标签附加到某个资源上用于关联对象、查询和筛选 Namespaces命名空间将对象逻辑上隔离也有利于权限控制 查看资源集群状态 查看master组件状态 kubectl get cs 查看node状态 kubectl get node 查看资源的详细 kubectl describe 资源类型 资源名称 查看资源信息 kubectl get 资源类型 资源名称 #-o wide 、-o yaml 从master节点中移除node节点 在节点上的pod都被区逐后直接执行 第一步kubectl delete node 节点名 第二步 在被删除的node节点中清空集群数据信息 直接删除kubelet.conf和pki目录下的ca.crt 清空后 然后重启k8s和docker systemctl restart kubelet systemctl restart docker 监控集群资源利用率 查看Node资源消耗 kubectl top node node name 查看Pod资源消耗 kubectl top pod pod name 执行时可能会提示错误errorMetrics API not available 这是因为这个命令需要由metric-server服务提供数据而这个服务默认没有安装还需要手动部署下。 kubectl top执行流程 kubectl top - apiserver - metric-server - kubelet(cadvisor) - 容器 Metrics Server部署默认使用证书 1、从网上新下载components.yaml文件内然后镜像改成国内的地址 sed -i s/k8s.gcr.io\/metrics-server/registry.cn-hangzhou.aliyuncs.com\/google_containers/g 2、还要按照下列步骤修改成忽略认证 https://kubelet 自签证书 1、携带kubelet所用https的根证书及客户端证书 2、忽略证书认证 方法 增加一个kubelet-insecure-tls参数这个参数作用是告诉metrics-server不验证kubele提供的https证书 然后apply 查看拉起的镜像 检查是否部署成功 kubectl get apiservices |grep metrics kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes 如果状态True并能返回数据说明Metrics Server服务工作正常 部署的网络组建起什么作用? 部署网络组件的目的是打通Pod到Pod之间网络、Node与Pod之间网络从而集群中数据包可以任意传输形成了一个扁平化网络。 主流网络组件有Flannel、Calico等 而所谓的CNI容器网络接口就是k8s对接这些第三方网络组件的接口。 CNI 容器网络接口 CRI 容器运行时接口 结论解决容器跨主机通信问题 为什么Kubernetes移除默认docker k8s核心代码优化 docker内部调用链比较复杂多层封装和调用某些功能用不上了导致性能降低、提升了故障率、不易排查 docker还会在宿主机创建规则、存储卷也带来了安全隐患 如何应对 可通过cri-docker继续使用Docker并了解其他主流容器运行时。 除了docker之外CRI还支持很多容器运行时例如 containerd containerd与Docke相兼容相比docker轻量很多目前较为成熟 cri-opodman都是红帽RedHat项目目前红帽主推podman node : kube-proxy kubelet (systemd维护)