墙内安装kubernetes教程

栏目: 编程工具 · 发布时间: 5年前

内容简介:去年2月我写过一篇kubernets部署备忘,当时基于v1.5.2,现在看有些地方已经跟当前版本对不上了,有读者发邮件来咨询,由于我也很久没部署过k8s了,索性新写一篇教程,重温一下,喜迎九一。本教程:我用的机器是一台老笔记本ThinkPad X201,4核8GB,标准的Java虚机配置,用来跑kubernetes尚可。操作系统是ubuntu 16.04 Desktop版本,更新到最新。这台机器特意没有配置任何翻墙工具。

去年2月我写过一篇kubernets部署备忘,当时基于v1.5.2,现在看有些地方已经跟当前版本对不上了,有读者发邮件来咨询,由于我也很久没部署过k8s了,索性新写一篇教程,重温一下,喜迎九一。

本教程:

  • 基于当前1.11.2版本
  • 基于ubuntu
  • All in ONE
  • 绝对不翻墙!

我用的机器是一台老笔记本ThinkPad X201,4核8GB,标准的 Java 虚机配置,用来跑kubernetes尚可。操作系统是ubuntu 16.04 Desktop版本,更新到最新。这台机器特意没有配置任何翻墙工具。

准备工作

更换apt源为163

$ cat /etc/apt/sources.list
deb http://mirrors.163.com/ubuntu/ xenial main
deb-src http://mirrors.163.com/ubuntu/ xenial main

deb http://mirrors.163.com/ubuntu/ xenial-updates main
deb-src http://mirrors.163.com/ubuntu/ xenial-updates main

deb http://mirrors.163.com/ubuntu/ xenial universe
deb-src http://mirrors.163.com/ubuntu/ xenial universe
deb http://mirrors.163.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.163.com/ubuntu/ xenial-updates universe

deb http://mirrors.163.com/ubuntu/ xenial-security main
deb-src http://mirrors.163.com/ubuntu/ xenial-security main
deb http://mirrors.163.com/ubuntu/ xenial-security universe
deb-src http://mirrors.163.com/ubuntu/ xenial-security universe

安装docker

apt install docker.io -y

安装后 docker 版本为17.03.2-ce。

增加kubernetes aliyun镜像源

apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

安装kubeadm/kubelet/kubectl

apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl

如果你有多台机器,非master节点不需要安装kubeadm/kubectl。当然装了也没啥坏处。

关闭swap

kubernetes要求必须关闭swap。

这次装机遗憾的地方就是忘记把swap给关掉了。不接受“为啥要关swap啊”的讨论。其实我在公司的台式机是开着的,因为狗日的内存只有8GB,我用的又是deepin,非常耗内存,但服务器上,别开swap,宁死不要swap,用户可没我这么好脾气。

swapoff -a

同时把 /etc/fstab 包含swap那行记录删掉。

配置docker mirror

创建(或修改)/etc/docker/daemon.json。官方中国镜像速度还行。

{
"registry-mirrors": ["https://registry.docker-cn.com"]
}

重启docker服务

systemctl restart docker

拉取k8s的包并tag

首先查询下当前版本需要哪些docker image。

$ kubeadm config images list --kubernetes-version v1.11.2
k8s.gcr.io/kube-apiserver-amd64:v1.11.2
k8s.gcr.io/kube-controller-manager-amd64:v1.11.2
k8s.gcr.io/kube-scheduler-amd64:v1.11.2
k8s.gcr.io/kube-proxy-amd64:v1.11.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd-amd64:3.2.18
k8s.gcr.io/coredns:1.1.3

必须要指定版本,这样kubeadm才不会去连k8s.io。kubeadm init同理。

推荐使用 anjia0532 的镜像,机器人自动跟官方同步,非常及时。

docker pull anjia0532/google-containers.kube-controller-manager-amd64:v1.11.2
docker pull anjia0532/google-containers.kube-apiserver-amd64:v1.11.2
docker pull anjia0532/google-containers.kube-scheduler-amd64:v1.11.2
docker pull anjia0532/google-containers.kube-proxy-amd64:v1.11.2
docker pull anjia0532/google-containers.pause:3.1
docker pull anjia0532/google-containers.etcd-amd64:3.2.18
docker pull anjia0532/google-containers.coredns:1.1.3

docker tag anjia0532/google-containers.kube-controller-manager-amd64:v1.11.2 k8s.gcr.io/kube-controller-manager-amd64:v1.11.2
docker tag anjia0532/google-containers.kube-apiserver-amd64:v1.11.2 k8s.gcr.io/kube-apiserver-amd64:v1.11.2
docker tag anjia0532/google-containers.kube-scheduler-amd64:v1.11.2 k8s.gcr.io/kube-scheduler-amd64:v1.11.2
docker tag anjia0532/google-containers.kube-proxy-amd64:v1.11.2 k8s.gcr.io/kube-proxy-amd64:v1.11.2
docker tag anjia0532/google-containers.pause:3.1 k8s.gcr.io/pause:3.1
docker tag anjia0532/google-containers.etcd-amd64:3.2.18 k8s.gcr.io/etcd-amd64:3.2.18
docker tag anjia0532/google-containers.coredns:1.1.3 k8s.gcr.io/coredns:1.1.3

docker rmi anjia0532/google-containers.kube-controller-manager-amd64:v1.11.2
docker rmi anjia0532/google-containers.kube-apiserver-amd64:v1.11.2
docker rmi anjia0532/google-containers.kube-scheduler-amd64:v1.11.2
docker rmi anjia0532/google-containers.kube-proxy-amd64:v1.11.2
docker rmi anjia0532/google-containers.pause:3.1
docker rmi anjia0532/google-containers.etcd-amd64:3.2.18
docker rmi anjia0532/google-containers.coredns:1.1.3

开始安装master

好了,万事俱备,开始安装master。

kubeadm init --kubernetes-version v1.11.2

我这里准备使用weave Network(主要是想用下weave scope,它只支持weave类型的网络)。

注意如果是flannel网络方案,必须要设置 --pod-network-cidr 10.244.0.0/16 ,其他类型的网络,请参考官方的 说明

部署weave网络

sysctl net.bridge.bridge-nf-call-iptables=1 -w
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

准备计算资源

因为我只有1个节点,要“计算资源”的话,就只能将master节点的taint去掉,否则普通的Pod默认不会调度上来。

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

如果你有多个节点的话,不需要去掉master的taint。其他节点参照上面的准备阶段在各个节点上做好准备工作以后,只要再Join一下就行了。Join命令在kubeadm init的输出信息里有。

kubeadm join --token={token} {master ip}

安装weave scope

kubectl apply -f "https://cloud.weave.works/k8s/scope.yaml?k8s-version=$(kubectl version | base64 | tr -d '\n')"

墙内安装kubernetes教程

全程不翻墙!

btw:推荐weave scope,用过以后,就会觉得我们开发的这些管控,太low了。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

众媒时代

众媒时代

腾讯传媒研究 / 中信出版集团股份有限公司 / 2016-3-1 / CNY 52.00

众媒时代,就是一个大众参与的媒体时代。互联网将传统媒体垄断而单一的传播方式彻底颠覆。人人都可以通过互联网成为内容的制造者、传播者。每个人都是媒体,人是种子,媒体变成了土壤。 当我们的信息入口被朋友圈霸占,当我们的眼睛只看得到10W+,当我们不可抑制地沉浸在一次次的“技术狂欢”中,当人人都可以举起手机直播突发现场,当未来的头条由机器人说了算……内容正生生不息地以各种可能的形式出现,我们正彻头彻......一起来看看 《众媒时代》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具