大佬教程收集整理的这篇文章主要介绍了Centos7.6使用kubeadm快速部署kubernetes集群,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
主机名 | 内网ip地址 | 角色 |
---|---|---|
kubernetes01 | 10.5.0.206 | @H_340_35@master|
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.查看系统版本 [[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
systemctl stop firewalld && systemctl disable firewalld
[[email protected] ~]# setenforce 0 setenforce: SELinux is disabled
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
[[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.配置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
[[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
这里由于国内网络环境的特殊性,选择使用脚本另辟蹊径。 [[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
[[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
为什么要用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
[[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
[[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
[[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>
拉取镜像 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 就可以登陆控制面板了!
使用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
我遇到的一些问题 节点报错[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]:或者是从k8s.gcr.io拉取镜像失败,都很好解决!建议生产环境别用这种方式安装,极不安全!!!
以上是大佬教程为你收集整理的Centos7.6使用kubeadm快速部署kubernetes集群全部内容,希望文章能够帮你解决Centos7.6使用kubeadm快速部署kubernetes集群所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。