集群环境容器部署的困境

怎么分配这 10 台服务器?2 万台呢?

容器编排工具

  • docker compose,单机容器编排工具
  • docker swam 跨主机的,集群容器编排工具
  • kubernetes,google 提供的容器编排工具,非常成熟,底层基于 docker

kubernetes 的职责

K8s的基本概念

下图由 3 个宿主机形成一个集群。一台 master,两台 node,node可以是独立的物理机,也可以是虚拟机。
每一个节点中,都有Pod,是k8s控制的最小单元。

label 相当于 pod 的别名
replication controller 用来控制 pod 的数量
kubelet 用来提供k8s相关命令的执行
kebe-proxy 是代理,提供跨容器(跨主机)的通信

Pod(豆荚)

Pause 容器

容器之间共享命名空间,比如使用 localhost:port 就可以互相访问

国内安装k8s的四种途径

环境准备


实际上的主机规划:

  • 10.0.0.131 node01 -> master
  • 10.0.0.132 node02 -> node
  • 10.0.0.133 node03 -> node

1、设置时区

timedatectl set-timezone Asia/Shanghai

2、设置 ip 与主机名称对应

vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain610.0.0.131 node01
10.0.0.132 node02
10.0.0.133 node03
10.0.0.134 node04 # 这一台是之前搭 zk 的时候用的,不用管它

3、关闭防火墙、关闭selinux(生产环境不要关闭)

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl disable firewalld
systemctl stop firewalld

4、安装kubeadm快速部署工具

1. 将镜像包k8s-install上传至服务器每个节点,可以使用scp命令拷贝到另外两台机器上
我们通过离线安装的方式

mkdir /usr/local/k8s-install
cd /usr/local/k8s-install

XFTP上传安装文件

2. 按每个Centos上安装Docker

tar -zxvf docker-ce-18.09.tar.gz
cd docker
yum localinstall -y *.rpm
systemctl start docker # 启动
systemctl enable docker # 设置自启动

3. 确保从cgroups均在同一个从groupfs
#cgroups是control groups的简称,它为Linux内核提供了一种任务聚集和划分的机制,通过一组参数集合将一些任务组织成一个或多个子系统。
#cgroups是实现IaaS虚拟化(kvm、lxc等),PaaS容器沙箱(Docker等)的资源管理控制部分的底层基础。
#子系统是根据cgroup对任务的划分功能将任务按照一种指定的属性划分成的一个组,主要用来实现资源的控制。
#在cgroup中,划分成的任务组以层次结构的形式组织,多个子系统形成一个数据结构中类似多根树的结构。cgroup包含了多个孤立的子系统,每一个子系统代表单一的资源

docker info | grep cgroup

如果输出是Cgroup Driver: cgroupfs,则不需要修改。如果不是groupfs,执行下列语句

cat << EOF > /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=cgroupfs"]
}
EOF
systemctl daemon-reload && systemctl restart docker

4. 安装kubeadm
kubeadm是集群部署工具

cd /usr/local/k8s-install/kubernetes-1.14
tar -zxvf kube114-rpm.tar.gz
cd kube114-rpm
yum localinstall -y *.rpm

5. 关闭交换区
交换区类似于win上的虚拟内存,当内存不够的时候,用磁盘代替内存。
在k8s中,如果使用了交换区,可能会造成一些预料之外的bug,所以我们选择关闭它。

swapoff -a # 关闭交换区
vi /etc/fstab # 将 swap一行注释掉,然后保存,这样交换区就被永久的关闭了

6. 配置网桥
直接将下面这段所有的,复制到bash里面执行即可

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

7. 最后一步,通过镜像安装k8s

cd /usr/local/k8s-install/kubernetes-1.14
docker load -i k8s-114-images.tar.gz # 加载k8s的本地化镜像,就不用从远程仓库下载了
docker load -i flannel-dashboard.tar.gz # 提供集群可视化监控的仪表盘

利用 Kubeadm 构建集群

1. master 主服务器配置

kubeadm init --kubernetes-version=v1.14.1 --pod-network-cidr=10.244.0.0/16

--pod-network-cidr表示生成的新的pod虚拟ip的范围边界

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

