在现代化应用架构中,容器化手艺和微效劳架构已经成为主流。Kubernetes(简称K8s)作为一个开源的容器编排平台,能够帮?助开发者自动化地安排、扩展和治理容器化应用。而ETCD作为K8s的要害组件之一,则是一个漫衍式键值存储,用于存储集群的数据。
Docker则是实现容器化的?焦点工具。本文将详细先容怎样基于二进制包举行K8集群的安排,并装置ETCD存储及Docker。
一、情形准备?
1.硬件要求
最小设置:4台物理效劳器,每台至少设置2核CPU和4GB内存。推荐设置:8台物理效劳器,每台至少设置4核CPU和8GB内存。
2.网络情形
确保所有效劳器能够相互会见,建议使用专用网络。设置好DNS,并?确保?每台效劳器有一个唯一的IP地点。
3.软件情形
操作系统:推荐使用CentOS7或Ubuntu18.04。网络:开启并设置好SELinux为permissive模式。时间同步:装置并设置NTP,包管所有效劳器时间一致。
二、K8集群的安排
1.下载并装置Kubernetes二进制包
我们需要下载并装置Kubernetes的二进制包?梢酝ü俜酵净袢∽钚掳姹镜亩进制包。
#下载Kubernetes二进制包curl-LOhttps://storage.googleapis.com/kubernetes-release/release/v1.20.0/bin/linux/amd64/kubeadmcurl-LOhttps://storage.googleapis.com/kubernetes-release/release/v1.20.0/bin/linux/amd64/kubeletcurl-LOhttps://storage.googleapis.com/kubernetes-release/release/v1.20.0/bin/linux/amd64/kubectl#给予执行权限chmod+x./kubeadm./kubelet./kubectl#将二进制文件移动到/usr/local/binsudomv./kubeadm/usr/local/bin/kubeadmsudomv./kubelet/usr/local/bin/kubeletsudomv./kubectl/usr/local/bin/kubectl
2.初始化K8集群
选择一台节点作为控制平台(Master节点),其他节点则为事情节点(Worker节点)。首先在Master节点上举行初?始化:
#初始化Kubernetes集群sudokubeadminit--pod-network-cidr=10.244.0.0/16
初始化完成后,需要将kubeconfig文件复制到外地:
mkdir-p$HOME/.kubesudocp-i/etc/kubernetes/admin.conf$HOME/.kube/configsudochown$(id-u):$(id-g)$HOME/.kube/config
3.装置网络插件
在本例中,我们将使用Flannel作为网络插件。装置Flannel:
kubectlapply-fhttps://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
4.加入Worker节点
在Master节点上获取加入Worker节点的下令:
kubeadmtokencreate--print-join-command
然后在每个Worker节点上运行以下下令加入集群:
sudokubeadmjoin:--token--discovery-token-ca-cert-hashsha256:
三、装置ETCD存储
ETCD是一个漫衍式的键值存储,用于存储Kubernetes集群的数据。我们将在Master节点上装置ETCD。
1.下载ETCD二进制包
curl-LOhttps://github.com/etcd-io/etcd/releases/download/v3.4.13-1/etcd-v3.4.13-linux-amd64.tar.gztar-xvfetcd-v3.4.13-linux-amd64.tar.gz
2.设置ETCD
建设ETCD的设置文件etcd.yml:
#etcd.ymletcd:name:etcddata-dir:/var/lib/etcdlisten-client-urls:http://0.0.0.0:2379,http://0.0.0.0:2380advertise-client-urls:http://:2379,http://:2380listen-peer-urls:http://0.0.0.0:2379initial-advertise-peer-urls:http://:2379initial-cluster:etcd1=http://:2379,etcd2=http://:2379,etcd3=http://:2379initial-cluster-token:etcd-cluster-1initial-cluster-state:newsnapshot-count:10000
3.启动ETCD
在Master节点上启动ETCD:
sudoetcd--config-fileetcd.yml
四、装置Docker
Docker是实现容器化应用的焦点工具,我们将在所有节点上装置Docker。
1.装置Docker
在CentOS上装置Docker:
sudoyuminstall-yyum-utilssudoyum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.reposudoyuminstall-ydocker-cedocker-ce-clicontainerd.io
在Ubuntu上装置Docker:
sudoapt-getupdatesudoapt-getinstall-yapt-transport-httpsca-certificatescurlgnupg-lzmacurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudoapt-keyadd-sudoadd-apt-repository"deb[arch=amd64]https://download.docker.com/linux/ubuntu$(lsb_release-cs)stable"sudoapt-getupdatesudoapt-getinstall-ydocker我们将详细先容怎样在集群中运行Docker容器,并怎样将ETCD集成到Kubernetes中,以确保数据的高可用性和一致性。
###五、运行Docker容器Docker容器是运行应用的最小单位,我们将在K8s集群中运行Docker容器。我们需要在外地准备好Docker镜像。####1.准备Docker镜像假设我们要运行一个简朴的Nginx容器,首先在外地拉取Nginx镜像:
bashdockerpullnginx
####2.安排Nginx容器到K8s集群在K8s集群中,我们需要建设一个Deployment和Service来运行Nginx容器。创?建NginxDeployment:
yaml
nginx-deployment.yml
apiVersion:apps/v1kind:Deploymentmetadata:name:nginx-deploymentspec:replicas:3selector:matchLabels:app:nginxtemplate:metadata:labels:app:nginxspec:containers:-name:nginximage:nginxports:-containerPort:80
建设NginxService:
yaml
nginx-service.yml
apiVersion:v1kind:Servicemetadata:name:nginx-servicespec:selector:app:nginxports:-protocol:TCPport:80targetPort:80
应用这些设置:
bashkubectlapply-fnginx-deployment.ymlkubectlapply-fnginx-service.yml
###六、集成ETCD到Kubernetes为了确保Kubernetes的数据高可用,我们需要将ETCD集成到?Kubernetes中。这是通过Kube-APIServer中的ETCD存储插?件来实现的。####1.启动Kube-APIServer并设置ETCD存储在Master节点上,我们需要在Kube-APIServer的启动设置中加入ETCD存储选项。
编辑Kube-APIServer的启动剧本:
bashsudonano/etc/systemd/system/kube-apiserver.service.d/20-etcd.conf
添加以下内容:
ini[Service]ExecStart=ExecStartPre=/usr/share/kube-apiserver/etcd-snapshot.shExecStart=/usr/local/bin/kube-apiserver\--etcd-servers=http://:2379\--etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt\--etcd-keyfile=/etc/kubernetes/pki/etcd/etcd.key\--etcd-certfile=/etc/kubernetes/pki/etcd/etcd.crt\--authorization-mode=Webhook\--service-account-issuer=kubernetes.default.svc.cluster.local\--service-account-secret-key=/etc/kubernetes/pki/etcd/etcd-token.key\--service-account-lookup-path=/etc/kubernetes/pki/etcd/tokens\--service-account-auth-provider=kubeconfig=/etc/kubernetes/pki/etcd/kubeconfig
####2.启动Kube-APIServer重启Kube-APIServer效劳:
bashsudosystemctldaemon-reloadsudosystemctlrestartkube-apiserver
###七、验证集群设置我们需要验证K8s集群和ETCD的设置是否正常?。####1.检查集群状态使用以下下令检查集群状态:
bashkubectlgetnodeskubectlgetpods-owide
####2.检查ETCD康健状态在Master节点上,可以使用以下下令检查ETCD的康健状态:
bashetcdctlclusterhealthetcdctlendpointls
####3.测?试Nginx效劳使用以下下令测试Nginx效劳是否正常运行:
bashcurlhttp://```
若是你看到Nginx的接待页面,则说明我们的集群设置乐成。
通过以上办法,我们乐成地基于二进制包安排了K8s集群,并装置了ETCD存储和Docker。这种设置能够为我们的应用提供高可用性和可扩展性,同时也为我们的开发和运维事情提供了便当。希望本文能够对你有所资助,若是有任何问题,接待在谈论区提问。
校对:;菝(1alGM7r7WBDKbl7iQddh7lqqus6E37PuUxv)
- “仅值40美,元”,遭香橼做空,Palantir股价六连跌
- 投运‘!’这一省再添百万千瓦机组
- 首次参评就!获“好”评!中国邮政储备银行荣获2024年度中央单位定点帮扶效果审核最高等次评价
- 年尾最吸睛主线!—阿里、{字}节齐发“AI眼镜+手机”,工业链这20只公司或率先受益(附股)
- 仁和!药业:公司Ulook眼镜现在尚未正式发售
- 鲍威尔;最新讲话:就业下行危害增添,或将竣事缩表
- 美元指数多—空对决:美!联储9月降息押注升温
- 销售未达预期<,>苹果大幅削减Vision Pro生产与营销支出
- 事关{基}金!代!销新规倒计时 银行缩短第三方渠道
- 科.威尔:7月份公司未实验股份回购
-
2026-07-19 11:33:54
-
2026-07-21 04:46:54
-
2026-07-10 02:24:54
-
2026-07-20 03:39:54
-
2026-07-09 21:45:54
