继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

利用 kubeadm 安装 kubernetes 集群

慕村9548890
关注TA
已关注
手记 1296
粉丝 227
获赞 991

kubeadm 的引入极大的简化了 kubernetes 集群的安装步骤。以下步骤已在腾讯云上进行验证,希望能对大家有所帮助。

环境准备

centos7.2

切换 k8s yum 源

vim /etc/yum.repos.d/kubernetes.repo# 写入以下内容[kuberneten]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
        http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

缓存生效:

yum makecache

安装 kubeadm 和相关工具

yum install -y docker kubelet kubeadm kubectl kubernetes-cni

以下是我的安装版本:

webp

安装版本

查看安装的版本:

kubectl version

webp

kubectl version

启动 docker 和 kubelet 服务:

systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet

下载相关镜像

kubeadm 默认下载的镜像都是在 gcr.io 上的,国内的网络环境不能访问,我们可以先下下来,然后自己打tag。

# 查看 kubeadm 会用到的镜像(以 1.11.3 为例)kubeadm config images list

webp

kubeadm config images list

使用如下命令拉取镜像,并打tag。

docker pull docker.io/mirrorgooglecontainers/kube-apiserver-amd64:v1.11.3
docker tag docker.io/mirrorgooglecontainers/kube-apiserver-amd64:v1.11.3 k8s.gcr.io/kube-apiserver-amd64:v1.11.3

docker pull docker.io/mirrorgooglecontainers/kube-controller-manager-amd64:v1.11.3
docker tag docker.io/mirrorgooglecontainers/kube-controller-manager-amd64:v1.11.3 k8s.gcr.io/kube-controller-manager-amd64:v1.11.3

docker pull docker.io/mirrorgooglecontainers/kube-scheduler-amd64:v1.11.3
docker tag docker.io/mirrorgooglecontainers/kube-scheduler-amd64:v1.11.3 k8s.gcr.io/kube-scheduler-amd64:v1.11.3

docker pull docker.io/mirrorgooglecontainers/kube-proxy-amd64:v1.11.3
docker tag docker.io/mirrorgooglecontainers/kube-proxy-amd64:v1.11.3 k8s.gcr.io/kube-proxy-amd64:v1.11.3

docker pull docker.io/mirrorgooglecontainers/pause-amd64:3.1
docker tag docker.io/mirrorgooglecontainers/pause-amd64:3.1 k8s.gcr.io/pause:3.1

docker pull docker.io/mirrorgooglecontainers/etcd-amd64:3.2.18
docker tag docker.io/mirrorgooglecontainers/etcd-amd64:3.2.18 k8s.gcr.io/etcd-amd64:3.2.18

docker pull docker.io/coredns/coredns:1.1.3
docker tag docker.io/coredns/coredns:1.1.3 k8s.gcr.io/coredns:1.1.3

初始化

kubeadm init  --kubernetes-version=1.11.3  --pod-network-cidr=10.244.0.0/16

看到如下信息,表明已经安装成功。

webp

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 get node 命令,发现 master 节点的状态为 NotReady。我们需要安装 cni 网络插件。

# 请注意 flannel 的版本问题kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/c5d10c8/Documentation/kube-flannel.yml

其他的网络插件安装方法可以参见 k8s 官网 或者 这篇文章

安装 Node,加入集群

新节点的环境安装,可以参见本文的 安装 kubeadm 和相关工具 一节。
在节点上执行,以加入集群:

# 注意把 YOURIP、YOURTOKEN、YOURHASH 替换成自己的# 具体命令可以参见 kubeadm init 之后最后一行的输出kubeadm join YOURIP --token YOURTOKEN --discovery-token-ca-cert-hash YOURHASH

Master 节点默认不参与工作负载,可以执行下面的命令来搭建一个 all-in-one 的 kubernetes 环境。

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

执行 kubectl get nodes 可以查看节点状态。

可能遇到的问题

1. hostname

在执行 kubeadm config images list 或者 kubeadm init 的时候可能会遇见下面的错误:

name: Invalid value: "vm_0_8_centos": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')

原因是 hostname 和 DNS 的解析规则不匹配,改掉自己的hostname就好了。

2. kubeadm init

在 执行 kubeadm init 的时候可能会遇到下面的问题:

No internet connection is available so the kubelet cannot pull or find the following control plane images:

原因是不能从 k8s.gcr.io 上拉取到镜像,可以参见前面拉取镜像的命令。
如果本地已经有需要的镜像,并且已经打好正确的 tag,仍然出现上面的问题。一个可能的原因是:在宿主机上开启了代理(ss 等),关掉就好了。

3. kube-flannel

可能会出现 kube-flannel CrashLoopBackOff 的错误,笔者遇到的情况是 flannel 的版本不对,修正后就好了。



作者:RuiWang14
链接:https://www.jianshu.com/p/f9a54e553ce4


打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP