完整系列k8s系列(1)-腾讯云CVM手动部署K8S_Dashboard安装1k8s系列(1)-腾讯云CVM手动部署K8S_Dashboard安装2k8s系列(2)-Servicek8s系列(3)-StatefulSet 的MongoDB实战k8s系列(4)-MongoDB数据持久化k8s系列(5)-Configmap和Secretk8s系列(6)-Helmk8s系列(7)-命名空间k8s系列(8)-Ingressk8s 系列(9)-容忍、污点、亲和特性Service 通过 label 关联对应的 PodServcie 生命周期不跟 Pod 绑定,不会因为 Pod 重创改变 IP提供了负载均衡功能,自动转发流量到不同 Pod 找到了service,service做负载均衡图片LoadBalancer需要负载均衡器(通常都需要云服务商提供,裸机可以安装 METALLB 测试)会额外生成一个 IP 对外服务K8S 支持的负载均衡器
GraphDriver: 用于存储镜像层的存储驱动类型,如 overlay2。Layers: 镜像由哪些层组成,每一层都有一个唯一的 ID。 Dockerfile 是一个文本文件,包含了一系列的指令和参数,Docker 会根据这些指令一步步构建镜像。 dockerignore 0.0s => => transferring context: 2B sha256:cc61ae337f89ec395bf1d0b13c6f58ee834e3fc57b0de67694302bb63729 424B / 424B 0.0s => => sha256:b2c9e106c9d9e28be2a5b7177b6079722213e2f76f15033f96146880 21ae67bf44d1d0a53ecdce48742c766e44aea4d16e18a3b88a3888ed 1.13kB / 1.13kB 0.0s => => extracting sha256:4477f8fe99ebfd23fa06d28a2fa42eaa05d726926afc0a055e1ff2b612b7a
容器的文件系统路径为 /var/lib/docker/overlay2/<container-id>/merged。 获取当前进程的 PID pid = os.Getpid() fmt.Printf("PID in new namespace: %d\n", pid)} syscall 相关的知识可以到五分钟学GO
在接下来的时间,我将开一个很长的篇章来学习每个SRE与开发人员都必须熟悉的技术K8S,让我们一起学习一起进步,一起喝着咖啡搞SRE吧。 Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 26.1.0 Storage Driver: overlay2 Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: systemd Cgroup Version: 2 gcplogs gelf journald json-file local splunk syslog Swarm: inactive Runtimes: runc io.containerd.runc.v2 OSType: linux Architecture: x86_64 CPUs: 8 Total Memory: 7.712GiB Name: adming-virtual-machine ID: 2ce4d809
Dockerfile 是 Docker 镜像构建的核心,它通过一系列指令自动化地定义了镜像的构建过程。下面我们将详细介绍 Dockerfile 的制作流程,并通过案例展示其应用。 Dockerfile 简介 Dockerfile 是构建 Docker 镜像的核心脚本,它包含了一系列的指令,这些指令定义了镜像的构建过程。 2. Exec 格式:RUN ["executable", "param1", "param2", ... ] (exec form) 这种格式直接执行命令,不通过 shell。 ENV 指令的格式ENV 指令有两种格式:单个变量:ENV <key> <value>多个变量:ENV <key1>=<value1> <key2>=<value2> ...使用示例FROM ubuntuENV 2. Shell 格式CMD command param1 param2 这种格式在 shell (/bin/sh -c) 中执行命令。
题外话:不知道鸽了多久了,这次补更一下,出的密码学加密算法还挺少的,打算先搞4期密码算法,国密SM系列。 SM2算法概念 SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。 SM2为非对称加密,基于ECC。该算法已公开。 ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。 SM2原理 (1)曲线参数 SM2标准推荐使用256位素域Fp上的椭圆曲线y2=x3 + ax + b,其中: (2)密钥生成算法 Alice选择随机数dA做为私钥,其中0 Alice计算公钥PA=dA 此外,若要不断提高安全强度,则必须增加密钥长度,SM2算法密钥长度增长速度较慢(例如:224-256-384),而RSA算法密钥长度则需呈倍数增长(例如:1024-2048-4096),这使得SM2算法的安全性能表现更佳
一个应用是如何在k8s上跑起来的呢,当然我们可以直接把service 暴露出来给外网访问。更常见的做法是经过一个网关的处理,比如权限校验,加密等等。 k8s网关有很多选择比如istio,traefix,ingress-nginx等等。ingress-nginx可以被简单理解为nginx-lua,性能比nginx官方维护的版本差一些。 ingress-nginx-admission securityContext: runAsNonRoot: true runAsUser: 2000 2, kubectl get pods NAME READY STATUS RESTARTS AGE apple-app 1/1 Running 1 2d banana-app 1/1 Running 1 2d 对应配置文件如下 kind: Pod apiVersion: v1 metadata: name: apple-app
注:本文基于k8s集群v1.16.2版本。 简介 k8s真是一个复杂的东西,每一次安装都可能出现不一样的问题,本文特记录下来彤哥安装过程中出现的一些问题及解决方案。 sysctl.conf echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf # 执行命令以应用 sysctl -p # 配置K8S 2 2 2 2 <none> 29s 验证是否成功: # 打开浏览器,输入任意worker节点的ip地址,回车,如果出现 总结 本章我们就把一个完整的k8s集群搭好了,你可能还比较迷茫,不用着急,我们下一章安装Dashboard,更直观的感受下k8s集群的魅力。 参考 本文参考自https://kuboard.cn/install/install-k8s.html,非常推荐这个网站,上面有很多k8s不错的教程,非常适合新手入门。
helm 介绍 Helm 是 Kubernetes 的包管理器,Helm 由客户端组件 helm 和服务端组件 Tiller 组成, 能够将一组K8S资源打包统一管理。 Helm 三大核心概念: chart:Helm的打包格式叫做chart,所谓chart就是一系列文件, 它描述了一组相关的 k8s 集群资源 release:使用 helm install 命令在 Kubernetes #对应自己k8s版本号 wget https://get.helm.sh/helm-v3.6.1-linux-amd64.tar.gz tar xf helm-v3.8.1-linux-amd64. templates下的文件从命名我们就能知道是k8s的配置文件。我们按照创建容器控制器的经验就能生成这些文件。values.yaml 提供了应用在安装时的默认参数。 使用指令: helm install test test.tgz 安装helm包,会在你的k8s集群里面生成对应的pod等程序。
KubeSphere 介绍 KubeSphere是k8s控制台,ubeSphere 目前提供了工作负载管理、微服务治理、DevOps 工程、Source to Image、多租户管理、多维度监控、日志查询与收集 利用KubeSphere我们可以根据我们之前学习的 Jenkins docker k8s 搭建一套完整的私有云系统,极大的减少运维以及开发的工作量。 kubeSphere 安装 为了简化安装,我们这里使用的是KubeKey,KubeKey安装k8s的最低配置要求是2核4G,低于这个配置使用KubeKey会安装失败。 /kk init os 接下来我们生成一个配置文件来安装k8s和kubeSphere . 系列在这一篇算是终结了,下一篇会写普罗米修斯相关的文章,然后之后按照计划就是写我的 poseidon 项目了,目前对自己的要求就是一周一更新。
Kubernetes中概念的简要概述 Cluster : 集群是指由Kubernetes使用一系列的物理机、虚拟机和其他基础资源来运行你的应用程序。 window下搭建k8s环境 搭建k8s开发环境有三种,一种是通过docker desktop + Minikube 来直接在你的电脑上搭建,这种搭建方式存在的问题比较多,很多功能不支持,不建议使用。 另外一种方式是通过Docker Desktop安装k8s,这种k8s是单机版的,master 和node 是同一个节点也就是本机,这种方式安装的k8s基本上能满足我们的学习需求,初期学习阶段可以使用这种安装方式 相关镜像(确认k8s-for-docker-desktop文件夹下的images中的k8s和本地安装的docker中需要的k8s版本保持一致) . root@master ~]# lsmod | grep br_netfilter 安装Kubernetes组件 # 1、由于kubernetes的镜像在国外,速度比较慢,这里切换成国内的镜像源 # 2、
一、k8s的历史演变 k8s的演变过程:首先从传统的服务-->虚拟机部署-->容器部署-->k8s。 2)虚拟机时代 一台物理机器启动多个虚拟机实例,一个虚拟机跑多个应用程序,每个虚拟机都是完整的独立的系统。 为了解决多个应用部署在同一台物理机资源分配不均的问题,引入了虚拟化。 Docker 由镜像、镜像仓库、容器三个部分组成: 镜像: 跨平台、可移植的程序+环境包 镜像仓库: 镜像的存储位置,有云端仓库和本地仓库之分,官方镜像仓库地址 容器: 进行了资源隔离的镜像运行时环境 2 3、容器和k8s的关系 K8S 和 Docker 们不是替代关系,而是配合关系。 二、K8S的特性 1.高可用,不宕机,自动灾难恢复 2.灰度更新,不影响业务正常运转 3.一键回滚到历史版本 4.方便的伸缩管理(包括应用伸缩,机器增减),提供负载均衡 5.有一个完善的生态体系 6.轻量级
【k8s 系列】k8s 学习十六,Label2 在 k8s 中,我们会轻轻松松的部署几十上百个微服务,这些微服务的版本,副本数的不同进而会带出更多的 pod 这么多的 pod ,如何才能高效的将他们组织起来的 ,如果组织不好便会让管理微服务变得混乱不堪,杂乱无章 因此,就有了标签 Label 标签 Label 标签是一种简单的却功能强大的 K8S 的其中一个特性,可以组织 K8S 中的资源,包括 pod 标签是可以被附加到资源的任意键值对的,用来选择具有该确切标签的资源 也就是说,咱们的标签的 key 在资源内部是任意的,可以自己定义,只要是资源内唯一就可以 举个例子 我们可以将上述混乱的多个 pod,定义 2 我们可以很轻易的就可以通过 pod 标签来查看我们期望看到的 pod 状态 写个 demo 就用之前的 xmt-kubia,yaml 文件改改,命名为 xmt-kubia-labels.yaml 加上 2 的思想就不对等了,K8S 中的思想是应用程序隐藏实际的基础架构,在 K8S 中,创建出来的 pod 都是随机分配到不同的 节点上的, 那么,我们需要实现如上的需求,我们可以通过 标签来完成 给 node
会直接将应用程序部署在物理机上,例如直接将java程序部署到物理机中 优点:简单,不需要其他技术的参与 缺点:不能为应用程序定义资源使用边界,很难合理的分配计算资源,而且程序之间容易产生互相影响 比如2个 Swarm:Docker自己的容器编排工具 Mesos:Apache的一个资源统一管控的工具,需要和Marathon结合使用 Kubernetes:Google开源的的容器编排工具 kubernetes(k8s 服务可以通过自动发现的形式找到它所依赖的服务 负载均衡:如果一个服务起动了多个容器,能够自动实现请求的负载均衡 版本回退:如果发现新发布的程序版本有问题,可以立即回退到原来的版本 存储编排:可以根据容器自身的需求自动创建存储卷 一个k8s 1/1 Running 1 (5h29m ago) 23h kube-controller-manager-master 1/1 Running 2 5h29m ago) 23h kube-proxy-g8rnm 1/1 Running 0 3h37m kube-proxy-n2n4n
2.资金流动性强 货币基金的流动性跟活期差不多,比方说,从余额宝提现到中信银行卡里,几乎是1秒钟到账,非常快捷方便。
k8s 逐渐已经作为一个程序员不得不学的技术,尤其是做云原生的兄弟们,若你会,那么还是挺难的 学习 k8s ,实践尤为重要,如果身边有自己公司就是做云的,那么云服务器倒是不用担心,若不是,我们可以在网上购买各大云厂商的服务器 ,用于学习用于精进自己 如下是 k8s 官网,最好的资料莫过于官网了 点击进入 k8s 官网 现状 公司一直在发展,各种设置也在推陈出新,现在就有一个很明显的对比 从最开是的 IT 基础设置主机化
完整系列k8s系列(1)-腾讯云CVM手动部署K8S_Dashboard安装1k8s系列(1)-腾讯云CVM手动部署K8S_Dashboard安装2k8s系列(2)-Servicek8s系列(3)-StatefulSet 的MongoDB实战k8s系列(4)-MongoDB数据持久化k8s系列(5)-Configmap和Secretk8s系列(6)-Helmk8s系列(7)-命名空间k8s系列(8)-Ingressk8s 系列(9)-容忍、污点、亲和介绍在腾讯云上新建集群,以及负载均衡,并通过Ingress访问的示意图如下:图片一. secret创建图片apiVersion: v1kind: Secretmetadata https://tools.fun/base64.html mongo-username: bW9uZ291c2Vy #mongouser mongo-password: bW9uZ29wYXNz 云硬盘图片2. 我们需要去销毁数据,否则一直收费删除集群
下载wget https://get.helm.sh/helm-v3.2.4-linux-amd64.tar.gz2. CAPACITY ACCESS MODES STORAGECLASS AGEdatadir-my-mongo-mongodb-0 Bound pvc-93f8f01b-af14-4680-a2a0 STATUS CLAIM STORAGECLASS REASON AGEpvc-93f8f01b-af14-4680-a2a0
192.168.80.74 使用yum方式安装nginx的命令如下 yum -y install nginx-1.16.1 systemctl start nginx ss -tanlp |grep :80 2、 请出门左转到 https://xie.infoq.cn/article/346a3848bdb6d2bd8cd7e205e 第二步:访问nginx 这两个nginx都启动完毕了,我们使用浏览器访问看看 yum方式安装 cd /usr/share/nginx/html/ echo "
vagrant是开源的虚拟机技术,相对于 vmware 而言更轻量级,操作更简便移植性更强,如果我们需要学习k8s或者搭建一些集群的话建议使用 Virtualbox+Vagrant。 掌握 Vagrant技术对我们后续学习k8s会有很大的帮助 环境准备 vagrant 下载地址:https://www.vagrantup.com virtualbox 下载地址:https://www.virtualbox.org default: Adapter 1: nat default: Adapter 2: hostonly ==> default: Forwarding ports... 我们修改Vagrantfile 内容: Vagrant.configure("2") do |config| (1..3).each do |i| #定义节点变量 end end end end 执行 vagrant up 启动node1,node2,node3 三台虚拟机,在启动过程中可能会报挂载失败的错误: node1: /share