k8s集群配置搭建

有关K8S及其依赖的安装,见上一个博客:https://blog.csdn.net/a429367172/article/details/96426149

前期准备

建议以root登录。

需要将节点的防火墙、SElinux和swap分区关闭。

关闭防火墙:

systemctl stop firewalld.service #关闭防火墙
systemctl disable firewalld.service #禁止开机启动
firewall-cmd --state #查看防火墙状态

SElinux关闭:

setenforce 0 #暂时关闭

#永久关闭
vi /etc/selinux/config
修改其中
SELINUX = disabled

关闭swap:

swapoff -a

对于Centos7,需要配置系统内核参数,使通过网桥的流量也进去iptables/netfilter:

vi /etc/sysctl.conf
#加入以下语句:
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1 
net.ipv4.ip_forward=1
#执行如下语句查看配置
sysctl -p

搭建

  1. 启动kubeadm服务:systemctl enable kubelet && systemctl start kubelet
  2. kubeadm init --kubernetes-version=v1.13.0 --pod-network-cidr=192.168.0.0/16 #初始化安装k8s master
  3. 配置kubectl认证信息(Master节点操作)
    export KUBECONFIG=/etc/kubernetes/admin.conf

    也可以直接放到~/.bash_profile

    echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
    source ~/.bash_profile
  4. 安装网络组件Calico: kubectl apply -f \
    https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml    需要注意:使用 watch kubectl get pods --all-namespaces 检查coreDNS运行状态,如果为running则可以继续,如下:
  5. 节点加入集群:
    #创建加入集群的语句
    kubeadm token create --print-join-command
    
    #kubeadm join 192.168.195.148:6443 --token jr7z3k.cbikhpttxj8xs0zz --discovery-token-ca-cert-hash sha256:9ec71a1223a8b1ca1ea035400c73d21bd2a6ebdc032776cbd387ac6e3138ebcb

    首先,在master上创建需要加入集群的语句,然后在每个slave上运行它的输出语句(如上面注释部分,每个人的都不一样),即可加入集群。slave上默认没有安装kubeadm,需要用如下语句安装:

    #配置阿里云镜像
    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    EOF
    yum -y install epel-release
    yum clean all
    yum makecache
    
    #安装kubelet和kubeadm
    yum install -y kubelet-1.13.0 kubeadm-1.13.0

         加入集群的结果如下:

踩坑注意:配置阿里云镜像时,一定要在root用户下运行脚本,用sudo打开的话会显示权限不够,我暂时未找到原因,还是root下吧

问题2:然后使用`watch kubectl get pods --all-namespaces`检查coreDNS运行状态,状态为pend。

用以下命令查看:

解决方法:(用docker安装calico镜像之后,使用如下语句)

kubectl apply -f \
https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml

其中docker安装calico镜像的命令如下:

docker pull zjuzzb/calico-node
docker tag zjuzzb/calico-node quay.io/calico/node:v3.1.4
docker image remove docker.io/zjuzzb/calico-node
docker pull zjuzzb/calico-cni
docker tag zjuzzb/calico-cni quay.io/calico/cni:v3.1.4
docker image remove docker.io/zjuzzb/calico-cni

小测试

接下来,我们可以找一个镜像来部署到我们的k8s上了,源码下载地址为:https://github.com/zjuzzb/http-test/tree/master

我们利用Go语言环境,将源码编译成二进制文件,用docker save命令打包成镜像文件,镜像的下载地址:链接:https://pan.baidu.com/s/1lgMOxPCAT4JLZiaXeRH2-A 
提取码:s4zo 

然后我们利用docker load -i http-test命令,将其加载到docker里面,结果如下:

需要注意的是,后面k8s部署不一定是部署在哪个节点上,所以我是把s1,s2,s3三台机器的docker上都加载了这个镜像。

先将http-test-template.yaml里面的image改成上图版本latest,修改后的结果如下:

修改成功之后,我们利用源码文件夹下写好的autoyaml.sh和autodeploy.sh脚本来部署到k8s上:

#当前目录在http-test目录下
chmod 777 *.sh
./autoyaml.sh 3
./autodeploy.sh 3 #3也可以指定别的数

没有问题的话,运行如下:

接着我们就可以用curl ip:8888来测试我们的部署了:(其中ip是图中标红部分)

运行完毕,我这边可能由于网络原因,导致request收不到,但是基本运行到这里就成功了。

需要注意的是:

当部署pod出问题的时候,最好将原来pod删除,重新部署,利用如下命令:

kubectl get pods --all-namespaces #查看需要重新部署pod的NAME,分别为name1, name2, name3
kubectl delete pods name1 name2 name3 #删除pod
./autodelete.sh 3 #3是你创建的yaml数
./autoyaml.sh 3
./autodeploy.sh 3 #重新部署

注意:三台虚拟机配置好之后,就不要关机了,每次挂起就可以了。一旦重新启动,kubenet配置就有问题了,这时候需要删除节点,重新加入kubenets:

#删除node s2,s3:
#1.在master上执行
kubectl drain s2 --delete-local-data --force --ignore-daemonsets
kubectl delete node s2
kubectl drain s3 --delete-local-data --force --ignore-daemonsets
kubectl delete node s3
kubeadm reset
#2.分别在slave1和slave2上执行
kubeadm reset
#3.重新初始化master
kubeadm init --kubernetes-version=v1.13.0 --pod-network-cidr=192.168.0.0/16
#4.重新部署网络组建
kubectl apply -f \
https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml
#5.生成token
kubeadm token create
#kubeadm join --token aa78f6.8b4cafc8ed26c34f --discovery-token-ca-cert-hash sha256:...
#6.执行token,重新加入
kubeadm join --token aa78f6.8b4cafc8ed26c34f --discovery-token-ca-cert-hash sha256:... #根据自己的来

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值