使用kubeadm安装kubernetes 1.15
1、主机准备篇
使用vmware Workstation 10创建一台虚拟机,配置为2C/2G/50G,操作系统为CentOS Linux release 7.6.1810 (Core)。
IP地址为:192.168.198.136(DHCP自动分配的)
以root身份登录该主机,开始相关操作。
禁用SELinux
# setenforce 0
# vim /etc/selinux/config
SELINUX=enforcing改为SELINUX=disabled
禁用防火墙
# systemctl disable firewalld
# systemctl stop firewalld
在yum仓库中添加kubernetes
# vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
安装docker、kubelet、kubeadm、kubectl、kubernetes-cni
# yum install docker kubelet kubeadm kubectl kubernetes-cni -y
# systemctl enable docker && systemctl start docker
# systemctl enable kubelet && systemctl start kubelet
# vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
# sysctl -p /etc/sysctl.d/k8s.conf
禁用交换分区
# swapoff -a
# sed -i '/ swap / s/^/#/' /etc/fstab
刚才的主机就作为kubernetes集群的主节点,现在克隆它,制造2台工作节点。
克隆完毕后,现在咱们的主机有3台:
192.168.198.136 2C/2G/50G 主节点
设置主机名:hostnamectl --static set-hostname master.k8s
192.168.198.131 2C/2G/50G 工作节点
设置主机名:hostnamectl --static set-hostname node1.k8s
192.168.198.132 2C/2G/50G 工作节点
设置主机名:hostnamectl --static set-hostname node2.k8s
为三台主机配置名称解析
# vim /etc/hosts
192.168.198.136 master.k8s
192.168.198.131 node1.k8s
192.168.198.133 node2.k8s
三台主机都得填写。
2、主节点初始化篇
由于初始化的过程中,要去k8s.gcr.io网站下载相关的镜像,而我们国内无法访问外网,所以只能另想其他办法。
找出需要下载的镜像列表
在主节点执行以下命令:
# kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.15.0
k8s.gcr.io/kube-controller-manager:v1.15.0
k8s.gcr.io/kube-scheduler:v1.15.0
k8s.gcr.io/kube-proxy:v1.15.0
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
这是我的结果,你在实验时,每个镜像的版本可能不一定是这样,但不影响你的实验。
下载每个镜像
既然国外无法下载,那就从国内下载。因为阿里云做了镜像,所以我们直接从阿里云下载。
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1
修改镜像的标签
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.0 k8s.gcr.io/kube-apiserver:v1.15.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.0 k8s.gcr.io/kube-controller-manager:v1.15.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.0 k8s.gcr.io/kube-scheduler:v1.15.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.0 k8s.gcr.io/kube-proxy:v1.15.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
开始初始化
# kubeadm init --pod-network-cidr=10.244.0.0/16
初始化完成后,最后会出现一行添加工作节点的命令:
kubeadm join 192.168.198.136:6443 --token 5r4ez7.srmu7uaxghoiprpr \
--discovery-token-ca-cert-hash sha256:0f31247ea401aa84d1abda61b45a46d53777f1743391d31c2152b95b34e29a43
在主节点上运行kubectl
要想运行kubectl,需要设置环境变量:
# export KUBECONFIG=/etc/kubernetes/admin.conf
# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
# kubectl get po -n kube-system
此时可以看到coredns这个pod还未运行,因为没有安装网络插件。
# kubectl get nodes
此时可以看到主节点的状态是NotReady,因为没有安装网络插件。
在将工作节点加入集群前,有一点需要提前做好准备,那就是:在工作节点上运行pod时,必须要有pause镜像的支持,否则任何pod都无法运行。
目前已知在工作节点上要运行的pod有:
kube-proxy
kube-flannel
pause
由于kube-flannel刚好可以在国内下载,所以我们要处理的有kube-proxy和pause。
处理方法同前面的步骤,直接从阿里云下载,然后打标签即可。
注意在2个工作节点都要如此操作。具体步骤不写出来,同上。
处理完之后,就可以开始下面的步骤了。
(我在这个地方栽了半天)
将另外2台工作节点加入到集群中
在node1.k8s上执行:
# kubeadm join 192.168.198.136:6443 \
--token 5r4ez7.srmu7uaxghoiprpr \
--discovery-token-ca-cert-hash \
sha256:0f31247ea401aa84d1abda61b45a46d53777f1743391d31c2152b95b34e29a43
在node2.k8s上执行:
# kubeadm join 192.168.198.136:6443 \
--token 5r4ez7.srmu7uaxghoiprpr \
--discovery-token-ca-cert-hash \
sha256:0f31247ea401aa84d1abda61b45a46d53777f1743391d31c2152b95b34e29a43
然后到主节点上查看节点是否进入集群:
# kubectl get nodes
此时发现2台工作节点已经进入集群,只是状态为NotReady。
查看节点NotReady的原因
# kubectl describe node node1.k8s
得知是CNI网络插件的原因。
安装网络插件,我们选择flannel:
# wget \
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# kubectl apply -f kube-flannel.yml
稍等片刻,在主节点上再次查看各节点的状态,以及各pods的状态:
# kubectl get nodes

# kubectl get pods -n kube-system

