CentOS   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Centos7.6使用kubeadm快速部署kubernetes集群大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

Centos7.6 使用kubeadm快速部署kubernetes v1.12.1集群 1.1.服务器规划 主机名 内网ip地址 角色 kubernetes01 10.5.0.206 Master kubernetes02 10.5.0.207 Node kubernetes03 10.5.0.208 Node kubernetes04 10.5.0.209 Node kubernetes05 1

Centos7.6 使用kubeadm快速部署kubernetes v1.12.1集群

1.1.服务器规划

@H_340_35@master
主机名 内网ip地址 角色
kubernetes01 10.5.0.206
kubernetes02 10.5.0.207 Node
kubernetes03 10.5.0.208 Node
kubernetes04 10.5.0.209 Node
kubernetes05 10.5.0.210 Node
kubernetes06 10.5.0.213 Node
kubernetes07 10.5.0.214 Node
kubernetes08 10.5.0.218 Node
kubernetes09 10.5.0.219 Node
kubernetES10 10.5.0.231 Node

1.2.Master节点

1.2.1.确认系统版本,修改系统主机名
1.查看系统版本
[[email protected] ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (CorE)
2.修改主机名
hostnamectl set-hostname kubernetes01
别忘了改/etc/hosts文件
[[email protected] ~]# cat /etc/hosts
127.0.0.1       localhost       localhost.localdomain   localhost4      localhost4.localdomain4
::1     localhost       localhost.localdomain   localhost6      localhost6.localdomain6
10.5.0.206 kubernetes01
1.2.2.关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
1.2.3.检查selinux是关闭
[[email protected] ~]# setenforce 0
setenforce: SELinux is disabled
1.2.4.提前处理路由问题
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iP6tables = 1
net.bridge.bridge-nf-call-iptables = 1    
vm.swappiness=0
sysctl --system
1.2.5.安装docker-ce,一定要注意docker-ce版本和kubernetes版本的兼容性!
[[email protected] ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
[[email protected] ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[[email protected] ~]# yum install docker-ce-18.06.1.ce
[[email protected] ~]# service docker start 
[[email protected] ~]# docker --version 
Docker version 18.06.1-ce,build e68fc7a
1.2.6.安装kubelet kubeadm kubectl注意版本1.12.1!
1.配置yum源
[[email protected] ~]# cat /etc/yum.repos.d/kubernetes.repo 
[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
enable=1
2.yum安装
[[email protected] ~]# yum install kubelet-1.12.1 kubeadm-1.12.1  kubectl-1.12.1
1.2.7.检查版本
[[email protected] ~]# kubeadm version 
kubeadm version: &version.Info{Major:"1",Minor:"12",GitVersion:"v1.12.1",GitCommit:"4ed3216f3ec431b140b1d899130a69fc671678f4",GitTreeState:"clean",BuildDate:"2018-10-05T16:43:08Z",GoVersion:"go1.10.4",Compiler:"gc",Platform:"linux/amd64"}
[[email protected] ~]# kubectl version
Client Version: version.Info{Major:"1",BuildDate:"2018-10-05T16:46:06Z",Platform:"linux/amd64"}
Server Version: version.Info{Major:"1",BuildDate:"2018-10-05T16:36:14Z",Platform:"linux/amd64"}

该版本kubeadm需要的kubernetes组件的docker镜像版本:
k8s.gcr.io/kube-apiserver:v1.12.1
k8s.gcr.io/kube-controller-manager:v1.12.1
k8s.gcr.io/kube-scheduler:v1.12.1
k8s.gcr.io/kube-proxy:v1.12.1
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.2
1.2.8.下载kubernetes相关组件的docker镜像
这里由于国内网络环境的特殊性,选择使用脚本另辟蹊径。
[[email protected] ~]# vim pull_k8s_images.sh 
#!/bin/bash
images=(kube-proxy:v1.12.1 kube-scheduler:v1.12.1 kube-controller-manager:v1.12.1
kube-apiserver:v1.12.1
etcd:3.2.24 coredns:1.2.2 pause:3.1 )
for imagename in ${images[@]} ; do
docker pull anjia0532/google-containers.$imagename
docker tag anjia0532/google-containers.$imagename k8s.gcr.io/$imagename
docker rmi anjia0532/google-containers.$imagename
done
1.2.9.查看镜像信息
[[email protected] ~]# docker images 
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/coredns                   1.2.6               f59dcacceff4        4 weeks ago         40MB
k8s.gcr.io/kube-proxy                v1.12.1             61afff57f010        2 months ago        96.6MB
k8s.gcr.io/kube-scheduler            v1.12.1             d773ad20fd80        2 months ago        58.3MB
k8s.gcr.io/kube-controller-manager   v1.12.1             aa2dd57c7329        2 months ago        164MB
k8s.gcr.io/kube-apiserver            v1.12.1             dcb029b5e3ad        2 months ago        194MB
k8s.gcr.io/etcd                      3.2.24              3cab8e1b9802        2 months ago        220MB
k8s.gcr.io/coredns                   1.2.2               367cdc8433a4        3 months ago        39.2MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        11 months ago       742kB
1.2.10.使用kubeadm部署kubernetes集群master节点

为什么要用kubeadm,因为它是kubernetes原生的部署工具,并且简单快捷,部署出来的集群环境和一个跟二进制文件搭建起来的集群环境基本上没什么区别。

[[email protected] ~]# cat kubeadm.yaml 
apiVersion: kubeadm.k8s.io/v1alpha3
kind: InitConfiguration
controlleRMANagerExtraArgs:
  horizontal-pod-autoscaler-use-rest-clients: "true"
  horizontal-pod-autoscaler-sync-period: "10s"
  node-monitor-grace-period: "10s"
apiServerExtraArgs:
  runtime-config: "api/all=true"
kubernetesVersion: "v1.12.1"
[[email protected] ~]# kubeadm init --config kubeadm.yaml

安装成功后看到提示算是完成了Kubernetes Master的部署了!
Your Kubernetes master 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/

You can Now join any number of machines by running the following on each node
as root:

  kubeadm join 10.5.0.206:6443 --token l8m3xp.y1w2u4psngfqliiv --discovery-token-ca-cert-hash sha256:3338de637d46b4d24e7295be4b4fa9acce099a48ce818e9052a9319fca74260c

在开始使用集群之前,需要以常规用户身份运行以下命令: 上面那段英文!
so
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
1.2.11.健康检查
[[email protected] ~]# kubectl get cs
NAME                 STATUS    messaGE              ERROR
controller-manager   Healthy   ok                   
scheduler            Healthy   ok                   
etcd-0               Healthy   {"health": "true"}   
查看节点状态信息
[[email protected] ~]# kubectl get nodes
NAME                STATUS     ROLES    AGE   VERSION
kubernetes-master   NotReady   master   13m   v1.12.1
1.2.12.部署网络插件weave
[[email protected] ~]# kubectl apply -f https://git.io/weave-kube-1.6
serviceaccount/weave-net created
clusterrole.rBAC.authorization.k8s.io/weave-net created
clusterrolebinding.rBAC.authorization.k8s.io/weave-net created
role.rBAC.authorization.k8s.io/weave-net created
rolebinding.rBAC.authorization.k8s.io/weave-net created
daemonset.extensions/weave-net created

再次查看节点状态信息,STATUS已经变了,因为我们部署了网络
[[email protected] ~]# kubectl get nodes
NAME                STATUS   ROLES    AGE   VERSION
kubernetes-master   Ready    master   21m   v1.12.1
1.2.13查看这个节点上相关pod的状态
[[email protected] ~]# kubectl get pods -n kube-system -l name=weave-net -o wide
NAME              READY   STATUS    RESTARTS   AGE     IP           NODE                NOMINATED NODE
weave-net-vhs56   2/2     Running   0          6m59s   10.5.0.206   kubernetes-master   <none>
1.2.14部署可视化插件
拉取镜像
docker pull anjia0532/google-containers.kubernetes-dashboard-amd64:v1.10.0
docker tag  anjia0532/google-containers.kubernetes-dashboard-amd64:v1.10.0   k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
docker rmi  anjia0532/google-containers.kubernetes-dashboard-amd64:v1.10.0 
修改yaml文件,后期通过token登陆,这里需要注意暴露了30001端口这在生产环境是极不安全的!
[[email protected] ~]# cat kubernetes-dashboard.yaml 
kind: service
apiVersion: v1
Metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001
  SELEctor:
    k8s-app: kubernetes-dashboard
部署可视化插件
[[email protected] ~]# kubectl apply -f   kubernetes-dashboard.yaml
查看插件对应的Pod的状态
[[email protected] ~]# kubectl get pods -n kube-system |  grep dash
kubernetes-dashboard-77fd78f978-w4twx       1/1     Running   0          106m

获取token值登陆可视化控制面板
kubectl -n kube-system describe $(kubectl -n kube-system get secret -n kube-system -o name | grep namespacE) | grep token
用token值访问https://10.5.0.206:30001 就可以登陆控制面板了!

1.3.Node节点

使用ansible playbook配合sHell脚本安装
cat install_dockerce.sh 
#!/bin/bash
yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce-18.06.1.ce

cat install_kubectl.sh
#!/bin/bash
# install kubelet and kubeadm and kubectls
yum -y install kubelet-1.12.1 kubeadm-1.12.1  kubectl-1.12.1
# install kube-proxy and pause
images=(kube-proxy:v1.12.1 pause:3.1 )
for imagename in ${images[@]} ; do
docker pull anjia0532/google-containers.$imagename
docker tag anjia0532/google-containers.$imagename k8s.gcr.io/$imagename
docker rmi anjia0532/google-containers.$imagename
done
# join cluster
kubeadm join 10.5.0.206:6443 --token l8m3xp.y1w2u4psngfqliiv --discovery-token-ca-cert-hash sha256:3338de637d46b4d24e7295be4b4fa9acce099a48ce818e9052a9319fca74260c

1.4其它

我遇到的一些问题
节点报错[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]:或者是从k8s.gcr.io拉取镜像失败,都很好解决

Centos7.6使用kubeadm快速部署kubernetes集群

建议生产环境别用这种方式安装,极不安全!!!

大佬总结

以上是大佬教程为你收集整理的Centos7.6使用kubeadm快速部署kubernetes集群全部内容,希望文章能够帮你解决Centos7.6使用kubeadm快速部署kubernetes集群所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。