国内搭建k8s环境
下面演示在国内,在虚拟机ubuntu18.04中利用kubeadm,从零搭建一个有1个master的kubernetes环境一、ubuntu18.04安装及环境配置从官网下载ubuntu18.04的镜像,并使用vmware进行安装,一路默认配置就可以了,安装完毕之后进行如下操作。1. 【非虚拟机不用】设置静态IP和访问外网,这样方便后面使用xshell进行登录,具体配置可以看 《VMw...
下面演示在国内,在虚拟机ubuntu18.04中利用kubeadm,从零搭建一个有1个master的kubernetes环境
一、ubuntu18.04安装及环境配置
从官网下载ubuntu18.04的镜像,并使用vmware进行安装,一路默认配置就可以了,安装完毕之后进行如下操作。
1. 【非虚拟机不用】设置静态IP和访问外网,这样方便后面使用xshell进行登录,具体配置可以看 《VMware下如何实现ubuntu的静态地址设置和外网访问和ssh连接》
2. 修改apt源
vi /etc/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 update
sudo apt upgrade
3. 关闭swap
编辑/etc/fstab
文件,注释掉引用swap的行,保存并重启后输入sudo swapoff -a
即可。
二、软件安装
1. docker安装与配置
sudo apt install docker.io
#配置镜像加速器,参考:https://yq.aliyun.com/articles/29941
#重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
2. 安装kubeadm、kubelet、kubectl
使用国内的镜像源
sudo apt-get update && sudo 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-get update
sudo apt-get install -y kubelet kubeadm kubectl
# 如果需要指定版本可以使用apt install -y kubelet=1.14.5-00
三、k8s镜像处理
国内是不太容易下载k8s.gcr.io站点的镜像的, 使用阿里镜像源拉取进行之后,利用tag重新打标签的方式进行镜像下载困难的处理,脚本如下(代码来自:https://blog.csdn.net/weixin_30456039/article/details/101436638):
#!/bin/bash
# download k8s 1.15.2 images
# get image-list by 'kubeadm config images list --kubernetes-version=v1.15.2'
# gcr.azk8s.cn/google-containers == k8s.gcr.io
#images=(
#kube-apiserver:v1.15.2
#kube-controller-manager:v1.15.2
#kube-scheduler:v1.15.2
#kube-proxy:v1.15.2
#pause:3.1
#etcd:3.3.10
#coredns:1.3.1
#)
if [ $# -ne 1 ];then
echo "please user in: ./`basename $0` KUBERNETES-VERSION"
exit 1
fi
version=$1
images=`kubeadm config images list --kubernetes-version=${version} |awk -F'/' '{print $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
将上述脚本保存为pull.sh
chmod +x pull.sh
./pull.sh v1.16.2
四、k8s安装
1. 安装master节点
sudo kubeadm init --apiserver-advertise-address 192.168.13.182 --kubernetes-version=v1.16.2 --pod-network-cidr=10.244.0.0/16
init 常用主要参数:
- –kubernetes-version: 指定Kubenetes版本,如果不指定该参数,会从google网站下载最新的版本信息。
- –pod-network-cidr: 指定pod网络的IP地址范围,它的值取决于你在下一步选择的哪个网络网络插件,比如我在本文中使用的是 flannel 网络,需要指定为10.244.0.0/16。
- –apiserver-advertise-address: 指定master服务发布的Ip地址,如果不指定,则会自动检测网络接口,通常是内网IP。
安装完成之后记得保存结果
2. 按上述图片中的提示输入三个命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3. 安装网络插件
此时使用kubectl get nodes可以查看到master节点,但是它的状态是notReady,需要安装一个网络插件,毕竟Pod之间是需要网络通信的。
这里我们选择flannel,其yaml文件:https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
通过yaml文件可以知道需要下载quay.io的镜像,可以参考:https://www.ilanni.com/?p=14534,根据上面的网址,我们使用下面的脚本下载镜像
#!/bin/bash
images=(
flannel:v0.11.0-amd64
flannel:v0.11.0-arm64
flannel:v0.11.0-arm
flannel:v0.11.0-ppc64le
flannel:v0.11.0-s390x
)
for imageName in ${images[@]};do
docker pull quay.azk8s.cn/coreos/$imageName
docker tag quay.azk8s.cn/coreos/$imageName quay.io/coreos/$imageName
docker rmi quay.azk8s.cn/coreos/$imageName
done
将上面的脚本 文件保存为pull-quay-io-flannel.sh,执行如下操作
chmod +x pull-quay-io-flannel.sh
./pull-quay-io-flannel.sh
如果还是没有办法下载镜像,可以直接从下面的百度网盘链接下载,里面有一个flannel的amd版本
链接:https://pan.baidu.com/s/1Irfp_Owx0kKGgL4d60Z2Ng
提取码:z9xe
执行如下命令安装flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
插件安装完成后,可以通过检查coredns pod
的运行状态来判断网络插件是否正常运行。等待coredns pod
的状态变成Running,就可以继续添加从节点了。
4. 让master部署节点:https://www.cnblogs.com/RainingNight/p/using-kubeadm-to-create-a-cluster-1-12.html
如果你只部署了一个master结点的话,直接kubectl apply -f 应用的话,会发现无法部署,如下
# busybox.yaml
apiVersion: v1
kind: Pod
metadata:
name: first-pod
labels:
app: bash
tir: backend
spec:
containers:
- name: bash-container
image: docker.io/busybox
imagePullPolicy: IfNotPresent
command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']
#执行如下命令
kubectl apply -f busybox.yaml
#查看部署情况
kubectl get pod
# 你会发现那个pod一直在pending,查看原因
kubectl get pod/first-pod -o yaml
#查看status字段,可以看到 message: '0/1 nodes are available: 1 node(s) had taints that the pod didn''t tolerate.' 所以了让我们的master结点可以部署(毕竟是只有一个结点),我们执行如下操作,去掉master的标签
kubectl taint nodes --all node-role.kubernetes.io/master-
#再度执行
kubectl get pod #可以发现已经running了
链接
1)解决镜像下载的网址:https://blog.csdn.net/weixin_30456039/article/details/101436638、https://www.ilanni.com/?p=14534
2)主要参考:https://tomoyadeng.github.io/blog/2018/10/12/k8s-in-ubuntu18.04/index.html
更多推荐
所有评论(0)