1. 简介

2. 环境

2.1. OS:  CentOS Linux release 7.5.1804 (Core)

2.2. Ansible: 2.6.2-1.el7

2.3. docker:

2.4. kubernetes:

2.5.

3. 准备

3.1. ansible,节点太多了,安装一个ansible统一执行命令吧

yum -y install ansible

  

看一下配置文件

~]# cat /etc/ansible/hosts
[all]
service ansible_host=10.210.55.220 hostname=server
master1 ansible_host=10.210.55.221 hostname=master1
master2 ansible_host=10.210.55.222 hostname=master2
master3 ansible_host=10.210.55.223 hostname=master3
node1 ansible_host=10.210.55.226 hostname=node1
node2 ansible_host=10.210.55.227 hostname=node2
node3 ansible_host=10.210.55.228 hostname=node3
node4 ansible_host=10.210.55.229 hostname=node4 [master]
master1
master2
master3 [etcd]
master1
master2
master3 [worker]
node1
node2
node3
node4

  

看一下hosts文件

~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.210.55.220 service service.eric.com
10.210.55.221 master1 master1.eric.com
10.210.55.222 master2 master2.eric.com
10.210.55.223 master3 master3.eric.com
10.210.55.226 node1 node1.eric.com
10.210.55.227 node2 node2.eric.com
10.210.55.228 node3 node3.eric.com
10.210.55.229 node4 node4.eric.com

  

最后配置一下root账户SSH免密登录,试一下

~]# ansible all -m command -a hostname
service | SUCCESS | rc=0 >>
centos-0 node4 | SUCCESS | rc=0 >>
centos-node-4 node3 | SUCCESS | rc=0 >>
centos-node-3 node2 | SUCCESS | rc=0 >>
centos-node-2 node1 | SUCCESS | rc=0 >>
centos-node-1 master2 | SUCCESS | rc=0 >>
centos-master-2 master3 | SUCCESS | rc=0 >>
centos-master-3 master1 | SUCCESS | rc=0 >>
centos-master-1

  

3.2. 配置yum源,我直接使用的是阿里的源

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

rpm --import https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

rpm --import https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

#kubernetes repo需要手写
]# cat kubernetes.repo
[kubernetes]
name = kubernetes@aliyun
baseurl = https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck = 1
gpgkey = https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enabled = 1 #验证一下
]# yum repolist
]# yum makecache

  

3.3. 安装基础的包

#或者使用ansible all -m yum -a "state=present name=docker-ce,kubectl,kubelet,kubeadm"

yum install -y docker-ce kubectl kubelet kubeadm

  

3.4. (optional)配置镜像下载的代理

]# cat !$
cat /usr/lib/systemd/system/docker.service ...
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
Environment="HTTPS_PROXY=http://www.ik8s.io:10080/"
Environment="NO_PROXY=127.0.0.0/8,10.210.55.0/24"
... ]# systemctl daemon-reload

  

3.5. 配置master内核参数,这两个参数是bridge的参数,需要手工创建或者让docker启动的时候创建才会出现,千万不要做!做了会导致kubedns无法启动

~]# systemctl start docker
~]# echo "net.bridge.bridge-nf-call-iptables=1" >> /etc/sysctl.conf
~]# echo "net.bridge.bridge-nf-call-ip6tables=1" >> /etc/sysctl.conf
~]# sysctl -p

  

3.6. 配置kubelet和docker开机启动,配置交给kubeadm来做

~]# systemctl enable docker
~]# systemctl enable kubelet

  

3.7. (optional)禁用swap,新版的k8s可以使用ignore选项来忽略swap

~]# cat /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"

  

4. 使用kubeadm初始化集群master节点

# 也可以指定参数,不指定参数都是默认,最好指定一下版本,默认是装最高版,有可能会出现兼容问题
kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap

  

成功之后记得执行如下步骤,否则无法与kube-api通信,在生产系统中最好使用普通用户,我这里就直接使用root用户了

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config # 同时必须安装网络附件,否则master会处于notready状态
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/ #在node节点执行下面的操作就可以加入master了
You can now join any number of machines by running the following on each node
as root: kubeadm join 10.210.55.223:6443 --token xd0696.i3kegveg7g1z3i09 --discovery-token-ca-cert-hash sha256:9498a3f73791b9b7c228cd468fe7332581e703771de0da68811a3391c717b953

  

