国内环境kubernetes单点安装

解决什么问题

  官网给出了安装k8s的详细教程,当然如果被访问的资源网络可以直达的话,事情会很简单。
  杭州马说过一句和对钱没兴趣一样的话:人生哪能多如意。我信你个鬼,因为阿里云是有家底的。

一亩三分地

  • Ubuntu18.04 PC
  • 国内网络

安装步骤

1、网络准备
  • 加载br_netfilter组件
#查看:
lsmod | grep br_nerfilter
#加载:
sudo modprobe br_nerfilter
  • 使能iptables检测网桥
cat <
2、安装kubeadm,kubelet,kubectl
  • 添加源
    官方文档给的Kubernets源需要外网才可以访问。所以这里要求助于马员外,添加阿里的k8s源。安装的时候,k8s的版本只更新到xenial,但令人欣慰是该版本同样可以支持Ubuntu18.04,Ubuntu20.04。
cat < /etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
EOF
  • 添加gpg key
    添加源之后,执行 apt-get update报错。原因是没有公钥,无法验证签名。添加操作可以执行下面的命令,命令中的BA07F4FB为报错信息中提示的缺失公钥的后8位。
gpg --keyserver keyserver.ubuntu.com --recv-keys  BA07F4FB
gpg --export --armor E084DAB9 | sudo apt-key add -
  • 安装厨房三件套
sudo apt-get install -y kubectl kubeadm kubectl

至此,安装完毕。

禁用swap

部署Kubernets需要先禁用swap。继续了解可以查看相关讨论。

sudo swapoff -a

以上动作是临时禁用,架不住重启。永久禁用可以修改/etc/fstab文件,将/swapfile开头的那行注释。

创建集群

1、镜像准备

因为官方镜像地址在墙的那头,所以我们厚着脸皮再次找到了一位不愿意透露姓氏的马姓先生,偷偷摸摸pull:

kubeadm config images pull --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
sudo kubeadm init --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
2、集群初始化
sudo kubeadm init

配置授权信息

主要是为了保存相关的配置信息在用户目录下,这样不用每次都输入相关的认证信息。

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

这个配置完成后,kubectl就可以用了。

配置网络插件

上面安装成功后如果通过(kubectl --namespace=kube-system get pods)查询kube-system下Pod的运行情况,其中网络相关的Pod都处于Pending的状态,这是因为缺少相关的网络插件,而网络插件有很多个(以下任选一个),可以选择自己需要的,一般本地选择calico即可。在网络插件配置之前,coredns是无法正常启动的。

kubectl apply -f https://docs.projectcalico.org/v3.16/manifests/calico.yaml

查看calico已发布的版本:Calico Releases。这里安装的版本是v1.19.0,所以选择的calico版本是v3.16。该插件的官方安装指南是:Quickstart For Calico Install。
我们需要一个状态来给我们信心,告诉我们master集群已经就绪,就等着我来玷污它。

$ kubectl --namespace=kube-system get pods
NAME                                     READY   STATUS    RESTARTS   AGE
calico-kube-controllers-7d569d95-7pqfj   1/1     Running   1          7d2h
calico-node-dpz6l                        1/1     Running   1          7d2h
coredns-6c76c8bb89-4hg7x                 1/1     Running   1          7d6h
coredns-6c76c8bb89-7w864                 1/1     Running   1          7d6h
etcd-eve                                 1/1     Running   1          7d6h
kube-apiserver-eve                       1/1     Running   1          7d6h
kube-controller-manager-eve              1/1     Running   1          7d6h
kube-proxy-f94bl                         1/1     Running   1          7d6h
kube-scheduler-eve                       1/1     Running   1          7d6h

使用master,单点就是master。

因为master默认是不允许调度的,但是在单点场景下node只有一个,这就需要master去履行worker的职责去运行pod。所以在这里,我们只能很难为情得玷污了它的纯洁(taint)。

kubectl taint nodes --all node-role.kubernetes.io/master-

至此。

see also:
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
https://zhuanlan.zhihu.com/p/46341911

你可能感兴趣的:(国内环境kubernetes单点安装)