手把手教你搞定K8S集群的安装部署
Kubernetes是一个可移植的,可扩展的开源渠道,用于办理容器化的作业负载和服务,可促进声明式装备和主动化。它具有一个巨大且快速增长的生态体系。Kubernetes的服务,支撑和东西运用得十分广泛。
Kubernetes这个姓名起源于希腊语,意思是梢公或飞行员。Google在2014年开源Kubernetes项目。Kubernetes将超越15年的Google在大规模分娩作业负载方面的经历与社区中最好的主意和实践相结合。
一、环境预备
购买三台阿里集群,并发动,我挑选的体系是
要求机器以下装备
1.体系环境
·+
·Debian9+
·CentOS7
·RedHatEnterpriseLinux(RHEL)7
·Fedora25+
·+
·FlatcarContainerLinux()
2.2G内存或以上
3.2CPU或更多
4.须要能够衔接互联网
5.每个节点须要有仅有的主机名
6.须要敞开部分端口
7.须要禁用Swap功用
敞开端口:
Master
端口
用处
6443*
KubernetesAPIserver
232380
etcdserverclientAPI
10250
kubeletAPI
10251
Kube-scheduler
10252
Kube-controller-manager
Workernode
端口
用处
10250
kubeletAPI
30032767
NodePortServices†
二、装置Docker
装置Docker,设置存储库。作业节点都进行装置
[root@k8s~]sudoyum-config-manager\--add-repo\
启用存储库,如需封闭将参数--enable改为--disable
[root@k8s~]sudoyum-config-manager--enabledocker-ce-test
装置Docker引擎
[root@k8s~]sudosystemctlstartdocker
检测Docker是否正确装置
[root@k8s~]swapoff-a
(2)装备yum源
[root@k8s101~]yuminstall-ykubeletkubeadmkubectl
(4)后去初始化文件
[root@k8s101~]:/google_containerskind:ClusterConfigurationkubernetesVersion::podSubnet:"192.168.0.0/16"dnsDomain::10.96.0.0/12scheduler:{}(6)下载Kubernetes的相关镜像
[root@k8s101~]vim/etc/docker/{"exec-opts":["=systemd"]}[root@k8s101~]systemctldaemon-reload[root@k8s101~]systemctlenabledocker[root@k8s101~]/google_containers--kubernetes-version==192.168.0.0/16(9)执行命令,最终提示装置成功,记下token
:64\--discovery-token-ca-cert-hashsha256:5fae9d62bf7d6e7a7759784aa8585103b82e5a2368ab5e11e2bca8ede6187c8a
(10)依照图片提示,创立k8s用户,将装备文件复制到普通用户下.如果是root则导出
[root@k8ssoftware]passwdk8s[root@k8s~]vim/etc/sudoersk8sALL=(ALL)ALL[root@k8s101~]exportKUBECONFIG=/etc/kubernetes/
(11)这个时期Master现已装置结束,可是短少NODE,而且没有容器网络功用,验证装置是否成功:
[root@k8s101~]catEOF/etc//[kubernetes]name=Kubernetesbaseurl=[root@k8s102~]catEOF/etc//[kubernetes]name=Kubernetesbaseurl=[root@k8s103~]vim/etc/docker/{"exec-opts":["=systemd"]}[root@k8s102~]systemctldaemon-reload[root@k8s102~]systemctlrestartdocker[root@k8s102~]vim/etc/docker/{"exec-opts":["=systemd"]}[root@k8s103~]systemctldaemon-reload[root@k8s103~]systemctlrestartdocker[root@k8s103~]:/v1beta2kind:JoinConfigurationdiscovery:bootstrapToken:apiServerpoint:172.26.64.121:6443token::truetlsBootstrapToken:[root@k8s102~]:/root/[root@k8s103~]kubectlgetnodesNAMESTATUSROLESAGEVERSIONk8s101NotReadycontrol-plane,(2)装置CNI网络插件,挑选weave插件
[root@k8s101~]mkdir-p/etc/cni//[root@k8s101~]mkdir/usr/share/oci-umount/[root@k8s101~]kubectlapply-f"$(kubectlversion|base64|tr-d'\n')"
(3)验证集群是否装置成功。装置weave跟节点网速有关,可能会十分慢,须要等候
[root@k8s101~]vim/etc/docker/{"registry-mirrors":[""],"exec-opts":["=systemd"]}[root@k8s102root]$sudosystemctldaemon-reload[root@k8s102root]$sudosystemctlrestartdocker{"registry-mirrors":[""],"exec-opts":["=systemd"]}[root@k8s103root]$sudosystemctldaemon-reload[root@k8s103root]$sudosystemctlrestartdocker装备k8s镜像拉取
(1)依据阿里云账号docker(自己的阿里云账号),登录成功会在用户根目录下生成.docker目录和认证密钥
[root@k8s101~]dockerlogin--username=lzt_[root@k8s103~]cd~[root@k8s101~]systemctlrestartkubelet[root@k8s102~]systemctlrestartkubelet[root@k8s103~]systemctlrestartkubelet
容易使命测验
运用K8s运转MySql
(1)编写MySqlRC(ReplicationController)文件,留意空格对齐(很重要)
[root@k8s101~]副本控制器RCmetadata:name:mysqlPod副本的等待数量selector:app:mysql依据模板创立Pod的副本(实例)metadata:labels:app:mysqlPod内容器的界说部分-name:mysql容器对应的DockerImageports:-containerPort:3306dockerps|grepmysql

(7)创立相关的KubernetsService文件相关MySql。
[k8s@k8s101~]$:v1kind:ServiceService的大局仅有称号spec:type:NodePortports:-port:3306堆外露出端口selector:yum-yinstallnfs-utilsrpcbind[root@k8s102~]yum-yinstallnfs-utilsrpcbind[root@k8s101~]systemctlstartnfs[root@k8s101~]systemctlenablenfs[root@k8s102~]systemctlstartnfs[root@k8s102~]systemctlenablenfs[root@k8s103~]systemctlstartnfs[root@k8s103~]systemctlenablenfs[root@k8s101~]/data/nfs[root@k8s102~]/data/nfs[root@k8s103~]/data/nfs
Master地址
[root@k8s101~]mkdirnfs[root@k8s101~]wget[root@k8s101nfs]wget[root@k8s101nfs]replacewithnamespacewhereprovisionerisdeployednamespace:defaultspec:replicas:1strategy:type:Recreateselector:matchLabels:app:nfs-client-provisionertemplate:metadata:labels:app:nfs-client-provisionerspec:serviceAccountName:nfs-client-provisionercontainers:-name:nfs-client-provisionerimage:/my-bonc/nfs-client-provisioner:latestvolumeMounts:-name:nfs-client-rootmountPath:/persistentvolumesenv:-name:PROVISIONER_NAMEvalue:/ifs-name:NFS_SERVERvalue:172.26.64.121nfs服务挂载目录volumes:-name:nfs-client-rootnfs:server:172.26.64.121nfs服务挂载目录
导入
[k8s@k8s101nfs]$
检查
[k8s@k8s101nfs]$kubectlgetscNAMEPROVISIONERRECLAIMPOLICYVO/ifsDeleteImmediatefalse5m4s[k8s@k8s101nfs]$kubectlgetpodsNAMEREADYSTATUSRESTARTSAGEnfs-client-provisioner-7859c747fp82js1/1Running031s[k8s@k8s101nfs]$sudovim/etc/kubernetes/manifests/=RemoveSelfLink=false#在command里增加此内容
测验创立pvc
[k8s@k8s101nfs]$:PersistentVolumeClaimapiVersion:v1metadata:name:test-claimannotations:/storage-class:"managed-nfs-storage"spec:accessModes:-ReadWriteManyresources:requests:storage:1Mi
导入
[k8s@k8s101nfs]$
检查,主动创立了pvcpv
[k8s@k8s101nfs]$kubectlgetpvcNAMESTATUSVOLUMECAPACITYACCESSMODESSTORAGECLASSAGEtest-claimBoundpvc-a22d6cad-f7e4bbcc7099d7a964b81MiRWXmanaged-nfs-storage29s[k8s@k8s101nfs]$kubectlgetpvNAMECAPACITYACCESSMODESRECLAIMPOLICYSTATUSCLAIMSTORAGECLASSREASONAGEpvc-a22d6cad-f7e4bbcc7099d7a964b81MiRWXDeleteBounddefault/test-claimmanaged-nfs-storage83s
往期内容:
一扫而光Flink高频面试题
全网首发图解Flink内核源码
深度解析Flink内存办理
详解Flink组件通讯——RPC协议
详解Flink通讯模型——Akka与Actor模型