Kubernetes系列——使用kubeadmin 安装集群

举报
郁唯xiaolin 发表于 2021/02/07 16:50:13 2021/02/07
【摘要】 kubernetes的安装方式有很多种,比如二进制安装、kubeadm、minikube等,本文要介绍的是kubeadm的安装方式

简介:
kubernetes的安装方式有很多种,比如二进制安装、kubeadm、minikube等,本文要介绍的是kubeadm的安装方式

一,安装前准备

1、首先需要安装docker-ce

请参考文章Centos7 安装docker-ce、docker-compose以及配置docker镜像加速这篇,里面有详细的过程。

2、安装net-tools和其他工具

这些工具可能在安装docker的时候,上述命令都已经执行过了

yum install -y net-tools yum-utils device-mapper-persistent-data lvm2

3、关闭防火墙等

#关闭firewall防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭selinux
getenforce #查看是否关闭
setenforce 0 (-1)#这个地方0和-1 这两个都可以的。
#修改配置文件保证开机不自启selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

4、修改主机名

hostnamectl set-hostname master
##根据自己的hostname 与ip的关系,将集群的所有都写入每台机器的这个文件里面。
cat <<EOF >>/etc/hosts  
192.168.1.10 master    
192.168.1.11 node1     
192.168.1.12 node2     
EOF

5、配置内核以及swap关闭

hostnamectl set-hostname master
##根据自己的hostname 与ip的关系,将集群的所有都写入每台机器的这个文件里面。
cat <<EOF >>/etc/hosts  
192.168.1.10 master    
192.168.1.11 node1     
192.168.1.12 node2     
EOF

二、安装kubernetes

1、添加华为云镜像源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://repo.huaweicloud.com/kubernetes/yum/repos/kubernetes-el7-$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://repo.huaweicloud.com/kubernetes/yum/doc/yum-key.gpg https://repo.huaweicloud.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
#若您使用的yum中变量 $basearch 无法解析, 请把第二步配置文件中的$basearch修改为相应系统架构
#由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用 yum install -y --nogpgcheck kubelet kubeadm kubectl 安装

ps:其实有很多源可以使用,比如清华源站,163,华中科大,阿里源等,自行选择吧。

2、安装kubelet kubeadm kubectl,并启动kubelet

yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

安装完成修改一些配置,可以先不用做以下两个,忘记在哪儿看的,解决什么问题的啦。

vim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
#以下两项
update KUBELET_CGROUP_ARGS=--cgroup-driver=systemd to KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs
 Environment="KUBELET_CADVISOR_ARGS=--cadvisor-port=4194"

3、初始化master的节点

kubeadm init --apiserver-advertise-address=10.0.200.193 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.19.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
#上面的命令中,--kubenets-version要对应真是版本的,--pod-network-cidr需要自己想一个网段,--apiserver-advertise-address这个master的ip,即当前master的IP

#注意:如果kubeadm init出现问题(可能是之前初始化过,或者是本次初始化参数有问题导致最后是败了),一定要用kubeadm reset这个命令重置下,他会自动清理本次初始化产生的垃圾文件。

此时如果初始化成功会有类似如下提示的回显:

Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.180.202:6443 --token f4jf1v.tzggw1rar66y5pw7 \
    --discovery-token-ca-cert-hash sha256:de7a4f7ec0cf3a24e8108c9ed0a069706cb0bb3bca90e66aed3ca0582b3e4d99

在master节点机器上面执行以下命令(对,你没看错就是从上面master成功的地方抄的代码):

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

4、node节点加入集群

在node节点执行以下命令(对,你没看错还是从上面master成功的地方抄的代码):

kubeadm join 192.168.1.186:6443 --token wdibdm.xrrl531c5qxbe0g7   --discovery-token-ca-cert-hash sha256:de21e08effca7e3170ccb7815ccfed4703196b032ba4a2d19f160d3bd77a9299

如果成功了会看到下图

202009242018252548838.png


然后再master节点执行命令查看node情况;

 kubectl get nodes##查看节点的状态

202009242019328233549.png

发现“STATUS”这个地方都显示“NoteReady”,是因为网络组件没有安装导致的。

5、配置添加网络组件

组件flannel可以通过https://github.com/coreos/flannel 中获取,在master节点中执行以下命令安装flannel组件

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
##安装完成,在master节点执行命令查看flannel是否被拉下来
docker image ls
#如果能查到,表示已经拉取下来了
##执行命令查看所有名称空间的pod,查看flannel是否正常启动
kubectl get pods --all-namespaces
如果看到flannel的状态(STATUS)是Running状态表示能正常启动,否则需要使用journalctl -f 这个命令动态查看报错。也可以时候用docker logs 这个命令查看报错

安装了网络组件之后,再次执行查看所有的node状态,就可以看到如下:


202009242020521299894.png

看到状态是Ready状态。
PS:如果安装了网络组件,还是NotReady的现象,这个就得凭自己的功力查看是具体是什么问题。
比如:

docker logs XXXX
比如systemctl status XXX
journalctl -f
docker ps -a ##也有可能出现有一些已经abort或者exited的情况
kubectl get pods -n kube-system -owide | grep test-slave-115##grep后面带的是服pod的name,可以查看是否在running的状态;

Notice:

a、初始化的时候,有一步是需要docker 拉取kube相关的镜像的,此时可以用科学上网的方式直接从官网下载,也可以使用阿里的源,如果不联网的话,上网的机器先把镜像下载下来,再导入需要安装集群的docker,然后再kubeadm init
也可以参考以下链接,这个朋友的也可以用:https://yq.aliyun.com/articles/715792?spm=a2c4e.11155472.0.0.69267d35vOCOl1
b、“hostname “” could not be reached”,这个错误是因为,第一次初始化的时候写的ip不对(–apiserver-advertise-address=192.168.1.186这个地方一定要写master本地的ip),就是按照kubenetes权威指南里面的配置的时候,不明白瞎写会有问题(感觉他们描述的不是很详细,就会导致很多读者出现问题)。做完以上,需要kubeadm reset重新初始化。
3、还有一个证书不匹配的报错,因为第一次初始化的问题,导致修改了配置文件,给的证书后来修改了其他ip ,就不认了,此时需要kubeadm reset重置,然后再初始化。

最后

贴上阿里云关于kubenetes的yum源配置
https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.3e221b11yyTjB7






【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。