使用阿里云和gcr.azk8s.cn镜像安装Kubernetes (K8s)
由于墙的原因,k8s.gcr.io无法从国内访问,因此在安装Kubernetes时需要使用到国内的镜像。本文讲解使用kubeadm进行安装(官网推荐),以下为安装步骤,个人在Ubuntu 16(xenial)系统测试通过
1,安装Docker
2,安装kubeadm命令
请根据你的系统版本配置镜像
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
sudo apt-add-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"
apt-get update
apt-get install -y kubelet kubeadm kubectl
3,kubeadm init
kubeadm init --pod-network-cidr=10.244.0.0/16
此命令会检测系统环境,然后给出许多错误提示,以下为每种错误的解决办法。你需要反复执行此命令直到没有错误提示为止。
3.1 提示需要关闭swap
sudo swapoff -a
vi /etc/fstab,然后在swap前面加#
#使用命令 free -m 校验一下swap是否关闭了
3.2 提示关闭SELinux
# 临时关闭
setenforce 0
# 永久关闭
vi /etc/selinux/config
#将SELINUX=enforcing改为SELINUX=disabled
#设置后需要重启服务器才能生效
3.3 提示cgroupdriver错误
vi /etc/docker/daemon.json
# json文件格式如下:
{
"exec-opts":["native.cgroupdriver=systemd"]
}
#然后重启docker
systemctl restart docker
3.4 提示docker镜像下载超时
# 先查看以下需要哪些镜像
kubeadm config images list
使用下面的脚本进行下载
#/bin/bash
LIST=$(kubeadm config images list | grep k8s.gcr.io/)
for image in $LIST
do
echo "required: "$image
china="gcr.azk8s.cn/google_containers/"${image:11}
echo "downloading: "$china
docker pull $china
docker tag $china $image
docker rmi $china
done
4. 配置kubectl
第三步执行成功后,系统会有以下提示命令:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
请按此命令进行操作,然后执行:
kubectl get nodes
会显示当前集群的节点
5. 安装网络组件flannel
官方命令:
sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
这个yml中引用的docker镜像国内下载不动,需要配置国内镜像,使用以下脚本:
#/bin/bash
if [[ ! -e kube-flannel.yml ]]
then
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
fi
LIST=$(cat kube-flannel.yml | grep image | awk -F 'image:' '{print $2}')
for image in $LIST
do
echo "require: "$image
china="quay.mirrors.ustc.edu.cn/"${image:8}
echo "downloading: "$china
docker pull $china
docker tag $china $image
docker rmi $china
done
网络组件安装速度很慢,需要耐心等待,也可以使用下文的命令进行查看
6. 查看Pods状态
kubectl get pods --all-namespaces
7. Dashboard
7.1 安装Dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
版本可能过时了,请点击到github查找最新地址: https://github.com/kubernetes/dashboard
7.2 启动代理访问
kubectl proxy --accept-hosts='^.*^' --address='0.0.0.0'
7.3 在浏览器中访问
在浏览器中打开下面的地址:
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
发现需要密码才能登录,使用下面的方法查找密码
7.4 查看Dashboard登录密码
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
如果没有结果输出,请参考官方文档创建一个用户:https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md