1.安装docker
(1)首先更新apt包资源索引
apt-get update
(2)安装软件包
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
(3)添加Docker官方的GPG
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
(4)添加Docker源
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
(5)因网站服务器在境外,故须使用代理或换源,下面首先演示如何添加代理。
编辑代理文件
vim /etc/apt/apt.conf
做如下修改
Acquire::http::proxy "http://username:password@server_ip:port/";
Acquire::https::proxy "https://username:password@server_ip:port/";
Acquire::ftp::proxy "ftp://username:password@server_ip:port/";
Acquire::socks::proxy "socks://username:password@server_ip:port/";
其中username和password是代理账号和密码,server_ip是代理服务器地址,port是代理服务器端口。根据自己情况填写。
如果没有条件使用代理,可以进行换源。
备份原有的软件源配置文件sources.list:
cp /etc/apt/sources.list /etc/apt/sources.list.bk
修改sources.list文件
sudo vim /ect/apt/sources.list
换成阿里的镜像源(也可自行寻找其他国内源)
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
更新软件源
sudo apt-get update
(6)安装docker
sudo apt-get update
sudo apt-get install docker-ce=18.06.0~ce~3-0~ubuntu
2.搭建k8s集群
(1)添加GPG
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
若该命令不成功或者执行时间太长则进入其中的链接,下载apt-key.gpg, 然后执行如下命令:
apt-key add apt-key.gpg
(2)添加源
cat </etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
(3)下载kubelet kubeadm kubectl组件
apt-get update
apt-get install -y kubelet kubeadm kubectl
(4)使用虚拟机再完整克隆两个Ubuntu系统,共计3个节点。
(5)配置IP
编辑/etc/network/interfaces
sudo vim /etc/network/interfaces
将文件改为如下内容(IP地址等内容自行编辑)
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto ens33
iface ens33 inet static
address 192.168.222.22
netmask 255.255.255.0
gateway 192.168.222.222
nameserver 8.8.8.8
ens33为连接名,可以通过ifconfig命令查看。
(6)三个节点选择一个为master,其他分别为node1和node2。
在master上执行初始化命令
kubeadm init --kubernetes-version=v1.15.0 --pod-network-cidr=10.244.0.0/16
如提示镜像无法下载,则需要手动下载镜像。
通过下列命令拉取相关镜像
docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.15.0
docker pull mirrorgooglecontainers/kube-controller-manager-amd64:v1.15.0
docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.15.0
docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.15.0
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd-amd64:3.2.18
docker pull coredns/coredns:1.3.0
通过docker tag命令来修改镜像的标签
docker tag docker.io/mirrorgooglecontainers/kube-proxy-amd64:v1.15.0 k8s.gcr.io/kube-proxy-amd64:v1.15.0
docker tag docker.io/mirrorgooglecontainers/kube-scheduler-amd64:v1.15.0 k8s.gcr.io/kube-scheduler-amd64:v1.15.0
docker tag docker.io/mirrorgooglecontainers/kube-apiserver-amd64:v1.15.0 k8s.gcr.io/kube-apiserver-amd64:v1.15.0
docker tag docker.io/mirrorgooglecontainers/kube-controller-manager-amd64:v1.15.0 k8s.gcr.io/kube-controller-manager-amd64:v1.15.0
docker tag docker.io/mirrorgooglecontainers/etcd-amd64:3.2.18 k8s.gcr.io/etcd-amd64:3.2.18
docker tag docker.io/mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag docker.io/coredns/coredns:1.3.0 k8s.gcr.io/coredns:1.3.0
具体版本及标签信息根据之前的报错提示修改。
(7)根据初始化成功信息提示的命令在master上执行部分操作。
注意,此时应切换到普通用户。
(8)添加 k8s-node1 和 k8s-node2
在 k8s-node1 和 k8s-node2 上分别执行如下命令,将其注册到 Cluster 中
kubeadm join --token d38a01.13sd654sdf546d80 192.168.56.105:6443
这里的 --token 来自前面 kubeadm init 输出初始化成功后的提示,如果当时没有记录下来可以通过 kubeadm token list 查看。
(9)查看节点的状态
kubectl get nodes
无论这里node1,node2是Ready,还是NotReady,都是节点加入成功了。
(10)节点ready
节点的NotReady,是因为节点需要启动若干组件,这些组件是在 Pod 中运行,需要首先从 google 下载镜像,我们可以通过命令查看 Pod 的状态
kubectl get pod --all-namespaces
Pending、ContainerCreating、ImagePullBackOff 都表明 Pod 没有就绪,Running 才是就绪状态。
查看 Pod 具体情况
kubectl describe pod kube-flannel-ds-v0p3x --namespace=kube-system
根据所提示的错误具体解决。比如在下载 image 时失败,可以自己手动执行 docker pull 去下载这个镜像。
问题解决后,所有 Pod 会处于 Running 状态。
此时,所有的节点都已经 Ready,Kubernetes Cluster 创建成功。