注意以下命令,需要切换到 root 后运行
系统:ubuntu 16.04
安装 docker
首先确定已经安装完成 docker,如果没有安装可以使用以下脚本快速安装并配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| curl -fsSL https://get.docker.com | sudo sh -s -- --mirror Aliyun sudo usermod -aG docker $USER sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "registry-mirrors": ["https://t9ab0rkd.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
|
安装 k8s 套件
1 2 3 4 5 6 7 8 9 10 11 12
| # 添加并信任APT证书 curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
# 添加源地址 add-apt-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"
# 更新源并安装最新版 kubenetes sudo apt update && apt install -y kubelet kubeadm kubectl
# 添加 completion,最好放入 .bashrc 中 source <(kubectl completion bash) source <(kubeadm completion bash)
|
关闭 swap
为了性能考虑,k8s 需要关闭 swap 功能,然后重启主机。
在 /etc/fstab
中找到带有 swap
的那一行,注释掉。
1 2
| $ vim /etc/fstab # UUID=9224d95f-cd87-4b56-b249-3dc7de4491d3 none swap sw 0 0
|
启动 master 节点:
1
| kubeadm init --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'
|
--image-repository
指定控制平面容器镜像地址,这里使用aliyun镜像,而不是默认的 k8s.gcr.io,这样就能避免下载失败。
如果 init 失败,检查是否关闭 swap、 用户是否为 root 以及是否下载好核心组件镜像(可能得网络的问题)、是否为至少 2G 内存,然后运行 kubeadm reset
接着再 kubeadm init
。
配置读取路径
1 2
| # append to .bashrc export KUBECONFIG=/etc/kubernetes/admin.conf
|
安装网络插件
1
| kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
|
加入 worker
worker 节点加入 master,使用 kubeadm init 最后提示的命令在 worker 上运行
1 2 3 4
| kubeadm join 192.168.199.117:6443 \ --token y8l6qv.oj2hxua9szguei23 \ --discovery-token-ca-cert-hash \ sha256:bae71d8fb4a26c5f29a6df2db037e08e581fcb344ff85089a603e3eeb9d6d26f
|
其中 --token
是临时的生成,可以通过下面命令获取
1 2 3
| $ kubeadm token list TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS y8l6qv.oj2hxua9szguei23 23h 2019-09-09T12:04:27+08:00 authentication,signing The default bootstrap token generated by 'kubeadm init'. system:bootstrappers:kubeadm:default-node-token
|
这个 token
24小时后会自动过期,不过可以再次获取
1 2
| $ kubeadm token create czlboe.16mkdt47tkhd0714
|
而 --discovery-token-ca-cert-hash
指的是 CA 证书的哈希值,那么可以使用这种方式获取:
1 2
| $ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | sha256sum | awk '{print $1}' 3e77f845edf944d76234a6d78dde3e5bae3e50261362b1d8cc8d025ac97136b0
|
查看 nodes
在 master 节点上运行
minikube国内源
在minikube文档页面,选择操作系统,然后下载 minikube,注意版本号。
在k8s-kubectl页面下载 kubectl 并放在$PATH下,注意版本号。
下载安装 virtualbox。
启动命令:
1 2 3 4 5 6
| minikube start \ --vm-driver=virtualbox \ --image-mirror-country=cn \ --registry-mirror='https://t9ab0rkd.mirror.aliyuncs.com' \ --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' \ --iso-url='https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.5.1.iso'
|
–image-mirror-country cn 将缺省利用 registry.cn-hangzhou.aliyuncs.com/google_containers 作为安装Kubernetes的容器镜像仓库,
–iso-url=* 利用阿里云的镜像地址下载相应的 .iso 文件
–cpus=2: 为minikube虚拟机分配CPU核数
–memory=2000mb: 为minikube虚拟机分配内存数
–kubernetes-version=*: minikube 虚拟机将使用的 kubernetes 版本
官方源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| # k8s curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
# docker curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# apt安装 apt-get update && apt-get install docker-ce kubeadm
cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF
mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload systemctl restart docker
|