此时master节点状态还是notready,因为没有网络,我们需要安装flannel

]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
centos-master-3 NotReady master 16m v1.11.2

  

参考https://github.com/coreos/flannel

~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

  

然后系统会拉取镜像,可能需要一段时间

~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
k8s.gcr.io/kube-proxy-amd64 v1.11.1 d5c25579d0ff 4 weeks ago 97.8MB
k8s.gcr.io/kube-apiserver-amd64 v1.11.1 816332bd9d11 4 weeks ago 187MB
k8s.gcr.io/kube-controller-manager-amd64 v1.11.1 52096ee87d0e 4 weeks ago 155MB
k8s.gcr.io/kube-scheduler-amd64 v1.11.1 272b3a60cd68 4 weeks ago 56.8MB
k8s.gcr.io/coredns 1.1.3 b3b94275d97c 2 months ago 45.6MB
k8s.gcr.io/etcd-amd64 3.2.18 b8df3b177be2 4 months ago 219MB
quay.io/coreos/flannel v0.10.0-amd64 f0fad859c909 6 months ago 44.6MB
k8s.gcr.io/pause 3.1 da86e6ba6ca1 8 months ago 742kB
~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master3 Ready master 4m v1.11.2
~]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-78fcdf6894-jbrc6 1/1 Running 0 4m
kube-system coredns-78fcdf6894-wqc96 1/1 Running 0 4m
kube-system etcd-master3 1/1 Running 0 3m
kube-system kube-apiserver-master3 1/1 Running 0 3m
kube-system kube-controller-manager-master3 1/1 Running 0 3m
kube-system kube-flannel-ds-amd64-cnnmc 1/1 Running 0 2m
kube-system kube-proxy-tvb7c 1/1 Running 0 4m
kube-system kube-scheduler-master3 1/1 Running 0 3m

  

5. 在node节点上分别执行

kubeadm join 10.210.55.223:6443 --token xd0696.i3kegveg7g1z3i09 --discovery-token-ca-cert-hash sha256:9498a3f73791b9b7c228cd468fe7332581e703771de0da68811a3391c717b953

  

可以在master节点上看到他们

~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master3 Ready master 9m v1.11.2
node1 Ready <none> 2m v1.11.2
node2 Ready <none> 39s v1.11.2
node3 Ready <none> 31s v1.11.2
node4 NotReady <none> 22s v1.11.2

  

【Linux】【Services】【SaaS】 kubeadm安装kubernetes的更多相关文章

  1. Centos7 使用 kubeadm 安装Kubernetes 1.13.3

    目录 目录 什么是Kubeadm? 什么是容器存储接口(CSI)? 什么是CoreDNS? 1.环境准备 1.1.网络配置 1.2.更改 hostname 1.3.配置 SSH 免密码登录登录 1.4 ...

  2. 使用kubeadm 安装 kubernetes 1.15.1

    简介: Kubernetes作为Google开源的容器运行平台,受到了大家的热捧.搭建一套完整的kubernetes平台,也成为试用这套平台必须迈过的坎儿.kubernetes1.5版本以及之前,安装 ...

  3. 在CentOS 7.6 以 kubeadm 安装 Kubernetes 1.15 最佳实践

    前言 Kubernetes作为容器编排工具,简化容器管理,提升工作效率而颇受青睐.很多新手部署Kubernetes由于"scientifically上网"问题举步维艰,本文以实战经 ...

  4. kubeadm安装kubernetes V1.11.1 集群

    之前测试了离线环境下使用二进制方法安装配置Kubernetes集群的方法,安装的过程中听说 kubeadm 安装配置集群更加方便,因此试着折腾了一下.安装过程中,也有一些坑,相对来说操作上要比二进制方 ...

  5. 使用kubeadm安装kubernetes v1.14.1

    使用kubeadm安装kubernetes v1.14.1 一.环境准备 操作系统:Centos 7.5 ​ ⼀ 一台或多台运⾏行行着下列列系统的机器器: ​ Ubuntu 16.04+ ​ Debi ...

  6. 使用 kubeadm 安装 kubernetes v1.16.0

    近日通过kubeadm 安装 kubernetes v1.16.0,踩过不少坑,现记录下安装过程. 安装环境: 系           统:CentOS Linux release 7.6 Docke ...

  7. Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)

    背景: 由于工作发生了一些变动,很长时间没有写博客了. 概述: 这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别).使用了Centos 7系统. 一.Centos7 ...

  8. kubeadm 安装Kubernetes 1.16.3 (CentOS7+IPVS+Calico)

    目录 ·  . 一.更新系统内核(全部节点) ·  . 二.基础环境设置(全部节点) ·  . 1.修改 Host ·  . 2.修改 Hostname ·  . 3.主机时间同步 ·  . 4.关闭 ...

  9. 使用kubeadm安装kubernetes高可用集群

    kubeadm安装kubernetes高可用集群搭建  第一步:首先搭建etcd集群 yum install -y etcd 配置文件 /etc/etcd/etcd.confETCD_NAME=inf ...

  10. 使用kubeadm安装Kubernetes 1.12

    使用kubeadm安装Kubernetes 1.12 https://blog.frognew.com/2018/10/kubeadm-install-kubernetes-1.12.html 测试环 ...

