centos改装(使用虚拟机在3台centos7系统安装docker和k8s集群)_重复

一、安装docker环境:准备3台centos7系统,都安装上docker环境,具体安装步骤和流程如下参考:1.1centos7配置yum源>cd/etc/yum.repos.d/>mkdirrepo_bak>mv*.reporepo_ba...

一、安装docker

环境:准备3台centos7系统,都安装上docker环境,具体安装步骤和流程如下

centos改装(使用虚拟机在3台centos7系统安装docker和k8s集群)_重复

参考:

https://docs.docker.com/install/linux/docker-ce/centos/

https://yeasy.gitbooks.io/docker_practice/content/install/

1.1centos7配置yum源

>cd/etc/yum.repos.d/>mkdirrepo_bak>mv*.reporepo_bak/>wgethttp://mirrors.aliyun.com/repo/Centos-7.repo>wgethttp://mirrors.163.com/.help/CentOS7-Base-163.repo>yumcleanall>yummakecache1.2卸载旧版本docker

sudoyumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine1.3使用存储库安装docker安装所需的包

sudoyuminstall-yyum-utils\device-mapper-persistent-data\lvm2使用以下命令设置稳定存储库。

#阿里源,国内速度快sudoyum-config-manager\--add-repo\https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo1.4安装DOCKERCE安装最新docker

sudoyuminstalldocker-cedocker-ce-clicontainerd.io或者yum列出docker再进行安装

yumlistdocker-ce--showduplicates|sort-rsudoyuminstalldocker-ce-docker-ce-cli-containerd.io例如,docker-ce-18.09.11.5建立加入docker用户组

默认情况下,docker命令会使用Unixsocket与Docker引擎通讯。而只有root用户和docker用户才可以访问Docker引擎的Unixsocket。出于安全考虑,一般Linux系统上不会直接使用root用户。因此,更好的做法是将需要使用docker的用户加入docker用户组。

sudogroupadddockersudousermod-aGdocker$USER1.5启动Docker

sudosystemctlstartdocker#启动sudosystemctlenabledocker#开机启动查看有关Docker安装的更多详细信息

docker--versiondockerversiondockerinfo测试hello-world

dockerrunhello-worldListDockerimages

dockerimagelsListDockercontainers(running,all,allinquietmode)

dockercontainerlsdockercontainerls--alldockercontainerls-aq1.6卸载DockerCE

sudoyumremovedocker-cesudorm-rf/var/lib/docker1.7国内加速

vim/etc/docker/daemon.json

加入:

