又过了好久没写了,主要是近来状况也无聊
一、了解概念(参考)
概念
Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。
Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为 k 和 s 之间有八个字符的关系。 Google 在 2014 年开源了 Kubernetes 项目。 Kubernetes 建立在 Google 大规模运行生产工作负载十几年经验的基础上, 结合了社区中最优秀的想法和实践。
Pod的概念
在K8S中,调度的最小是Pod,一个Pod中可以运行一个或者多个容器。在一个集群中,K8S会为每个Pod都分配一个集群内唯一的IP地址。因为K8S要求底层网络支持集群内的任意节点之间的两个Pod能够直接通信。这些容器共享当前Pod的文件系统和网络。而这些容器之所以能够共享,是因为Pod中有一个叫Pause的根容器,其余的用户业务容器都是共享这个根容器的IP和Volume。所以这些容器之间都可以通过localhost进行通信。
二、安装(参考)
kubernetes的国外安装其实非常简单,国内安装的主要问题在于kubernetes部件所需的官方镜像在 gcr.io(Google Cloud Container Registry)上,很不幸,这个网站被墙了。
添加key
下载这个,有*的话也可以直接 sudo curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
没有*的,下载好之后
sudo apt-key add ./apt-key.gpg sudo apt-get update
添加源
sudo nano /etc/apt/sources.list.d/kubernetes.list
添加 deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
安装
sudo apt-get update sudo apt install kubelet kubernetes-cni kubeadm docker.io
验证k8s是否安装好即可,直接敲kubectl
+ 回车。
关闭swap
- sudo swapoff -a ,但是重启之后会失效。会导致k8s无法正常运行。
- sudo vim /etc/fstab 将有swap.img那行注释掉,保存即可。
三、初始化Master节点
设置HostName
修改主机名
sudo hostnamectl set-hostname master-node
初始化
方法一(推荐):
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
使用镜像:
kubeadm init --image-repository="registry.cn-hangzhou.aliyuncs.com/google_containers" --pod-network-cidr=10.244.0.0/16
忽略一些报错:
sudo kubeadm init --image-repository="registry.cn-hangzhou.aliyuncs.com/google_containers" --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=SystemVerification --ignore-preflight-errors=Mem
方法二:
首先 kubeadm config images list ,然后新建一个sh文件,内容:
images=( # 下面的镜像应该去除"k8s.gcr.io/"的前缀,版本换成上面获取到的版本 #你刚刚获取的 ) for imageName in ${images[@]} ; do docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName done
![](https://image.shishitao.com:8440/aHR0cHM6Ly9pbWFnZXMuY25ibG9ncy5jb20vT3V0bGluaW5nSW5kaWNhdG9ycy9Db250cmFjdGVkQmxvY2suZ2lm.gif?w=700)
images=( # 下面的镜像应该去除"k8s.gcr.io/"的前缀,版本换成上面获取到的版本 kube-apiserver:v1.12.1 kube-controller-manager:v1.12.1 kube-scheduler:v1.12.1 kube-proxy:v1.12.1 pause:3.1 etcd:3.2.24 coredns:1.2.2 ) for imageName in ${images[@]} ; do docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName done