kubernetes 集群安装配置

Posted by JC on 2019-08-06 15:19:14 Updated on 2019-08-06 15:19:14

安装 Docker

在内网里面装 Docker ,连接国外就很慢,更不用说被墙掉的东西了,先按照清华大学的镜像站 https://mirror.tuna.tsinghua.edu.cn/help/docker-ce/,把 Docker 在三台 ubuntu 16.04 机器上装好,再安装好 docker-compose https://docs.docker.com/compose/install/。

安装 k8s

安装 kubeadm kubelet kubectl

还是得用国内镜像源

sudo vi /etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
sudo apt-get update
apt-get install kubelet kubeadm kubectl

这里有个坑,安装好这三个组件后,kubelet 可能会起不来,照理说应该是会作为 system services 自动启动的,多等一会,如果还是不能启动的话就手动 sudo kubelet 启动一下,然后杀掉,再等一会看会不会启动,完全看运气,查了很多的资料发现各种文档教程都没写明白,装 k8s 有好几个坑,没一个说明白的,全靠自己想办法和猜,总之 kubelet 要启动起来。

在宿主机上下载好 k8s 需要的 image 并打好 tag

根据当前系统的版本,或得 k8s 需要 image 的版本

kubeadm config images list

得到版本号后从阿里云下载 k8s 需要的 image

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.1
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.1 k8s.gcr.io/kube-apiserver:v1.15.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.1 k8s.gcr.io/kube-controller-manager:v1.15.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.1 k8s.gcr.io/kube-scheduler:v1.15.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.1 k8s.gcr.io/kube-proxy:v1.15.1
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

在宿主机上启动 master 节点

sudo kubeadm init

不加任何参数,很多的文档教程都写了不通的网络组件用不通的参数,默认就应该用 CNI,不加任何参数,启动 master 节点完成后会显示 kubeadm join 的命令,基本算是完成了启动,但是还没法用,得编辑 CNI 网络组件的两个文件才行。

init 完成后会出现三条编辑配置的命令,顺序执行就好。

宿主机上编辑 CNI 网络组件配置

mkdir -p /etc/cni/net.d

sudo nano /etc/cni/net.d/10-mynet.conf

{
    "cniVersion": "0.3.0",
    "name": "mynet",
    "type": "bridge",
    "bridge": "cni0",
    "isGateway": true,
    "ipMasq": true,
    "ipam": {
        "type": "host-local",
        "subnet": "10.244.0.0/16",
        "routes": [
            {"dst": "0.0.0.0/0"}
        ]
    }
}

sudo nano /etc/cni/net.d/99-loopback.conf

{
    "cniVersion": "0.3.0",
    "type": "loopback"
}

检查主节点是否 ready

sudo kubectl get nodes -o wide

检查主节点容器是否正常运行

sudo kubectl get pods -n kube-system

如果显示 Ready,并且容器也都是 running 状态,那就证明主节点正常运行了。

子节点安装 配置

子节点同样安装上面 kubectl kubeadm kubelet 三个组件,同样会遇到 kebelet 不启动的问题,碰运气解决,主节点需要的七个 image 子节点只需要两个,kube-proxy 和 pause,同样下载好打好 tag,然后就执行主节点初始化完成的 kubeadm join 命令,也需要编辑两个 CNI 配置,命令参照上面。

检查集群是否安装完成

在两个子节点都完成了操作后,回到主节点,执行 sudo kubectl get nodes -o wide 如果显示三个节点都是 Ready,就证明集群已经安装配置完成。

今天也遇到了其他的问题,这三个机器是虚拟机创建出来的,上面 CNI 网络组件需要一个虚拟网段,可能是公司的防火墙原因,我在 k8s 上部署了 nginx 后发现不能访问,直接进入了防火墙的报错页面,这个问题还得研究研究,或者就不要再自己部署了,直接用云服务,只需要学习如何写配置就行了。

tags: k8s


BMC logoBuy me a coffee via Paypal
BMC logoBuy me a coffee via Alipay or Wechat Pay