作者jinjunzhu来源君哥聊技术(ID:gh1f109b82d301)kubectl和minikube是部署kubernetes集群的2个重要工具,本文主要介绍如何安装这2个工具。安装环境:centos7虚拟机一、安装kubectlkubectl是k8s命令行工具,用在k8s集群中,可以部署应用、查看和管理集群资源。使用kubectl版本不能跟集群版本差别太大,最好使用最新版本的kubectl。1.下载安装包,如下2个命令,第一个下载最新版本,第二个下载指定版本curlLOhttps:storage.goo...
2022-05-01 11:03:48 1.1w浏览 0点赞 0回复 0收藏
作者jinjunzhu来源君哥聊技术(ID:gh1f109b82d301)我们用docker制作了一个容器镜像,使用docker命令就可以跑起来。但是当容器成千上万时,用docker命令来管理肯定是不够的。而且生产上的自动发布、容器监控、接口鉴权等工作,传统的工具已经不能支持。这时kubernete的作用就突显出来。kubernete架构体系如下图:从上面这张图可以看出,kubernete分为master节点和node节点。master节点是空值节点,而node节点是计算节点。maste...
2022-05-01 10:51:00 7037浏览 0点赞 0回复 0收藏
作者jinjunzhu来源君哥聊技术(ID:gh1f109b82d301)在前面的文章中,我们介绍了容器技术,他的本质是操作系统上的一个进程,那么打包的容器镜像其实就是一个安装包,类似于windows操作系统中的exe文件,那容器所在的kubernete集群其实就是一个操作系统。容器和操作系统中进程一样,并不是独立的运行,而是和其他容器之间有着关联的关系。假如我们有3个进程,因为相互之间的关系需要部署在同一台宿主机上,这3个进程每个需要分...
2022-05-01 10:48:56 5362浏览 0点赞 0回复 0收藏
作者朱晋君来源君哥聊技术(ID:gh1f109b82d301)概述kubeadm是一个部署kubernete集群的非常易用的工具,只需要2条命令kubeadminit和kubeadmjoin就可以搭建起kubernete的集群。它采用的方案是把kubelete直接部署在宿主机上,其他组件部署在容器中。本文采用的机器资源:2个vmware虚机,安装系统centos7,2核CPU,4G内存安装前提示1.给虚拟机安装系统过程中,一定要指定hostname,不然2个虚拟机hostname默认一致,worker节点加入...
2022-05-01 10:47:03 1.4w浏览 0点赞 0回复 0收藏
作者朱晋君来源君哥聊技术(ID:gh1f109b82d301)在之前的文章中,我讲了使用kubeadm从0到1搭建kubernete集群,今天我们来聊一下如何在这套k8s集群上部署springboot应用。首先说明一下,我们这次集群的网络使用flannel网络,master节点启动命令如下:kubeadminitimagerepositoryregistry.aliyuncs.comgooglecontainerskubernetesversionv1.17.3podnetworkcidr10.244.0.016apiserveradvertiseaddress192.168.59.132上面的参数podn...
2022-05-01 10:32:04 6499浏览 0点赞 0回复 0收藏
作者朱晋君来源君哥聊技术(ID:gh1f109b82d301)容器中的网络,无非就是2个方面,同一台宿主机上面的容器是可以联通的,不同宿主机上的容器相互间也是可以联通的。在kubernete的发展历程中,kubernete并没有实现自己的网络规范,而是专注于编排的核心功能。一个重要的原因就是当时已经有了coreos发起的cni网络规范,而flannel模型最初已经能满足kubernete使用了。后来即使有了一些复杂的问题,calico和weave也基本解决。CNI网...
2022-05-01 09:45:23 6787浏览 2点赞 1回复 0收藏
作者朱晋君来源君哥聊技术(ID:gh1f109b82d301)在之前的文章《kubernete中的原子调度单位:pod》中提到过,如果把kubernete比作linux操作系统,那pod就是虚拟机,pod里面的容器就是虚拟机上的进程。这个类比可以说非常形象。在Linux上,进程并不是完全独立的,一些进程之间存在着一些关联,比如一个springboot应用和一个日志收集服务。pod正是使用了容器进程之间的这些关系,做的编排。在kubernete上创建pod下面的yaml文件spr...
2022-05-01 09:39:33 6714浏览 0点赞 0回复 0收藏
作者朱晋君来源君哥聊技术(ID:gh1f109b82d301)kubernete中的控制器模式,是指用一种对象来控制另一种对象,这个控制器是由组件kubecontrollermanager来实现的。deployment就是一种控制器,用来控制pod的创建、水平扩展收缩、滚动更新。deployment是kubernete中一个对无状态pod的控制器,本文来介绍一下。deployment简介先回顾一下我们之前定义的yaml文件,这个文件定义了2个pod副本(replicas:2),这个deployment的编排逻辑就...
2022-05-01 09:33:09 6548浏览 0点赞 0回复 0收藏
作者朱晋君来源君哥聊技术(ID:gh1f109b82d301)上一篇文章中,我们讲了deployment的编排技术,也提到了这种编排技术只能编排无状态的pod。但是在我们实际生产环境中,系统复杂很多。比如分布式系统,pod之间往往有依赖关系。再比如mysql数据库,主从节点需要通过binlog同步数据,读写请可能要求发送到不同节点上。对这种有状态的应用,kubernete的解决方案是StatefulSet。StatefulSet的解决方案是把有状态应用的状态抽象成2种...
2022-05-01 09:25:23 6003浏览 0点赞 0回复 0收藏
作者朱晋君来源君哥聊技术(ID:gh1f109b82d301)这篇文章我们学习一下kubernete对Job的编排。不同于前面讲的Deployment、StatefulSet的编排,Job是一个执行一次就结束的pod,并不会滚动更新。Job定义job非常简单,只要在yaml文件中把kind字段定义成Job就可以了。如下kubejob.yaml:apiVersion:batchv1kind:Jobmetadata:name:kubejobspec:parallelism:2completions:4template:spec:containers:name:myjobimage:zjj2006foreverku...
2022-05-01 09:19:29 6922浏览 0点赞 0回复 0收藏
作者朱晋君来源君哥聊技术(ID:gh1f109b82d301)这篇文章我们来介绍kubernete的一个编排对象,叫DaemonSet,从名字上就能看出,这是一个守护进程。它的作用是在kubernete集群的每个节点上都会创建一个DaemonPod,而且仅有一个。作为容器的守护进程,这个DaemonPod的典型应用是运行网络插件、存储插件、监控和日志组件等。yaml文件DaemonSet在yaml中的声明很简单,只要声明api对象的kind是DaemonSet即可。我们写一个文件daemons...
2022-05-01 09:14:51 8720浏览 0点赞 0回复 0收藏
作者朱晋君来源君哥聊技术(ID:gh1f109b82d301)这是kubernete编排技术的第六篇,本文主要讲一下RBAC。之前讲过,kubernete所有API对象,都保存在etcd里。要访问和操作这些对象,一定会通过apiserver,因为apiserver可以做授权工作。kubernete发展至今,授权模式一共有如下6种,其中RBAC这种授权模式从1.8开始已经成了稳定功能,只要设置通过设置–authorizationmodeRBAC就可以启用。基于属性的访问控制ABAC基于角色的访...
2022-05-01 09:01:28 6366浏览 0点赞 0回复 0收藏
作者朱晋君来源君哥聊技术(ID:gh1f109b82d301)在前面文章中,我们讲RBAC的时候提到了secret,kubernetes中的secret对象用来保存一些敏感信息,比如密码、token、sshkey等。相比于这些敏感信息存放在pod声明或者容器镜像,secret对象保存的方式更加灵活和安全。创建secret创建secret方式有多种,下面介绍5种创建方式,无论哪种方式,都需要在定义yaml文件的时候,把kind定义为secret。1.双引号引用常量字符创apiVersion:v1kin...
2022-05-01 08:53:58 6708浏览 0点赞 0回复 0收藏
作者朱晋君来源君哥聊技术(ID:gh1f109b82d301)operator是kubernetes的一个扩展,它使用自定义资源(CustomResources)来管理应用和组件,并且遵循kubernetes的规范。它的核心就是自己编写控制器来实现自动化任务的效果,从而取代kubernetes自己的控制器和CRD资源。使用operator是实现自动化的需求大概有以下几类:按照需求部署一个应用获取或者恢复一个应用的状态应用代码升级,同时关联的数据库或者配置等一并升级发布一个服...
2022-05-01 08:48:08 7232浏览 0点赞 0回复 0收藏
作者朱晋君来源君哥聊技术(ID:gh1f109b82d301)minikube可以运行一个本地单节点的kubernetes集群,可以非常容易地在本地部署kubernetes。虽然只支持单节点的kubernetes集群,但是能支持很多kubernetes特性,包括:DNSNodePortsConfigMapsandSecretsDashboardsContainerRuntime:Docker,CRIO,andcontainerdEnablingCNI(ContainerNetworkInterface)IngressInstalla还没有安装好minikube,可以阅读我的上篇文章《centos安装kubect...
2022-05-01 08:39:02 9853浏览 0点赞 0回复 0收藏
作者朱晋君来源君哥聊技术(ID:gh1f109b82d301)有段时间没有鼓捣Kubernetes了,今天重置Kubernetes集群后,slave节点不能加入master节点了,我把问题和解决方案分享给大家。我本地的Kubernetes集群包括一个主节点和一个从节点,如下图:问题主节点启动后,从节点加入,命令如下:kubeadmjoin192.168.59.149:6443tokennf2hbm.h1d67djxey0jv90hdiscoverytokencacerthashsha256:12e71102d6f44c85c1717079f26c36a706cb11894c36af6...
2022-05-01 08:30:33 6721浏览 0点赞 0回复 0收藏
作者朱晋君来源君哥聊技术(ID:gh1f109b82d301)Nacos是阿里巴巴开源的微服务管理平台,可以帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。这篇文章主要来讲一下Nacos作为配置中心和注册中心的使用。1安装1.1linux下安装首先搭建一套单机版的Nacos集群。Nacos的安装有两种方式,一种是下载源码自己编译安装,另一种是下载编译后的压缩包解压后直接使用。本文我采用第二种方式。首先从官网下载安装包,下载...
2022-05-01 08:26:06 2.4w浏览 0点赞 0回复 0收藏
作者朱晋君来源君哥聊技术(ID:gh1f109b82d301)Nacos整合了注册中心和配置中心,使用起来非常方便,这篇文章主要介绍Nacos配置中心的使用。新建配置启动Nacos服务后,进入注册中心配置页面,如下图:点击上图中红框里面的加号,进入新建配置页面,如下图:上图DataID的完整格式如下:${prefix}${spring.profiles.active}.${fileextension}说明如下:prefix:默认是spring.application.name的值,可以通过配置项spring.cloud.n...
2022-05-01 08:18:48 1.3w浏览 0点赞 0回复 0收藏
作者朱晋君来源君哥聊技术(ID:gh1f109b82d301)大家好,我是君哥。最近在使用Nacos过程中遇到一个场景,配置的字符串可以解析成Map类型使用,有一个配置如下:map:test:key1:value1,key2:value2,key3:value3后来有同事建议Nacos可以直接配置成Map类型,后台使用JavaMap类型获取就可以。配置如下:map:test:key1:value1key2:value2key3:value3下面就来分享一下配置Map类型的过程中遇到的问题。1使用Bean方式获取配置1.1使用方...
2022-05-01 08:07:48 1.2w浏览 0点赞 0回复 0收藏