Ubuntu 14.04以上版本安装Docker和k8s
2019-01-03 本文已影响0人
syserr
使用阿里源安装Docker
使用官方脚本自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
手动命令行安装
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
# docker-ce | 17.03.1~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# docker-ce | 17.03.0~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]
安装校验
root@NodeA:~# docker version
Client:
Version: 18.09.0
API version: 1.39
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:48:57 2018
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.0
API version: 1.39 (minimum version 1.12)
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:16:44 2018
OS/Arch: linux/amd64
Experimental: false
使用ustc源安装k8s
使用如下命令将默认的官方源替换为中科大的源:
sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
注意,如果默认安装中文环境的话,官方源为cn.archive.ubuntu.com
将k8s源加入:
deb [arch=amd64] [https://mirrors.ustc.edu.cn/kubernetes/apt](https://mirrors.ustc.edu.cn/kubernetes/apt) kubernetes-xenial main
然后执行apt-get update命令,如果报错NO_PUBLICKEY,则执行如下命令:
PKEY='XXXXXXX'
gpg --keyserver keyserver.ubuntu.com --recv-keys $PKEY
gpg --export --armor $PKEY | sudo apt-key add -
其中XXXXXXXX为提示没有公钥的公钥的最后8位。然后再次执行apt-get update
使用以下命令安装k8s:
sudo apt-get install -y kubelet kubeadm kubectl
启动kubelet:
systemctl enable kubelet && systemctl start kubelet
然后,在master节点上执行以下命令:
kubeadm init --pod-network-cidr=192.168.1.0/16 --kubernetes-version=v1.10.0 --apiserver-advertise-address=192.168.0.139
其中:
含义:
1.选项--pod-network-cidr=192.168.1.0/16表示集群将使用Calico网络,这里需要提前指定Calico的子网范围
2.选项--kubernetes-version=v1.13.1指定K8S版本
3.选项--apiserver-advertise-address表示绑定的网卡IP,注意不可以和pod-network-cidr网段重复,一般为master节点地址
4.若执行kubeadm init出错或强制终止,则再需要执行该命令时,需要先执行kubeadm reset重置
然后,按照命令行提示完成一些初始化动作:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
记录下命令行提示的其它节点加入master需要执行的命令信息:
kubeadm join 192.168.0.139:6443 --token 1w3bof.o8c7h5hdht1cw1te --discovery-token-ca-cert-hash sha256:d8049786b9be67f6464d1a3bcda9b2f7c4c56334285357e10a82efe7d568f61f
在master节点上创建pod网络:
其它问题
关闭swap
swapoff -a
执行kubeadmin init时会出现镜像拉取失败的问题,需要使用下面的命令获取需要安装的镜像列表:
kubeadm config images list
然后执行以下脚本先手动获取镜像:
#!/bin/bash
images=(
kube-apiserver:v1.13.1
kube-controller-manager:v1.13.1
kube-scheduler:v1.13.1
kube-proxy:v1.13.1
pause:3.1
etcd:3.2.24
coredns:1.2.6
)
for imageName in ${images[@]} ; do
docker pull gcrxio/$imageName
docker tag gcrxio/$imageName k8s.gcr.io/$imageName
done