随机推荐

  1. FAIL : Keyword 'BuiltIn.Log' expected 1 to 6 arguments, got 12(解决方法)

    RF运行关键字:Run Keyword If ,log输出报错"FAIL : Keyword 'BuiltIn.Log' expected 1 to 6 arguments, got 12. ...

  2. Charles抓包 mock数据和rewrite功能

    一.mock数据 mock:在后端返回异常或需要=改前端展示的数据时可以模拟返回的response 1.1 抓到接口后 右击保存response到本地,后缀改成.json打开可以看到是把json保存下 ...

  3. IDEA格式化项目中所有文件的方法

    1,单个文件打开后,直接快捷键Ctrl+Alt+L就可将当前文件格式化 2,快捷键Ctrl+Alt+O可将import格式化(删除无用的import) 3,如果需要格式化整个项目的所有代码,在项目名上 ...

  4. layui表格-template模板的三种用法

    问题情境: layui中将数据库数据通过layui table渲染到前端表格,非常简单,但是如果数据库存储的信息不能被直接展示,项目中该页面有好几个这样的字段,会员类型,支付类型,会员时长还有平台类型 ...

  5. XMLHttpRequest—>Promise

    XMLHttpRequest.open() 初始化 HTTP 请求参数 语法open(method, url, async, username, password) method 参数是用于请求的 H ...

  6. Spark SQL知识点大全与实战

    Spark SQL概述 1.什么是Spark SQL Spark SQL是Spark用于结构化数据(structured data)处理的Spark模块. 与基本的Spark RDD API不同,Sp ...

  7. [hdu6978]New Equipments II

    显然可以费用流来做,具体建图如下-- 点集:源点,汇点,左边$n$​个工人,右边$n$​​​个设备 边集:源点向第$i$​个工人连$(1,a_{i})$​的边,第$i$​个设备向汇点连$(1,b_{i ...

  8. [hdu6595]Everything Is Generated In Equal Probability

    计算一对逆序对的贡献,即在n个数期望要删多少步才能删掉其中的两个数,设f(n)表示此时的期望,则有方程$f[n]=3/4+(\sum_{i=2}^{n}f[i]\cdot c(n-2,i-2))/2^ ...

  9. [atAGC050A]AtCoder Jumper

    考虑二叉树的结构,但并不容易构造从叶子返回的边 (以下为了方便,将所有点编号为$[0,n)$) 对于$i$,选择$2i\ mod\ n$和$(2i+1)\ mod\ n$这两条出边 从二叉树的角度并不 ...

  10. SpringCloud微服务实战——搭建企业级开发框架(二十一):基于RBAC模型的系统权限设计

    RBAC(基于角色的权限控制)模型的核心是在用户和权限之间引入了角色的概念.取消了用户和权限的直接关联,改为通过用户关联角色.角色关联权限的方法来间接地赋予用户权限,从而达到用户和权限解耦的目的. R ...