墙内安装kubernetes教程

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

内容简介:去年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了。


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

查看所有标签

猜你喜欢:

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

Effective JavaScript

Effective JavaScript

David Herman / Addison-Wesley Professional / 2012-12-6 / USD 39.99

"It's uncommon to have a programming language wonk who can speak in such comfortable and friendly language as David does. His walk through the syntax and semantics of JavaScript is both charming and h......一起来看看 《Effective JavaScript》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

MD5 加密
MD5 加密

MD5 加密工具