tnblog
首页
视频
资源
登录

运用Kubeadm达到多节点集群

6221人阅读 2020/3/20 11:01 总访问:3475840 评论:0 收藏:0 手机
分类: 容器编排

一.初始化主节点

环境:

搭建一个master主节点和一个node1的子节点


master


node1


通过已知令牌,进行搭建主节点(token可以自定义,或者去掉这一项,她会自动生成一个新的!)

  1. kubeadm init --token=102952.1a7dd4cc8d1f4cc5 --kubernetes-version $(kubeadm version -o short)

命令执行完成后


复制证书到 $HOME 目录下面,然后设置CLI的环境变量

  1. sudo cp /etc/kubernetes/admin.conf $HOME/


改变用户ID

  1. sudo chown $(id -u):$(id -g) $HOME/admin.conf


添加环境变量

  1. export KUBECONFIG=$HOME/admin.conf


admin.conf有相关端口以及认证的东西



部署容器网络接口(CNI)


接下来我们可以通过WeaveWorks(Weave Net)查看部署定义

其他第三方更多插件: https://kubernetes.io/docs/concepts/cluster-administration/addons/#networking-and-network-policy

  1. cat /opt/weave-kube

内容如下:

  1. apiVersion: v1
  2. kind: List
  3. items:
  4.   - apiVersion: v1
  5.     kind: ServiceAccount
  6.     metadata:
  7.       name: weave-net
  8.       labels:
  9.         name: weave-net
  10.       namespace: kube-system
  11.   - apiVersion: rbac.authorization.k8s.io/v1beta1
  12.     kind: ClusterRole
  13.     metadata:
  14.       name: weave-net
  15.       labels:
  16.         name: weave-net
  17.     rules:
  18.       - apiGroups:
  19.           - ''
  20.         resources:
  21.           - pods
  22.           - namespaces
  23.           - nodes
  24.         verbs:
  25.           - get
  26.           - list
  27.           - watch
  28.       - apiGroups:
  29.           - extensions
  30.         resources:
  31.           - networkpolicies
  32.         verbs:
  33.           - get
  34.           - list
  35.           - watch
  36.       - apiGroups:
  37.           - 'networking.k8s.io'
  38.         resources:
  39.           - networkpolicies
  40.         verbs:
  41.           - get
  42.           - list
  43.           - watch
  44.       - apiGroups:
  45.         - ''
  46.         resources:
  47.         - nodes/status
  48.         verbs:
  49.         - patch
  50.         - update
  51.   - apiVersion: rbac.authorization.k8s.io/v1beta1
  52.     kind: ClusterRoleBinding
  53.     metadata:
  54.       name: weave-net
  55.       labels:
  56.         name: weave-net
  57.     roleRef:
  58.       kind: ClusterRole
  59.       name: weave-net
  60.       apiGroup: rbac.authorization.k8s.io
  61.     subjects:
  62.       - kind: ServiceAccount
  63.         name: weave-net
  64.         namespace: kube-system
  65.   - apiVersion: rbac.authorization.k8s.io/v1beta1
  66.     kind: Role
  67.     metadata:
  68.       name: weave-net
  69.       namespace: kube-system
  70.       labels:
  71.         name: weave-net
  72.     rules:
  73.       - apiGroups:
  74.           - ''
  75.         resources:
  76.           - configmaps
  77.         resourceNames:
  78.           - weave-net
  79.         verbs:
  80.           - get
  81.           - update
  82.       - apiGroups:
  83.           - ''
  84.         resources:
  85.           - configmaps
  86.         verbs:
  87.           - create
  88.   - apiVersion: rbac.authorization.k8s.io/v1beta1
  89.     kind: RoleBinding
  90.     metadata:
  91.       name: weave-net
  92.       namespace: kube-system
  93.       labels:
  94.         name: weave-net
  95.     roleRef:
  96.       kind: Role
  97.       name: weave-net
  98.       apiGroup: rbac.authorization.k8s.io
  99.     subjects:
  100.       - kind: ServiceAccount
  101.         name: weave-net
  102.         namespace: kube-system
  103.   - apiVersion: extensions/v1beta1
  104.     kind: DaemonSet
  105.     metadata:
  106.       name: weave-net
  107.       labels:
  108.         name: weave-net
  109.       namespace: kube-system
  110.     spec:
  111.       # Wait 5 seconds to let pod connect before rolling next pod
  112.       minReadySeconds: 5
  113.       template:
  114.         metadata:
  115.           labels:
  116.             name: weave-net
  117.         spec:
  118.           containers:
  119.             - name: weave
  120.               command:
  121.                 - /home/weave/launch.sh
  122.               env:
  123.                 - name: HOSTNAME
  124.                   valueFrom:
  125.                     fieldRef:
  126.                       apiVersion: v1
  127.                       fieldPath: spec.nodeName
  128.               image: 'weaveworks/weave-kube:2.5.1'
  129.               imagePullPolicy: IfNotPresent
  130.               readinessProbe:
  131.                 httpGet:
  132.                   host: 127.0.0.1
  133.                   path: /status
  134.                   port: 6784
  135.               resources:
  136.                 requests:
  137.                   cpu: 10m
  138.               securityContext:
  139.                 privileged: true
  140.               volumeMounts:
  141.                 - name: weavedb
  142.                   mountPath: /weavedb
  143.                 - name: cni-bin
  144.                   mountPath: /host/opt
  145.                 - name: cni-bin2
  146.                   mountPath: /host/home
  147.                 - name: cni-conf
  148.                   mountPath: /host/etc
  149.                 - name: dbus
  150.                   mountPath: /host/var/lib/dbus
  151.                 - name: lib-modules
  152.                   mountPath: /lib/modules
  153.                 - name: xtables-lock
  154.                   mountPath: /run/xtables.lock
  155.                   readOnly: false
  156.             - name: weave-npc
  157.               env:
  158.                 - name: HOSTNAME
  159.                   valueFrom:
  160.                     fieldRef:
  161.                       apiVersion: v1
  162.                       fieldPath: spec.nodeName
  163.               image: 'weaveworks/weave-npc:2.5.1'
  164.               imagePullPolicy: IfNotPresent
  165. #npc-args
  166.               resources:
  167.                 requests:
  168.                   cpu: 10m
  169.               securityContext:
  170.                 privileged: true
  171.               volumeMounts:
  172.                 - name: xtables-lock
  173.                   mountPath: /run/xtables.lock
  174.                   readOnly: false
  175.           hostNetwork: true
  176.           hostPID: true
  177.           restartPolicy: Always
  178.           securityContext:
  179.             seLinuxOptions: {}
  180.           serviceAccountName: weave-net
  181.           tolerations:
  182.             - effect: NoSchedule
  183.               operator: Exists
  184.           volumes:
  185.             - name: weavedb
  186.               hostPath:
  187.                 path: /var/lib/weave
  188.             - name: cni-bin
  189.               hostPath:
  190.                 path: /opt
  191.             - name: cni-bin2
  192.               hostPath:
  193.                 path: /home
  194.             - name: cni-conf
  195.               hostPath:
  196.                 path: /etc
  197.             - name: dbus
  198.               hostPath:
  199.                 path: /var/lib/dbus
  200.             - name: lib-modules
  201.               hostPath:
  202.                 path: /lib/modules
  203.             - name: xtables-lock
  204.               hostPath:
  205.                 path: /run/xtables.lock
  206.                 type: FileOrCreate
  207.       updateStrategy:
  208.         type: RollingUpdate


