kubeadm 搭建 K8S集群
kubeadm是K8s官方推荐的快速搭建K8s集群的方法。
环境:
- Ubuntu 16.04
1 安装docker
Install Docker from Ubuntu’s repositories: apt-get update
apt-get install -y docker.io
or install Docker CE 17.03 from Docker’s repositories for Ubuntu or Debian: apt-get update
apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") $(lsb_release -cs) stable"
apt-get update && apt-get install -y docker-ce=$(apt-cache madison docker-ce | grep 17.03 | head - | awk '{print $3}')
2 安装 kubeadm, kubelet and kubectl
apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
(注意:
在cat <<EOF >abcd.txt命令 与下一个输入的EOF行之间的所有文本行都会被当做是stdin数据。
root@unbuntu:/# cat << EOF >abcd.txt
> uu
> hello world
> ii
> hah > EOF
)
3:
kubeadm init --ignore-preflight-errors 'Swap'
export KUBECONFIG=/etc/kubernetes/admin.conf
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
4: cd /etc/kubernetes/ 下面有各种配置文件

在Kubernetes中有一个DaemonSet类型的POD,这种类型的POD可以在某个节点上长期运行,这种类型的POD就是静态POD。
静态POD直接由某个节点上的kubelet程序进行管理,不需要api server介入,静态POD也不需要关联任何RC,完全是由kubelet程序来监控,当kubelet发现静态POD停止掉的时候,重新启动静态POD。
5: Installing a pod network
CNI:网络容器接口:
- 网络插件是独立的可执行文件,被上层的容器管理平台调用。网络插件只有两件事情要做:把容器加入到网络以及把容器从网络中删除。
- 调用插件的数据通过两种方式传递:环境变量和标准输入。
- kubernetes 使用了 CNI 网络插件之后 工作流程:
- kubernetes 先创建 pause 容器生成对应的 network namespace
- 调用网络 driver(因为配置的是 CNI,所以会调用 CNI 相关代码
- CNI driver 根据配置调用具体的 cni 插件
- cni 插件给 pause 容器配置正确的网络,pod 中其他的容器都是用 pause 的网络.
You MUST install a pod network add-on so that your pods can communicate with each other.
用如下命令创建一个CNI(这里使用的是flannel)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
kubectl get pods --all-namespaces. And once the kube-dns pod is up and running, you can continue by joining your nodes.

6: Master Isolation
By default, your cluster will not schedule pods on the master for security reasons,If you want to be able to schedule pods on the master, e.g. for a single-machine Kubernetes cluster for development, run:
kubectl taint nodes --all node-role.kubernetes.io/master-
This will remove the node-role.kubernetes.io/master taint from any nodes that have it, including the master node, meaning that the scheduler will then be able to schedule pods everywhere.
7 增加nodes
kubeadm 搭建 K8S集群的更多相关文章
- kubeadm搭建K8s集群及Pod初体验
基于Kubeadm 搭建K8s集群: 通过上一篇博客,我们已经基本了解了 k8s 的基本概念,也许你现在还是有些模糊,说真的我也是很模糊的.只有不断地操作去熟练,强化自己对他的认知,才能提升境界. 我 ...
- CentOS7 使用 kubeadm 搭建 k8s 集群
一 安装Docker-CE 前言 Docker 使用越来越多,安装也很简单,本次记录一下基本的步骤. Docker 目前支持 CentOS 7 及以后的版本,内核要求至少为 3.10. Docker ...
- 使用kubeadm搭建k8s集群
1.初始化集群信息 这里我才用了两台虚拟机来搭建集群,一个master,一个node 角色 IP地址 组件 master 192.168.126.137 docker, kubectl, kubead ...
- 使用Kubeadm创建k8s集群之部署规划(三十)
前言 上一篇我们讲述了使用Kubectl管理k8s集群,那么接下来,我们将使用kubeadm来启动k8s集群. 部署k8s集群存在一定的挑战,尤其是部署高可用的k8s集群更是颇为复杂(后续会讲).因此 ...
- kubeadm 搭建kubernetes集群环境
需求 kubeadm 搭建kubernetes集群环境 准备条件 三台VPS(本文使用阿里云香港 - centos7.7) 一台能SSH连接到VPS的本地电脑 (推荐连接工具xshell) 安装步骤 ...
- 如何处理 Kubeadm 搭建的集群证书过期问题
Kubeadm 证书过期处理 以下内容参考了如下链接:https://www.cnblogs.com/skymyyang/p/11093686.html 一.处理证书已过期的集群 使用 kubeadm ...
- kubeadm搭建kubernetes集群之三:加入node节点
在上一章<kubeadm搭建kubernetes集群之二:创建master节点>的实战中,我们把kubernetes的master节点搭建好了,本章我们将加入node节点,使得整个环境可以 ...
- kubeadm搭建kubernetes集群之二:创建master节点
在上一章kubeadm搭建kubernetes集群之一:构建标准化镜像中我们用VMware安装了一个CentOS7虚拟机,并且打算用这个虚拟机的镜像文件作为后续整个kubernetes的标准化镜像,现 ...
- 使用Kubeadm创建k8s集群之节点部署(三十一)
前言 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜像拉取问题)还提供了多种解决方案.不 ...
随机推荐
- Delphi 64与32位的差异
Delphi 64与32位的差异 最近,Delphi推出了64位预览版本, 我做为一个忠实的Delphier, 看到这消息后,第一时间学习,并写下这个做为以后的参考资料. 相同点: 在Delphi ...
- 用VirtualBox和vagrant在win7×64上搭建ruby on rails 开发环境
下载准备 1.vagrant 官方 WINDOWS Universal (32 and 64-bit) http://www.vagrantup.com/downloads.html 2.Virtu ...
- 使用documentFragment
function insertHtml(range, val) { var doc = range.doc, frag = doc.createDocumentFragment(); K('@' + ...
- 每天一个Linux命令(6)rmdir命令
rmdir命令用来删除空目录. 利用rmdir命令可以从一个目录中删除一个或多个空的子目录.该命令从一个目录中删除一个或多个子目录,其中dirname表示目录名.如果dirname中没有指定 ...
- 双向链表(C++实现)
////////////////////////////////////////////////////////////////////////////////////// /////// 这里建立两 ...
- shell 比较运算符
运算符 描述 示例 文件比较运算符 -e filename 如果 filename 存在,则为真(不管文件或目录) [ -e /var/log/syslog ] -d filename 如果 fi ...
- Oracle的select检索数据
--Select语法 select [distinct | All] select_list from table_list [where_clause] [group_by_clause] [Hav ...
- C#中string.Empty、""和null 之间的区别
1.C#中string.Empty.""和null 之间的区别 (http://blog.csdn.net/henulwj/article/details/7830615)
- Mybatis_笔记_01_逆向工程
通过Mybatis逆向工程,可以从数据库中的表自动生成pojo.mapper映射文件和mapper接口 此处暂存怎么使用逆向工程,原理以后再探讨 工程结构 要修改的地方:generatorConfig ...
- Java--异常与字符串
1.处理异常 try-catch以及try-catch-finally try{ //一些会抛出的异常 }catch(Exception e){ //处理该异常的代码块 }catch(Exceptio ...