{"registry-mirrors":["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]}

重启:

$sudosystemctldaemon-reload$sudosystemctlrestartdocker二、安装Kubernetes集群

参考:

https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

https://blog.csdn.net/MssGuo/article/details/122773155

2.1系统设置

systemctlstopfirewalld#关闭防火墙systemctldisablefirewalld#设置开机不启动[root@master~]#vim/etc/selinux/config#永久关闭selinuxSELINUX=disabled#关闭swap(k8s禁止虚拟内存以提高性能)[root@master~]##永久禁用swap,注释掉/etc/fstab里的swap配置#/dev/mapper/centos-swapswapswapdefaults00#free-h#可查看kubernetes1.14之后的版本推荐使用systemd,但docker默认的CgroupDriver是Cgroup,会使得kubelet部署报错(集群都这样修改)

[root@master~]#dockerinfo|grep-i"CgroupDriver"#查看一下docker使用的CgroupDriver,还真是cgroupfsCgroupDriver:cgroupfs#处理办法:修改/etc/docker/daemon.json文件,添加如下参数:[root@master~]#vim/etc/docker/daemon.json#为了保持所有节点docker配置一致,所以其它节点的docker也改了{"registry-mirrors":["https://b9pmyelo.mirror.aliyuncs.com"],#这句是之前就配置了的,但要注意加一个道号"exec-opts":["native.cgroupdriver=systemd"]#添加这一句}[root@master~]#systemctlrestartdocker[root@master~]#dockerinfo|grep-i"CgroupDriver"#查看验证CgroupDriver:systemd2.2安装kubelet、kubeadm、kubectl

kubelet(真正的k8s服务)运行在Cluster所有节点上,负责启动Pod和容器。

kubeadm(只是工具)用于初始化Cluster。

kubectl(只是工具)是Kubernetes命令行工具。通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。

配置kubernetes的阿里云yum源(所有节点服务器都需要执行)

cat</etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF安装kubelet等服务、工具(所有节点服务器都需要执行)

yuminstall-ykubeadm-1.23.1-0kubectl-1.23.1-0kubelet-1.23.1-0设置k8s服务kubelet开机启动(所有节点服务器都需要执行)

#设置开机启动systemctlenablekubelet#启动命令systemctlstartkubelet2.3设置网桥参数

#往k8s.conf文件添加内容cat>/etc/sysctl.d/k8s.conf<

cat>>/etc/hosts<

1、创建一个master节点,kubeadminit。

2、将node节点加入kubernetes集群,kubeadmjoin

初始化【master节点】的控制面板

#kubeadminit--help可以查看命令的具体参数用法kubeadminit\--apiserver-advertise-address=192.168.1.20\--image-repositoryregistry.aliyuncs.com/google_containers\--kubernetes-versionv1.23.1\--service-cidr=10.96.0.0/12\--pod-network-cidr=10.244.0.0/16#再开一个窗口,执行dockerimages可以看到,其实执行kubeadminit时k8s去拉取了好多镜像--apiserver-advertise-address=192.168.1.20即master节点的IP--image-repositoryregistry.aliyuncs.com/google_containers设置镜像仓库为国内的阿里云镜像--kubernetes-versionv1.23.1设置k8s的版本--service-cidr=10.96.0.0/12设置node节点的网络--pod-network-cidr指定Pod网络的范围。Kubernetes支持多种网络方案,而且不同网络方案对--pod-network-cidr有自己的要求,这里设置为10.244.0.0/16是因为我们将使用flannel网络方案,必须设置成这个CIDR。2.6成功后的返回以及操作

YourKubernetescontrol-planehasinitializedsuccessfully!Tostartusingyourcluster,youneedtorunthefollowingasaregularuser:mkdir-p$HOME/.kubesudocp-i/etc/kubernetes/admin.conf$HOME/.kube/configsudochown$(id-u):$(id-g)$HOME/.kube/configAlternatively,ifyouaretherootuser,youcanrun:exportKUBECONFIG=/etc/kubernetes/admin.confYoushouldnowdeployapodnetworktothecluster.Run"kubectlapply-f[podnetwork].yaml"withoneoftheoptionslistedat:https://kubernetes.io/docs/concepts/cluster-administration/addons/Thenyoucanjoinanynumberofworkernodesbyrunningthefollowingoneachasroot:kubeadmjoin192.168.1.20:6443--tokendeg1pk.88lgg93hqh74mbcg\--discovery-token-ca-cert-hashsha256:81eeac318c2eba7a06cdabb2b4cb30bfedd4359a7c1cd7b508b68f9f74fddbe52.7将node节点加入集群

使用materinit返回的命令。这段kubeamdjoin命令的token只有24h,24h就过期,需要执行kubeadmtokencreate--print-join-command重新生成。

kubeadmjoin192.168.1.20:6443--tokendeg1pk.88lgg93hqh74mbcg\--discovery-token-ca-cert-hashsha256:81eeac318c2eba7a06cdabb2b4cb30bfedd4359a7c1cd7b508b68f9f74fddbe52.8在master节点配置pod网络创建(部署容器网络,CNI网络插件)node节点加入k8s集群后,在master上执行kubectlgetnodes发现状态是NotReady,因为还没有部署CNI网络插件,其实在步骤四初始化完成master节点的时候k8s已经叫我们去配置pod网络了。在k8s系统上Pod网络的实现依赖于第三方插件进行,这类插件有近数十种之多,较为著名的有flannel、calico、canal和kube-router等,简单易用的实现是为CoreOS提供的flannel项目。

#执行下面这条命令在线配置pod网络,因为是国外网站,所以可能报错,测试去http://ip.tool.chinaz.com/网站查到#域名raw.githubusercontent.com对应的IP,把域名解析配置到/etc/hosts文件,然后执行在线配置pod网络,多尝试几次即可成功。kubectlapply-fhttps://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

查看pod状态:

kubectlgetpods-nkube-system