admin.conf 是关于集群的核心配置文件,打开之后看到大概是这样的:

apiVersion: v1
clusters:
- cluster:certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJd01EY3hNakF5TkRZMU5Wb1hEVE13TURjeE1EQXlORFkxTlZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBSmRHCk5qK0YxUHN4YnVVVXJSZm9RSGpzRmtQcUExbGFibE9xOUlhT3JBd1VUNEdEcmgwNnRET1o1a3pvOG9iLzJodDYKMWZXRnJSNkh4L05VY3FBTFNPYnV5VmtVWXAyc1NqQ1RjemdHY0JXOHh4YVRMK2I0MFFVNkdFdnc0Syt1L29mWQpPck5DalpaZ0YzRFdWWHZXbHNDRXc3S1phY1pNMFU2cC96VEZPdUVpTjUxc2tETlFGU0RSODRTV0p6M2wyM2phCmFnZWhTWEZnNWhubGJqV0hQUUZOMUlDMW5KdWZldDZDOGpjR1JOZy9JMEN3SmViYzdnalRCbHpTdXhmaXZ3eFkKMEpyUGNMVDZnTG5ka2ZncWJVdTJ2ei83ZWE5UkdLRFp5S0VZZUt0N0EvV0MvOHpyaEkwUFMwakpVMUF1V2Q0LwplY2xIYk1DaXp2a1BCYU1Gb1NNQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFBWk1iQzdnMlpLWnJSRWpvQ3J6VDZlVkNRYXMKRXQ2dHN4YlBWTU01VVdMeHpCWDZvM3QxOFVweW9CcVJaZHh5dUdLU05xKyt2WmpWeGFRejVOMG1JZFpPRHdLUApidzRCNCsrK21meEx1TjJ5RXZtckxPQ2dyZVQxZ2QzUDVFM3FMVEoyNFBLUm1TTFE2ZlAzTzk2UnZEMC9MWFVrCmpkbWJEenhzTEtwMUF2NzdtTSs4S041cEIrTGhpblVkNDlCWVI5VTVSOEZSMEhKWkhVNTdVUGIvN1hCUjl1NWEKbFZHdkpuSDdDUmV0a2RZKy9TWjhSa00zM1NHVTV6TDFrcFJ3ZVVjRlVuTWplazVLbEk1ZkNrWEhNTEI4T2pLRwpjVTVwQkdGSGkrTml0VDFoZmk1V2hkUUxLWVY0Vy9qbDlPckFXWncyZUthczhzQkU0S0JObHM0dVFvZz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=server: https://10.0.0.131:6443name: kubernetes
contexts:
- context:cluster: kubernetesuser: kubernetes-adminname: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-adminuser:client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4akNDQWRxZ0F3SUJBZ0lJT3cwYm9PankwQWt3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TURBM01USXdNalEyTlRWYUZ3MHlNVEEzTVRJd01qUTNNREZhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTBldElGSmhuQzJWNVBRSkEKK2FMSytZeGpmcEFkai9Ma1V3WmtTTzIyQU9CY240TXBTTk9oNS8wWVZQazNNcEpGQUpoa0lxci9zdXlLM0NsdApJak5MR05BRkJXcXBxYk80YnNYZ1I5TTVvRytQQVBiWVpLemZrYnM0Y09hSGJ0bFordUUxQTN5Tm5vdTIyWGhaClRCTGF5akNmNnpDNGMzd3E1ZkpHbmRyb1BtSmtDcmszY1dCTnh4OWJkTTBoYXJ2UVhySU9oRWYxV3ZhMlpVeWIKTzEwN3VvZDQrRGxScGV6L015QlhIcDQzeUlCSWJ3L0VlcDNEVjBpQ3dQS2x1WjVGYzhXY1ZVMHRyVDRzZDM5NQpZVkMweVl0Rm5vLzdkNmhsNlJ0QU5UaHhWczlGeU5abTlnNWJUUUxSRjQvUno5d3I3Y3JiS2lOeUMwZkhsWGZLCkgwQ2xvUUlEQVFBQm95Y3dKVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFHM1ljcmNrRDh1ZDRuVHNIOERtelZia2xjZGVzZXcrMkpOWQpINUJuNGFZWDIyTng4L2xpSVl3d1M3QkJML3dxYVhtNE1KNjJFL0liNVFDeDRCSWxJOGhSYU5LVlpiblJnS29SCmZJNy9EWmFVdHRsaFI5WlBpcUhlL29tRW54aU9CNWVnTTc3MXU4d01zM0laVXcveWE3K1hIQlMwa0xhb3dpbnUKWG4rWkxBYytHaUd5K3N4VUVBbS9iUVUxSDJYU0xSY3NJbHI5MXdvNXVpS2JHOUgvUStiVVczUmVtTG40bDFjOApGSE1CUjBkbDBwaHphbjhNS3Jtd0RKdkROd1dIOElVNWtJQTZxaGY4N3NGeDFpRXBWTzQ4clJqa052THlsQ2RHCnloTk5pWkZPQkhmbVlyZVRGWG53STFNOWI4MHZHWHV4YWNYc2Z4RWl4MWJpaHVFL3JPQT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBMGV0SUZKaG5DMlY1UFFKQSthTEsrWXhqZnBBZGovTGtVd1prU08yMkFPQmNuNE1wClNOT2g1LzBZVlBrM01wSkZBSmhrSXFyL3N1eUszQ2x0SWpOTEdOQUZCV3FwcWJPNGJzWGdSOU01b0crUEFQYlkKWkt6ZmticzRjT2FIYnRsWit1RTFBM3lObm91MjJYaFpUQkxheWpDZjZ6QzRjM3dxNWZKR25kcm9QbUprQ3JrMwpjV0JOeHg5YmRNMGhhcnZRWHJJT2hFZjFXdmEyWlV5Yk8xMDd1b2Q0K0RsUnBlei9NeUJYSHA0M3lJQklidy9FCmVwM0RWMGlDd1BLbHVaNUZjOFdjVlUwdHJUNHNkMzk1WVZDMHlZdEZuby83ZDZobDZSdEFOVGh4VnM5RnlOWm0KOWc1YlRRTFJGNC9Sejl3cjdjcmJLaU55QzBmSGxYZktIMENsb1FJREFRQUJBb0lCQUI3cWUrOHNrdUNHelZoQwo0TGJqVnVseDE2Vm9MREpySDExcTc1SWVFRlFJdHh0M0FibU1FYWhOQ2l4Wmw5dUcxMHJESnR4RU91eHJFZmhpCjBZUGI4Zzl4YzR2Y3JhZ2tvK0VNbTM5NGlHQXNqZThpYTdSSUVaVXc4WnNQR0pzbXY2M0hSVHVDT0lsRkltVGMKNktuZmpRR0NMOHMvbmFyRWVyenE5YU9CL2ZwUjF0SEtXcnA5ZktTenNYLytkb28rdkw3UVAzZy85Y1RuRFlqVgpiTTlkWmcwaFd1Ny92Uit3cjk5QVhkQXhrY0VUN0ZBR0RaU0ZrTFBYVGM5ZjVYK2xkTGZZemxUd3Q1aU42UUg2CmR0bmtaSmNRdmtYK0hBcGxOZGluZWhXM3ppWklIZXhnZ0twSVhDTTd5bUg2bWkwUFhtblQrVVFDMXVKVVVvcjgKbVowQVJBRUNnWUVBMWdXdXExbDVmaDlYVUd0WkpwWktQZ0JseW1INlJnMUFScFdnbU43Q3g3cDRwNk5HU2s5cgpaRUVHYXB5QlNEVkwzNndwaWgxRENxL1hnZyswdHlHRndwMVJsL21MYXlES3hPb3Y2VEx3OGJ2enhIbmZ6QnZ5CjZkTDBQdmdUMnlEMGtCWno4WGZIanlmV0JSUnN5UkVMTjFiMVhnZkJvTzFienNkV1NUTzVnL0VDZ1lFQSt4ZVQKZjQxVytTOTIwd2RWQ2pIRlRod3RIdUhydFZQelJOalN5NWpwUGU2c3JrL2tZbnh3YmhJSFZGdUREUCtXRlVTeApkUzFzWi95aUZGcTdUMEdOYWpDWFNiSS9RS2lHZGFwSnRNWC81Ujk4YWwzM3ZrQXlxcmV5Qk5CMFh4ZmdVOExECnQ3b1YweWgzT3dzc2VPVEJsZ2VMNG84RWZEWllEbmRlenhFL0xMRUNnWUVBcFRrcHlUcC80bkFMbGhmcGNUS2gKQ2hDQWhLYnk4VldWZzJoTDNQaEw0cWtBTUZxS0R5QVV4Z2ExRDJUWElZbVRrNDl6V2g2US9SVVhDRjlib2UwTgpPRnIrL0pZM25YSnBWMjk3b1Vva1hGby9MRFR5SXI2STN4NXVWSlpycmNWWlNFc3RJd0xYV3Bya1RIT2lMKzhxCmU0UjBWQzBrdkRuQm9IYWZGRkFNTGVFQ2dZRUEza2JncStuVE5JUndEQ0JSaDlUSGRYNDc4enJNRHBsaW9XL1EKSzZ3UnptR2JQRFE5V1hJUGxXRWdXKzBtOWpyTUFjZnQwRzJGcWdoYTh1bmZKeXBBcGVDZURQOWVQejd3eVBrVwpocEZCRnZQb2o4RGZyK3ZrN252dmU1T05jU0VSMVJSMWJnK3RnbUF3TEhTWHllMjM4Ymg4ZlBOZVpSYzJuSmZQCnRqN3VUZ0VDZ1lBWU5PWHJWVmFROGlES3M5MmRRalBTZEhSeERFcDI4RFVRL1NZd2VlazhQbWRSRWR5M2NyTUsKTkEycEVNSDNhU05oYXE4T3Q3MndtV0oydXJ1OTNaT05CMDVDSXA0MjExZ1NoY0NQQys0QUo3OThKcWVUVXgxYwp4a3RIajJjR3FEOGIyK0NqRnErZWtVendEYUdkeUNsdVZIZEdLMG1sZTRQQVU3R25IVzhPeWc9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=