到这里,我们使用kubeadm创建了一个kubernetes集群。该集群拥有3个节点,1个主节点,2个工作节点。
中间遇到的坎有:
1、因kube-proxy镜像无法从国内下载,导致2个工作节点上无法运行kube-proxy的pod,使得整体的集群无法成功。
2、同理,pause镜像也是同样的问题。
3、在1.15版本中,好像只能使用flannel网络插件。因为我在使用另一个插件weave-net时,总是报错:
open /run/flannel/subnet.env: no such file or directory,说明在新版的kubernetes中,只能使用flannel。
使用kubeadm安装kubernetes 1.15的更多相关文章
- 使用kubeadm 安装 kubernetes 1.15.1
简介: Kubernetes作为Google开源的容器运行平台,受到了大家的热捧.搭建一套完整的kubernetes平台,也成为试用这套平台必须迈过的坎儿.kubernetes1.5版本以及之前,安装 ...
- 在CentOS 7.6 以 kubeadm 安装 Kubernetes 1.15 最佳实践
前言 Kubernetes作为容器编排工具,简化容器管理,提升工作效率而颇受青睐.很多新手部署Kubernetes由于"scientifically上网"问题举步维艰,本文以实战经 ...
- Centos 使用kubeadm安装Kubernetes 1.15.3
本来没打算搞这个文章的,第一里面有瑕疵(没搞定的地方),第二在我的Ubuntu 18 Kubernetes集群的安装和部署 以及Helm的安装 也有安装,第三 和社区的问文章比较雷同 https:// ...
- 使用kubeadm安装Kubernetes 1.15.3 并开启 ipvs
一.安装前准备 机器列表 主机名 IP node-1(master) 1.1.1.101 node-2(node) 1.1.1.102 node-3(node) 1.1.1.103 设置时区 cp / ...
- Kubeadm安装Kubernetes 1.15.1
一.实验环境准备 服务器虚拟机准备 IP CPU 内存 hostname 192.168.198.200 >=2c >=2G master 192.168.198.201 >=2c ...
- kubeadm安装Kubernetes 1.15 实践
原地址参考github 一.环境准备(在全部设备上进行) 3 台 centos7.5 服务器,网络使用 Calico. IP地址 节点角色 CPU 内存 Hostname 10.0.1.45 mast ...
- Centos7 使用 kubeadm 安装Kubernetes 1.13.3
目录 目录 什么是Kubeadm? 什么是容器存储接口(CSI)? 什么是CoreDNS? 1.环境准备 1.1.网络配置 1.2.更改 hostname 1.3.配置 SSH 免密码登录登录 1.4 ...
- 使用 kubeadm 安装 kubernetes v1.16.0
近日通过kubeadm 安装 kubernetes v1.16.0,踩过不少坑,现记录下安装过程. 安装环境: 系 统:CentOS Linux release 7.6 Docke ...
- kubeadm安装kubernetes V1.11.1 集群
之前测试了离线环境下使用二进制方法安装配置Kubernetes集群的方法,安装的过程中听说 kubeadm 安装配置集群更加方便,因此试着折腾了一下.安装过程中,也有一些坑,相对来说操作上要比二进制方 ...
随机推荐
- 转-C++之虚函数不能定义成内联函数的原因
转自:https://blog.csdn.net/flydreamforever/article/details/61429140 在C++中,inline关键字和virtual关键字分别用来定义c+ ...
- [经典]Python 一篇学会多线程
对于python 多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂.所以,这里力图用简单的例子,让你对多线程有个初步的认识. 单线程 在好些年前的MS-DOS时代,操作系统处理问题都是单任 ...
- POJ3630-Phone List-Trie字典树模板题
Given a list of phone numbers, determine if it is consistent in the sense that no number is the pref ...
- 1022 Digital Library (30 分)
1022 Digital Library (30 分) A Digital Library contains millions of books, stored according to thei ...
- 常用内置模块(二)——logging模块
logging模块 一.logging作用 1. 控制日志级别 2. 控制日志格式 3. 控制输出的目标为文件 二.日志级别 logging.debug( logging.info( loggin ...
- mac 常使用的一些小技巧
全选 command +A 剪切 command + x 复制 ommand + c 粘贴 command + v 撤销 command + z 聚焦搜索 command + 空格 退出全屏窗口 Co ...
- C# 编译生成 产生多余的语言包删除"de" "en" "es" "fr" "hu" "it" "ja" "ko" "pr-br" "ro" "pt-br" "ru" "sv" "zh-hans" "zh-hant&qu
VS生成事件 rd /s /q "de" "en" "es" "fr" "hu" "it& ...
- Ubuntu下搭建NFS,并在开发板挂载
---恢复内容开始--- zai root huanjingxiachaozhuo $ su 一.搭建NFS 1.执行命令:sudo apt-get install nfs-kernel-server ...
- docker Dockerfile学习---构建mongodb环境
1.创建项目目录并上传包 mkdir centos_mongodb cd centos_mongodb .tgz 2.编辑配置文件 vi mongodb.conf dbpath = /data/usr ...
- linux 下安装mysql5.7.17
安装前的环境准备 linux 环境准备 内核参数建议值 1.调整最大文件数限制 直接执行 ulimit -n 65535 或写入/etc/sysctl.conf 重启后生效 2.修改IO 调度器设置 ...