基于上篇文章关于docker的安装,如果docker的安装过程已经完成,那么接下来我们对k8s进行安装
2.0 国内的源安装kubeadm、kubectl、kubelet
2.1更新镜像源
设置为阿里云镜像,安装ubuntu-16.04.6 kubernetes
$ sudo apt-get update && apt-getinstall -y apt-transport-https
$ curl -shttps://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
$ at </etc/apt/sources.list.d/kubernetes.list
debhttps://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
$ apt-get update
2.2 查看kubectl镜像源可安装版本
$ apt-cache policy kubectl
如图所示:
标红1:
Installed :1.14.0.00 表示已经安装的版本
Candidate :1.14.0.00 表示候选项,及如果不指定安装版本则默认为最新版本
2.3 docker下载kuberbetes镜像
1查看kubernetes依赖版本
$ kubeadm version
2:docker pull如上指定的版本寄了
docker pullregistry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver: 1.13.5
docker pullregistry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager: 1.13.5
docker pullregistry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler: 1.13.5
docker pullregistry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy: 1.13.5
docker pullregistry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.2.24
docker pullregistry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.2.6
3:修改docker 上一步pull下来的docker镜像的tag,打标签的原因是kubeadm只认k8s.gcr.io的镜像
$ docker tagregistry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.13.5k8s.gcr.io/kube-scheduler: 1.13.5
$:docker tagregistry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager: v1.13.5 k8s.gcr.io/kube-controller-manager: v1.13.5
$:docker tagregistry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver: v1.13.5k8s.gcr.io/kube-apiserver: v1.13.5
$:docker tagregistry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy: v1.13.5k8s.gcr.io/kube-proxy: v1.13.5
$:docker tagregistry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1k8s.gcr.io/pause:3.1
$:docker tagregistry.cn-hangzhou.aliyuncs.com/google_containers/etcd: 3.2.24k8s.gcr.io/etcd:3.2.24
$:docker tagregistry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.2.6k8s.gcr.io/coredns:1.2.6
2.3 安装kubernetes指定版本
$ sudo apt-get install -y kubelet=1.13.5-00kubeadm=1.13.5-00 kubectl=1.13.5-00
备注1:如果此处不指定安装版本,即如下:
$ sudo apt-get install -y kubelet kubeadmkubectl
则默认安装为最新版本。
备注2:
Kubernetes在安装过程中如果版本第一1.10,在安装过程中需要多加上kubernetes-cni,即kubernetes网络信息配置。
2.4 kubernetes初始化
$ sudo kubeadm init --kubernetes-version=1.13.5-00--pod-network-cidr=192.168.0.0/16 --ignore-preflight-errors=NumCPU
备注;
指定 Pod 网络的范围。Kubernetes 支持多种网络方案,而且不同网络方案对 --pod-network-cidr 有自己的要求,这里设置为 192.168.0.0/16 是因为我们将使用 flannel 网络方案,必须设置成这个CIDR。
另外,还可以加上 --apiserver-advertise-address 参数,该参数指明将使用master上哪个interface与cluster的其他节点通信。
如看到: 即表示安装成功:
2.5 隔离主节点
默认情况下,出于安全的考虑,并不会在主节点上运行pod,如果你想在主节点上运行pod,比如:运行一个单机版的kubernetes集群时,可运行下面的命令把master也作为一个节点
$ kubectl taintnodes --all node-role.kubernetes.io/master-
这时候查看master一直是NotReady状态,原因是网络插件没有安装,比如calico
解决办法:
1:安装集群网络插件Weave
$curl -L "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version |base64 | tr -d '\n')" > weave.yaml
2:配置weave.yaml文件
配置如下图:
添加:两个参数
-name : IPALLOC_RANGE
value: 192.168.57.0/20
2.6 初始化完成配置
执行如下命令:
$ kubectlget nodes
或者
$kubectl get pods –all-namespaces
出现如下结果:
解决办法:
1:sudo swapoff–a 确认关闭虚拟内存
2: 配置kubernetes
$ mkdir -p$HOME/.kube
$ cp -i/etc/kubernetes/admin.conf $HOME/.kube/config
$ chown $(id-u):$(id -g) $HOME/.kube/config
3:至此问题解决 , 重新执行上面的命令,看到各个pod运行状况
2.6 验证安装完成
1 – 可以在浏览器访问 http://192.168.57.134:6443/
2- 也可下载gitlab的hello-kubernetes
1:下载地址如下:https://github.com/paulbouwer/hello-kubernetes
2:找到下载目录
执行$ kubectl apply -f hello-kubernetes.yaml
使其生效
3:外网访问
http://apiserveraddress/api/v1/namespaces/namespace_name/services/service_name:[port_name]/proxy
参考引用:
https://kubernetes.io/zh/docs/setup/independent/install-kubeadm/
https://github.com/maguowei/kubernetes-for-china
https://github.com/ylzyqt/kubernetes-integration/blob/master/install/install.md