使用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 安装配置集群更加方便,因此试着折腾了一下.安装过程中,也有一些坑,相对来说操作上要比二进制方 ...
随机推荐
- Python代码规范问题及解决
Python代码规范问题及解决 为了养成使用Python编程好习惯,尽量保证自己写的代码符合PEP8代码规范,下面是过程中报出的警告及解决方法,英文有些翻译不太准确见谅,会不断更新: PEP 8 只是 ...
- jquery 弥补ie6不支持input:hover状态
<!doctype html><html> <head> <meta charset="utf-8"> <t ...
- JUC源码分析-线程池篇(三)Timer
JUC源码分析-线程池篇(三)Timer Timer 是 java.util 包提供的一个定时任务调度器,在主线程之外起一个单独的线程执行指定的计划任务,可以指定执行一次或者反复执行多次. 1. Ti ...
- VScode Python no module的解决方法
在lauch.json中,修改 "env": {}为 "env": {"PYTHONPATH":"${workspaceRoot} ...
- jquery插件小集合
一.滑动轮播插件Swiper Swiper官网http://www.swiper.com.cn/, 这款插件移动端,pc端均试用 二.jquery-tmpl----让你从拼接字符串中解放出来 官方下载 ...
- C-Ubuntu中MySQL出现ERROR1698(28000):Access denied for user root@localhost错误解决方法
卸载原先的MySQL,重新安装过程中没有提示设置密码, 当键入命令:mysql -uroot -p; 不知密码是什么,输入主机的密码以及不输入密码,回车后都出现标题错误. 寻找多篇相关博文,验证如下博 ...
- JQuery日记6.7 Javascript异步模型(二)
异步模型看起来非常美,但事实上它也是有天生缺陷的.看以下代码 try { setTimeout( function(){ throw new Error( '你抓不到我的!' ); }, 100); ...
- python--reflect
一.反射 python 中用字符串的方式操作对象的相关属性,python 中一切皆对象,都可以使用反射 用eval 有安全隐患,用 反射就很安全 1.反射对象中的属性和方法 class A: a_cl ...
- ZMQ面面观
ZMQ是什么? 这是个类似于Socket的一系列接口,他跟Socket的区别是:普通的socket是端到端的(1:1的关系),而ZMQ却是可以N:M 的关系,人们对BSD套接字的了解较多的是点对点的连 ...
- [转]sourceforge文件下载过慢
sourceforge文件下载过慢,可以用下面网址镜像下载, 通过 下载Sourceforge等国内无法下载站点文件的另一种方法博文,好像主站点是 https://www.mirrorservice. ...