2019独角兽企业重金招聘Python工程师标准>>>

安装前准备

virtualbox安装三个Ubuntu虚拟机

k8s-master 和 k8s-slave1、k8s-slave2 为了上网,都是双网卡(NAT和Host-only)

关闭防火墙

sudo ufw disable

关闭swap

sudo swapoff -a

安装Docker

卸载旧docker

sudo apt-get remove docker docker-engine docker.io

彻底删除docker-ce和docker-cli

sudo apt-get autoremove docker-ce

安装依赖

sudo apt-get install \apt-transport-https \ca-certificates \curl \software-properties-common

添加docker的gpg key

为了使用https访问,使用阿里云加速

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

设置docker镜像源

sudo add-apt-repository \"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \$(lsb_release -cs) \stable"

更新源

sudo apt update && sudo apt-get update

安装docker 18.06

查看docker-ce版本

apt-cache madison docker-ce

安装指定版本

sudo apt-get install -y docker-ce=18.06.3~ce~3-0~ubuntu

如果因为libltdl版本低,可以安装新版本 wget http://launchpadlibrarian.net/236916213/libltdl7_2.4.6-0.1_amd64.deb && sudo dkpg -i libltdl7_2.4.6-0.1_amd64.deb

默认启动

sudo systemctl enable docker && sudo systemctl start docker

修改docker启动参数,进行加速

$ sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
EOF

将xxxxxx替换为在阿里云申请的路径

安装kubernetes

更新apt源

sudo apt-get update && sudo apt-get install -y apt-transport-https curlsudo curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -sudo tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOFsudo apt-get update

安装kubectl kubeadm kubelet

在master和node都安装

sudo apt-get install -y kubelet=1.12.8-00 kubeadm=1.12.8-00 kubectl=1.12.8-00
sudo apt-mark hold kubelet=1.12.8-00 kubeadm=1.12.8-00 kubectl=1.12.8-00

启动kubelet

sudo systemctl enable kubelet && sudo systemctl start kubelet

初始化集群

sudo kubeadm init --apiserver-advertise-address 192.168.56.112 --pod-network-cidr=10.244.0.0/16 --kubernetes-version=1.12.8

安装网络插件

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

加入node

sudo kubeadm join 192.168.56.112:6443 --token xxxxxx --discovery-token-ca-cert-hash sha256:xxxxxxxx

将之前kubeadm init后,输出的加入node指令拷贝到node执行。

遇到的问题

无法启动kubelet

journalctl -u kubelet 看到报错: failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file "/var/lib/ku 这个不影响,不用关系,启动了kubernetes后就会正常

kubectl无法连上服务

执行kubectl看到报错 The connection to the server localhost:8080 was refused - did you specify the right host or port? 这是由于kubernetes默认不开放http 8080访问。

可以在/etc/kubernetes/manifests/kube-apiserver.yaml看到开启了https 6443访问。 也可以通过sudo netstat -apn | grep tcp | grep LISTEN看到开的的端口

可以使用sudo kubectl --kubeconfig=/etc/kubernetes/admin.conf api-versions访问,admin.conf中有端口以及key

使用阿里云apt源导致无法安装

备份/etc/apt/sources.list后替换为以下内容

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

执行sudo apt update && sudo apt-get update更新apt源。但是导致了 package xxx has no installation candidate,使用Ubuntu官方源就OK

pod状态异常

安装完集群后,生成一个pod,pod一直是pending状态。查看pod的描述

sudo kubectl describe pod helloworld

pod描述信息

.......
Events:Type     Reason            Age                From               Message----     ------            ----               ----               -------Warning  FailedScheduling  32s (x2 over 32s)  default-scheduler  0/3 nodes are available: 3 node(s) had taints that the pod didn't tolerate.

执行kubectl taint nodes --all node-role.kubernetes.io/master-,node正常使用参与调度

node状态异常

service无法访问,通查看node状态

sudo kubectl get pod -o yaml

存储node网络异常情况

......
conditions:- lastHeartbeatTime: 2019-05-21T14:39:22ZlastTransitionTime: 2019-05-21T13:08:37Zmessage: kubelet has sufficient disk space availablereason: KubeletHasSufficientDiskstatus: "False"type: OutOfDisk- lastHeartbeatTime: 2019-05-21T14:39:22ZlastTransitionTime: 2019-05-21T13:08:37Zmessage: kubelet has sufficient memory availablereason: KubeletHasSufficientMemorystatus: "False"type: MemoryPressure- lastHeartbeatTime: 2019-05-21T14:39:22ZlastTransitionTime: 2019-05-21T13:08:37Zmessage: kubelet has no disk pressurereason: KubeletHasNoDiskPressurestatus: "False"type: DiskPressure- lastHeartbeatTime: 2019-05-21T14:39:22ZlastTransitionTime: 2019-05-21T13:08:37Zmessage: kubelet has sufficient PID availablereason: KubeletHasSufficientPIDstatus: "False"type: PIDPressure- lastHeartbeatTime: 2019-05-21T14:39:22ZlastTransitionTime: 2019-05-21T13:08:37Zmessage: 'runtime network not ready: NetworkReady=false reason:NetworkPluginNotReadymessage:docker: network plugin is not ready: cni config uninitialized'reason: KubeletNotReadystatus: "False"type: Ready
......

第一次出现问题是因为没有安装flannel网络插件。

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

