ubuntu 16 下 kubeadm安装kubernetes1.13.2

此文是单机部署,只有master节点,并且在master上跑pod。

一、前置条件:如果想要安装顺利,请科学上网。

在安装过程中需要的镜像文件会自动下载,也不排除有些镜像下载失败,这时候需要你自己想办法使用docker pull对应版本的组件镜像。

二、安装docker(详见官方https://docs.docker.com/install/linux/docker-ce/ubuntu/)

没有安装curl工具,先安装

apt-get update && apt-get install -y apt-transport-https curl

如果有旧版本需要卸载

$ sudo apt-get remove docker docker-engine docker.io containerd runc

$ sudo apt-get update

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

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

$ sudo apt-key fingerprint 0EBFCD88

x86_64 或者 amd64平台用如下命令

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

$ sudo apt-get update

$ sudo apt-get install docker-ce

上面这条命令将为你安装最新版本的docker

如果想要安装指定版本的docker命令如下

$ apt-cache madison docker-ce

docker-ce | 18.09.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages

先查看有哪些可用版本,如上列出了一条,可以使用下面的命令指定版本 docker-ce=18.03.0~ce-0~ubuntu

$ sudo apt-get install docker-ce=

卸载docker的方法

$ sudo apt-get purge docker-ce

$ sudo rm-rf/var/lib/docker



三、安装kubeadm

Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动。

关闭Swap

swapoff -a

vi /etc/fstab

注释掉swap

#UUID=7bff6243-324c-4587-b550-55dc34018ebf swap                    swap    defaults        0 0


$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

$ cat < /etc/apt/sources.list.d/kubernetes.list

deb http://apt.kubernetes.io/ kubernetes-xenial main

EOF

更新一下源,安装kubelet kubeadm kubectl

apt-get update

apt-get install -y kubelet kubeadm kubectl

或者

apt-mark hold kubelet kubeadm kubectl


我们这里网络使用flannel进行管理,所以初始化 指定10.244.0.0/16(如果使用 Calico 初始化参数用 --pod-network-cidr=192.168.0.0/16)

kubeadm init --kubernetes-version=v1.13.2 --pod-network-cidr=10.244.0.0/16

初始过程会输出一堆信息,关键的信息如下

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

上面的命令是配置常规用户如何使用kubectl访问集群,其中还包含TLS认证信息,如果不配置无法访问k8的kube-apiserver


四、安装Pod Network(如果不安装k8s的coredns 无法正常running)

安装flannel 官方说明

For Kubernetes v1.7+ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

最好是下载到本地,后期不能科学上网时需要使用kubeadm重置安装也可以直接使用该yaml文件

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kubectl apply -f  kube-flannel.yml

五、问题解决

到这里,可以用kubectl get pods --all-namespaces 查看一下k8的pod都处于running状态了没。

这时你的coredns可能始终处于pending状态。

解决方法:

sudo rm -f /etc/resolv.conf  # Delete the symbolic link

sudo nano /etc/resolv.conf  # Create static file

# Content of static resolv.conf

nameserver 8.8.4.4

nameserver 8.8.8.8

详见https://askubuntu.com/questions/627899/nameserver-127-0-1-1-in-resolv-conf-wont-go-away/627900#627900

把原来的/etc/resolv.conf删掉,重新创建文件后需要重启服务器

有时重启服务器也无法解决,那么就只能kubeadm reset -f重置,再执行一次初始化的步骤


k8s只有master节点时,无法启动pod问题

master节点禁止运行pod,为了避免master节点的资源被耗尽导致整个集群出现问题

测试环境可以放开该限制,执行如下指令

kubectl taint nodes --all node-role.kubernetes.io/master-

如果需要恢复限制,使用如下脚本

node-role.kubernetes.io/master="":NoSchedule

祥见

https://stackoverflow.com/questions/49694230/kubeadm-and-the-risks-of-scheduling-pods-on-master-node-pods-always-pending

你可能感兴趣的:(ubuntu 16 下 kubeadm安装kubernetes1.13.2)