部署Weave

  1. kubectl apply -f /opt/weave-kube


通过刚刚的 yaml 文件可以看出它所在的命名空间为 kube-system

  1. kubectl get pod -n kube-system



在添加子节点到Node中


查看令牌集合

  1. kubeadm token list


子节点(node1)执行命令添加到主节点(master)中

  1. kubeadm join --discovery-token-unsafe-skip-ca-verification --token=102952.1a7dd4cc8d1f4cc5 172.17.0.21:6443


【注意】--discovery-token-unsafe-skip-ca-verification 标签用于绕过发现令牌验证!在生产中请使用 kubeadm init 命令...


回到master节点中查看节点

  1. kubectl get nodes


不难发现这个时候 node01 已经链接上了 master



这时我们来尝试以下部署一下Pod试试


在master中创建一个 nginx

  1. kubectl create deployment httpn --image=nginx:1.8



查看一下 Pod 

  1. kubectl get pods


再来Node1节点中看看容器的位置

  1. docker ps | grep nginx


这样一个简单的部署就部署好了








欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

css定位的简单运用

父容器使用相对定位position: relative子容器使用绝对定位position: relative这样就可以子容器相对父容器定位了,可以写一...

一点flex布局的运用

水平分割:html:<divclass="flex-container"> <divclass="flex-item">flexitem1</div...

c 锁的运用

锁的一般分类:乐观锁、悲观锁、共享锁、排它锁、互斥锁锁的对象为什么要是私有的只读的因为防止被修改C#中Monitor和Lock以...

Expression表达式树一些运用

、Expression构建有参数有返回值的方法如下:Expression动态构建的写法:

net core webapi运用自定义json格式

接上一篇net core api json相关,全局配置,时间格式化,首字母小写等:http://www.tnblog.net/aojiancc2/article/details/2...

.net json序列化匿名类型jobject的运用

在反序列化的时候我们可以不用每次都添加一次实体,如果只是简单临时的用一下可以使用jobject即可解析方法一般有两种方法一...

grpc 在vs中的运用与proto同步

思 考 问 题 grpc 服务器当对 proto 文件进行修改时每次都去 Copy 到本地 Client 是比较麻烦的,有没有快捷的方法解决?Gr...

.netcore运用IServiceScope实现全局服务持续化注入

IServiceScope实现全局服务持续化注入[TOC] 创建 GloablePullWorkFlow.cs 类 public class GloablePullWorkFlow { ...

EF Group Join简单运用

EF Group Join其实返回的就是一对多的情况,通常用来做有查看详情的,比如我们来实现一个查询学生与考试分数的例子,因为一...

.net core 简单配置框架运用

Configuration 配置框架:让服务无缝适应各种环境[TOC] 核心组件包 Microsoft.Extensions.Configuration.Abstraction...

Weave Scope 的运用

Weave Scope 的运用[TOC] Weave Scope 的介绍 简介 Weave Scope 用于监控、可视化和管理 Docker 以及 Kubernetes...

Elasticsearch 倒排索引(运用Analyzer进行分词)

Elasticsearch 倒排索引[TOC] 正排与倒排索引 我们以一本书为例子,一本书的目录为正排索引,它将排列整本书的主要大纲...

.netcore 3.1 运用 Json Patch 时的常见问题

.netcore 3.1 运用Json Patch[TOC] JSON Patch是一种使用API显式更新文档的方法。它本身是一种契约,用于描述如何修改文...

RabbitMq 命令行运用

RabbitMq 命令行运用[TOC] RabbitMQ是一个开源的多协议消息传递代理。 描述 rabbitmqctl是用于管理RabbitMQ服务器节点...

.netcore3.1 RabbitMq 简单运用与相关方法的介绍

.netcore3.1 RabbitMq 简单运用与相关方法的介绍[TOC] 在这里我将使用简单的生产—->加入队列—->消费,做一个简...
这一世以无限游戏为使命!
排名
2
文章
636
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术