本次实验,通过kubeadm来安装一个单节点的k8s环境。
本次实验是在虚拟机上进行,虚拟机的配置如下:
OS | CPU | 内存 | IP |
---|---|---|---|
CentOS Linux release 7.6.1810 (Core) | 2 vCPU | 2G | 172.16.143.171 |
环境准备
安装docker
1 | [kube@kube ~]$ yum update |
关闭Swap
1 | swapoff -a |
安装k8s
配置kubernetes阿里云源
1 | cat <<EOF > /etc/yum.repos.d/kubernetes.repo |
关闭selinux
1 | setenforce 0 |
安装kubeadm, kubelet和kubectl
1 | yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes |
在centos系统上设置iptables
1 | cat <<EOF > /etc/sysctl.d/k8s.conf |
kubeadm默认会从k8s.gcr.io上下载kube的images,但是在国内环境是访问不了这些镜像的,所以可以从aliyun的registry上下载相应的image,然后修改tag,瞒过kubeadm。
先通过下面的命令查看当前需要哪些image
1 | [root@kube ~]# kubeadm config images list |
通过下面的方式可以从阿里云的registry上下载镜像并修改tag
1 | images=( |
初始化集群
1 | [root@kube ~]# kubeadm init |
从上面的结果可以看出k8s master已经初始化成功,k8s推进使用非root用户使用集群,所以下面我们创建一个kube的用户,并配置sudo权限。
1 | useradd kube |
通过visudo给kube用户配置sudo权限1
kube ALL=(ALL) ALL
下面的步骤把k8s的配置拷贝到用户的.kube目录下
1 | mkdir -p $HOME/.kube |
要使用k8s集群,还需要安装网络插件,k8s支持很多网络插件,比如calico,flannel,weave等,下面我们就安装weave网络插件。
配置Weave Net1
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
默认情况下,master node是不会运行容器的,由于本次实验只有一个节点,所以需要设置master node运行容器。
允许Master Node 运行容器1
2[kube@kube ~]$ kubectl taint nodes --all node-role.kubernetes.io/master-
node/kube untainted
这样一个简单的k8s集群就算搭建完成了,通过下面的命令可以看到当前集群中的节点,当前集群中运行的pod。
1 | [kube@kube ~]$ kubectl get node |