安装完毕网络插件后,提示cni config uninitialized

先关闭node上的kubelet; 然后使用kubeadm reset|| kubeadm join ..., 将node重新加入集群

系统宕机后重启服务

  1. 关闭防火墙
  2. 关闭swap
  3. 重启docker
  4. 重启kubelet
  5. 然后使用docker先重启pause容器,然后在重启其他容器
  6. 也可以使用kubeadm reset重置kubernetes,然后重新初始化集群
  7. 注意使用journal查看docker和kubelet日志,另外要主要docker和kubelet的systemd启动参数

参考资料

基于 Ubuntu 18.04 安装部署K8s集群 Ubuntu-18.04使用kubeadm安装kubernetes-1.12.0 kubeadm安装k8s集群 apt-get 软件源文件格式以及ubuntu 18.04更换阿里源 [cni config uninitialized解决方案](cni config uninitialized "cni config uninitialized解决方案") cni config uninitialized

转载于:https://my.oschina.net/u/583362/blog/3046700

Ubuntu18使用kubeadm安装kubernetes1.12相关推荐

  1. 使用kubeadm安装kubernetes1.12.2版本脚本

    Master节点脚本: #!/bin/sh#使用系统的PATH环境export PATH=`echo $PATH`#停止firewall防火墙,并禁止开机自启动 systemctl stop fire ...

  2. Kubeadm安装Kubernetes-1.5.1版本

    2019独角兽企业重金招聘Python工程师标准>>> 在<当Docker遇到systemd>一文中,我提到过这两天儿一直在做的一个task:使用kubeadm在Ubun ...

  3. 安装kubernetes1.12.1的 dashboard v1.10 + Heapster

    2019独角兽企业重金招聘Python工程师标准>>> Dashboard是kubernetes的官方WEB UI. Heapster为集群添加使用统计和监控功能,为Dashboar ...

  4. 利用kubeadm安装kubernetes1.21.2单节点集群

    利用kubeadm安装kubernetes集群 环境: 1.关闭防火墙, 2.配置好/etc/hosts k8s-master:192.168.248.128 k8s-node01: 192.168. ...

  5. kubeadm安装Kubernetes-1.6.1集群

    系统环境: # cat /etc/centos-release CentOS Linux release 7.3.1611 (Core) 关闭防火墙.selinux: # systemctl disa ...

  6. kubeadm部署kubernetes-1.12.0 HA集群-ipvs

    一.概述 主要介绍搭建流程及使用注意事项,如果线上使用的话,请务必做好相关测试及压测. 1.基础环境准备 系统:ubuntu TLS 16.04  5台 docker-ce:17.06.2 kubea ...

  7. ubuntu18.04 kubeadm 安装kubernetes v1.18.3

    机器:Ubuntu 18.04.2 LTS 关闭swap 先关闭swap!,不关也可以,安装kubernetes初始时会有提示关闭swap . sudo swapoff -a free -htotal ...

  8. ubuntu18.04 安装qt5.12.8及环境配置的详细教程

    这篇文章主要介绍了ubuntu18.04 安装qt5.12.8及环境配置的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 环境 系统: ...

  9. kubeadm 安装集群 1.16.12

    kubeadm 安装集群 添加源 mirror=https://mirrors.aliyun.com # mirror=https://mirrors.ustc.edu.cn### docker 源 ...

最新文章

  1. 防止代码变质的思考与方法
  2. (转自ITAA)个人问题汇总(workatlab)
  3. 在Visual Studio 2008中编译snort-2.8.6.1.tar.gz
  4. 原生js已载入就执行函数_手写CommonJS 中的 require函数
  5. python多进程和多线程一起使用_Python3多进程与多线程区别及使用(2.线程)
  6. 9切换中文mac_超详细的Mac重装系统教程!让重装系统变得简单起来!
  7. PAT (Basic Level) Practise:1013. 数素数
  8. 【Siddhi】Siddhi 组件架构
  9. 【转载】Ogre的内存分配策略
  10. mysql修改root密码及修改密码过程中报错的解决方案
  11. Python NumPy教程
  12. multism中ui和uo应该怎么表示_第310 这四个常考英语单词,到底表示时间还是地点?...
  13. Eclipse安装Tomcat插件全攻略
  14. Eclipse汉化教程
  15. sqlite3命令行把.db文件导成.txt时报错及中文乱码
  16. apache服务器搭建
  17. 青柠起始页-浏览器起始页(一个简洁、美观、实用的浏览器起始页。)
  18. STM32F4 CAN总线通信资料参考,提供源码参考快速上手CAN总线通信
  19. 微信小程序10-微搭模板
  20. 物流计算机流程图,物流管理流程图.doc

热门文章

  1. Android访问数据库(SQL Server 和 MySQL)
  2. iPhone的Socket编程使用开源代码之AsyncSocket
  3. HTML元素-META全集
  4. 蒙了吗?offsetLeft、offsetWidth、scrollTop、scrollWidth、event.pageX
  5. 德国软件巨头SAP旗下风投基金募集10亿美元 专门投资科技初创公司
  6. OpenCV探索之路(十):图像修复技术
  7. JQuery URL的GET参数值获取方法
  8. μC/OS-II硬件软件体系结构
  9. iphone-common-codes-ccteam源代码 CCUINavigationBar.h
  10. iOS App后台保活