查看存在问题的pod

kubectl get nodes

设置全局变量

kubectl get pod --all-namespaces

安装flannel网络组件,是用来pod之间进行通信的协议

kubectl create -f kube-flannel.yml

2. 加入NODE节点
在另外两台node上运行master上面生成的这句:

kubeadm join 10.0.0.131:6443 --token hcwqf2.8ybdi9a7zsetfgim \--discovery-token-ca-cert-hash sha256:744ab2e31d23cb337a31a561b8a8c33da51914266081628555869f16345f02ea

再查看,查看就能看到两个节点了

kubectl get nodes


如果忘记这句,
在 master 上执行kubeadm token list 查看 ,在两个node上运行

kubeadm join 192.168.163.132:6443 --token aoeout.9k0ybvrfy09q1jf6 --discovery-token-unsafe-skip-ca-verification

然后,我们就可以自动的安装容器、发布应用了

3. Master 开启仪表盘
读取配置文件,并按照配置文件的策略,对资源进行配置。

kubectl apply -f kubernetes-dashboard.yaml
kubectl apply -f admin-role.yaml   # 设置webui的角色
kubectl apply -f kubernetes-dashboard-admin.rbac.yaml    # 控制角色的访问权限
kubectl -n kube-system get svc    # 获取系统命名空间下的服务
http://10.0.0.131:32000访问

