kuberbetes安装笔记

kubernetes 安装笔记

k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便。随着docker的大热,k8s当然也是随之风生水起,尤其是它有一个好爹google。
安装软件其实第一步还是去找官网,官网文档走不通再去找相关解决办法。其实安装过程其实官网说的很明白,遇到的主要问题都是网络问题,需要各种找办法解决。

环境说明

OS: Ubuntu 16.04(全新系统)
Docker: 18.06.1-ce
K8S: v1.12.2

更改源

考虑国内的网络环境,装完系统首先换源,在本次实践我选的中科大的镜像源,具体操作可以参etc见科大镜像源

sudo vim /etc/apt/sources.list

复制下面的代码覆盖原文件

# 默认注释了源码仓库,如有需要可自行取消注释
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse

sudo apt update && sudo apt upgrade -y
sudo apt install vim -y

安装 docker

安装docker可以直接跟着官网走,唯一要注意的是还是网络,需要修改成国内源

sudo apt-get remove docker docker-engine docker.io
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

首先卸载旧的docker(如果有的话),安装必要的依赖包

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

信任docker的GPG公钥,注意切换成科大的地址

sudo add-apt-repository “deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable”

添加docker的软件仓库,一样,注意修改成科大的地址

sudo apt update && sudo apt install docker-ce

安装docker

sudo usermod -aG docker $USER

加入docker用户组,以免以后操作docker都要sudo(可以省略这一步)

安装 kubernetes

安装kubeadm

参考官网,使用本地Ubuntu裸机搭建k8s集群,官网提供了kubeadm,可以一步步照着官网来,当然,由于网络问题,我们需要多费一番功夫。

curl -s http://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

这里同样需要改地址google是不可能访问到的(正常情况),科大的k8s镜像没有备份GPG公钥,于是更改成阿里云的镜像地址拿到k8s的GPG公钥

sudo vim /etc/apt/sources.list.d/kubernetes.list

复制下面代码到文件,添加科大的k8s源

deb http://mirrors.ustc.edu.cn/kubernetes/apt/ kubernetes-xenial main

sudo apt update && sudo apt install -y kubelet kubeadm kubectl

下载 kubelet kubeadm kubectl

sudo apt-mark hold kubelet kubeadm kubectl

为了防止意外更新,锁住k8s相关包的更新

这里就安装好了相关包,由于使用的默认容器docker,不需要进行其他配置修改,如果使用非docker容器,具体配置请参看kubeadm

使用kubeadm搭建k8s集群

master

还是网络问题,这里修改的比较多,在网上找解决方案非常费时间,下面将展示具体怎么做。

sudo su

现在使用root权限干事,直接转换成root用户就好,免得后面一直sudo

swapoff -a
vim /etc/fstab # 注释swap所在的行

禁用swap, k8s不支持swap

kubeadm init --pod-network-cidr=10.244.0.0/16

正常步骤参考kubeadm-init,当然因为网络问题,这一步基本上不会成功,需要绕路而行

在github上找到了有热心人士的k8s.gcr.io的镜像,和相关操作脚本anjia0532,在这里感谢这位老哥。
操作大致是从国内镜像下载k8s需要的docker包并改名字成k8s需要的格式,这样在init的时候就不用去 k8s.gcr.io 下,规避网络问题。
但是由于我对于稍微复杂的shell都看不太懂,于是用python改写了下:

#!/usr/bin/env python
# coding: utf-8


import os

# 参考 https://github.com/anjia0532/gcr.io_mirror
# 没办法,太菜,看不懂稍微复杂点的shell,只能舍近求远用python
url_prefix = "anjia0532/google-containers."

def get_k8s_image_name():
    sh = os.popen("kubeadm config images list")
    sh_out = sh.read()
    sh.close()
    print("k8s images:")
    print(sh_out)

    return sh_out.split("\n")

def docker_do(img_list):
    for img in img_list:
        down = url_prefix + img.rsplit("/")[-1]
        print(down)
        os.system("docker pull %s" % (down))
        os.system("docker tag %s %s" % (down, img))
        os.system("docker rmi %s" % (down))
        print("%s has been downloaded\n\n" % (img))
    os.system("docker images")


if __name__ == "__main__":
    docker_do(get_k8s_image_name())

chmod +x k8s_images_down.py
./k8s_images_down.py

将以上内容拷贝到文件中并执行,假定文件名为 k8s_images_down.py
下面耐心等待镜像下载完成

kubeadm init --pod-network-cidr=10.244.0.0/16

这下应该就没问题了,具体配置信息请参考kubeadm-init

可以看到执行的log提示我们需要安装一个 pod network 到集群,k8s 推荐 flannel(转为k8s设计的,当然其他的也可以),具体可选可以参见k8s-addons

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值