kubernetes 快速安装

这段时间我一直在折腾kubernetes,我讨厌了在不同的电脑上不断的部署,撤销,部署的循环了。 并且,将尽可能的将所有docker化的服务部署到kurbernetes上。

安装

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF > /etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
# Install docker if you don't have it already.
apt-get install -y docker.io
apt-get install -y kubelet kubeadm kubectl kubernetes-cni

配置

master上运行,其他节点直接join就可以

kubeadm init --api-advertise-addresses=192.168.228.129

ip地址为本地的可访问外网的地址

经过长时间的,坚持不懈的努力,终于在某天,良心发现,99%的梯子能力+1%的运气, 成功下载了所有的镜像,并运行起来了

kubernetes的各种坑开始

kubectl get pods -n kube-system

无法启动

8080端口是否被占用了?

dns 的pod一直无法启动

上述的配置中不含网络配置,网络需要另外安装关于网络的插件,目前有weave和calico等, 据说calico逼格比较高,所以选择calico开始

calico 各种坑开始

  • calico yaml的选择
    1. 上述的安装使用的是kubeadm安装,因此,选择使用kubeadm/calico.yaml配置
    2. /etc/kubernetes/manifests/etcd.json中关于etcd的配置,默认”–listen-client-urls” 为 “http://127.0.0.1:2379“, “–advertise-client-urls”为”http://127.0.0.1:2379“, 至少修改为外网可访问的,幸运的是,不用重启,过一会kubernetes会自动加载这个
    3. 删除下载下来的配置中的etcd的配置和etcd服务的配置
    4. 修改下载下来的配置中的etcd的地址为kubeadm启动的etcd的地址,没记错的话,直接搜索6666就可以找到这个了
    5. 可能是防火墙影响,一直pull不下来,然后一直重拾
  • calico pool 未知命令( 这个已经不需要了)
    1. 下载的calico.yaml可能比较老,使用最新的版本
    2. 老版本的pool命令已经需要了,新版本中是apply命令
    3. 如果不想更新calico的配置的话,自己pull一个老版本的,然后打tag
    4. 修改calico配置中的calico/ctl的版本为较老的版本
    5. 这个非常坑,我尝试了十几次才找到可以支持的,结果发现官网中的kubeadm/calico.yaml更新了
  • kube-dns 出现 2/3 runing的状态

    基本上,上述pool的问题解决了之后,这个一般不会出现,但不幸,我碰到了, 重启下docker服务试试?

  • calico-* 等在node加入后的各种不正常现象
    1. 要求各节点的主机名称不能相同,(修改/etc/hosts,/etc/hostname等文件)
    2. etcd监听的为127.0.0.1,修改( 上述提到过)
    3. calico的yaml中修改etcd的地址,重新create,未试过apply
    4. 去掉各节点的docker启动服务参数中的dns为127.0.0.1(简单的理解,这个dns要可以解析各个自节点的主机名)
    5. 重启docker服务试试?

webui 安装

满怀信心的打开http://127.0.0.1:8080/ui/ , 结果无法访问。webui 需要安装才能使用

kubectl create -f https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml

经过上述坑,kubernetes终于算是比较正常了,可以运行了