访问图形界面的ip是http://10.0.0.131:32000,并不是下图中的10.108.99.147,有待研究…


重启服务器之后,k8s 服务该怎么恢复呢?


kubernetes入门到精通(一):内容编排与k8s介绍,集群构建教程,如何开启dashboard相关推荐

  1. kubernetes入门到精通(二):k8s部署Tomcat集群,基于NTFS协议的文件集群共享,Service提供负载均衡,端口转发工具Rinetd配置外部访问

    首先,配置 Docker 镜像加速服务 登录阿里云账号,进入控制台 -> 容器镜像服务 (不需要有阿里云的服务器,只要注册账号即可) 在两台 node 节点上配置好阿里云的镜像加速. 重启一下 ...

  2. k8s redis集群_K8S系列二:实战入门

    写在前面 本文是K8S系列第二篇,主要面向对K8S新手同学,阅读本文需要读者对K8S的基本概念,比如Pod.Deployment.Service.Namespace等基础概念有所了解.尚且不熟悉的同学 ...

  3. 容器编排技术 -- 使用Minikube集群

    容器编排技术 --  使用Minikube集群 0.1 目标 0.2 Kubernetes集群 1 集群结构图 目标 了解Kubernetes集群是什么. 了解Minikube是什么. 使用在线终端启 ...

  4. 使用国内的镜像源搭建 kubernetes(k8s)集群

    概述 老话说的好:努力学习,提高自己,让自己知道的比别人多,了解的别人多. 言归正传,之前我们聊了 Docker,随着业务的不断扩大,Docker 容器不断增多,物理机也不断增多,此时我们会发现,登录 ...

  5. centos7 下google Kubernetes(k8s)集群安装部署

    centos7 下google Kubernetes(k8s)集群安装部署 简介 安装环境 安装前准备 ECTD集群配置 命令含义: master节点配置 1.安装kubernetes和etcd 2. ...

  6. 搭建Kubernetes(k8s)集群(cka考试环境)

    搭建Kubernetes(k8s)集群 基础介绍 containerd简介 Docker vs containerd K8S为什么要放弃使用Docker作为容器运行时,而使用containerd呢? ...

  7. Kubernetes(K8s)集群安装部署

    Kubernetes(K8s)集群安装 Kubernetes(K8s)集群安装 1 .基本环境配置 1.1.Kubernetes集群规划 1.2.基础环境配置(所有节点) 1.2.1.Host文件修改 ...

  8. Revit二次开发从入门到精通学习之路, (含Revit二次开发教程下载)

    Revit二次开发从入门到精通学习之路 Autodesk Joe Ye叶雄进 2. 18 2014    yexiongjin@hotmail.com Revit在国内的应用越来越广泛, Revit ...

  9. 数独游戏技巧从入门到精通_中国茶艺技巧:500集从入门到精通教程,视频+素材+笔记...

    中国茶艺技巧:500集从入门到精通教程,视频+素材+笔记 学习茶艺可以增加生活中的兴趣爱好,多一门技能,多一项生存能力,将传统文化进行一种简单快乐的传播.以生活为中心,将喜爱为半径,沏一杯美好生活茶. ...

最新文章

  1. Linux下 su命令与su - 命令的区别
  2. 移动互联网教育领域或将出现新的风口?
  3. golang协程特点
  4. Python学习笔记:接下来
  5. 深度学习(02)-- ANN学习
  6. 在虚拟机中是无法运行CarlaUE.sh文件的
  7. avs3 ts格式封装 标准_超能课堂(204):多媒体容器格式变迁录
  8. Julia : 终于1.0了,这一天来得有点久
  9. 用python在大麦网抢票_大麦网抢票工具系列(一)
  10. TOF相机(Time of Fight Camera)(维基百科全翻译版)
  11. 计算机数制与转换教案,《数制转换》教案
  12. idea报错 Result Maps collection does not contain value for com.
  13. 小猿圈分享适合零基础学python的书籍
  14. 快速删除oracle中重复数据,效率高于直接删除数倍.
  15. NLP——文本分类模型(HAN)(三)
  16. IOC/DI与AOP概念的理解
  17. 基于SSM实现的云商城购物系统
  18. 金字塔原理(麦肯锡) 要点汇总
  19. tanner2019安装教程
  20. 关于中英文语料的获取途径总结

热门文章

  1. CodeForces - 1285D Dr. Evil Underscores(记忆化搜索+字典树)
  2. php 导出csv设置列宽度,php数据库导出excel表格数据-php从数据库导出csv格式的Excel表格是,字段本身就......
  3. 【网络编程】之十三、ping程序实现
  4. Android端打开HttpDns的正确姿势
  5. 数据结构与算法 | 计数排序
  6. C语言程序设计 | 操作符介绍与使用方法
  7. QUIC报文格式详解
  8. Kafka最全面试题整理|划重点要考
  9. RabbitMQ之队列优先级
  10. 蚂蚁集团万级规模 k8s 集群 etcd 高可用建设之路