Centos7部署k8s集群及应用
2020-07-12 16:57
267 查看
简介
K8S集群通常由两部分构成:master结点和node结点
master结点的主要工作是负责集群的控制,对pod进行调度,对令牌的管理等
node结点的主要工作是负责干活,启动容器和管理容器
master结点和node结点一般采用分布式部署
前期准备
准备三台Centos7虚拟机,修改IP地址和hostname,关闭防火墙和selinux,同步三个结点的时间,修改IP地址与hostname映射关系
hostname | ip |
---|---|
192.168.29.143 | node1 |
192.168.29.142 | node2 |
192.168.29.144 | node3 |
node1作为集群主结点,node2和node3作为从结点
关闭swap
# swapoff -a
结点之间进行SSH免密登陆
# ssh-keygen #创建密钥 # ssh-copy-id root@node1 # ssh-copy-id root@node2 # ssh-copy-id root@node3 #验证 # ssh root@node1 # ssh root@node2 # ssh root@node3
所有结点安装kubernetes以及docker
配置kubernetes的yum源
[kubernetes] name=Kubernetes repo baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0
获取docker的yum源
下载地址:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache yum install kubelet kubeadm kubectl docker -y
安装完成后启动服务
systemctl start kubelet systemctl start docker
部署集群
node1结点进行集群初始化
[root@node1 ~]# kubeadm init --apiserver-advertise-address=192.168.29.143 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.1 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
执行初始化完成后根据提示进行以下操作,同时需要记录下提示画面中的token等信息,在后续结点加入集群中需要使用
[root@node1 ~]# mkdir -p $HOME/.kube [root@node1 ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config [root@node1 ~]# chown $(id -u):$(id -g) $HOME/.kube/config
把node2和node3结点加入到集群中
若忘记记录token信息或token超过时限(24小时),可在node1结点执行以下命令重新生成token
[root@node1 ~]# kubeadm token create #创建token [root@node1 ~]# kubeadm token list #查看token [root@node1 ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' #生成验证信息
根据初始化完毕后的提示页面中或重新创建的token信息,在node2和node3结点执行以下命令把结点加入集群中
[root@node2 ~]#kubeadm join 192.168.29.143:6443 --token jt0aws.p9ni06om5c6vqc41 \ --discovery-token-ca-cert-hash sha256:dde3b1db5dec438df389776202476af779d69eb0b38c8a2a77c9afa8301a94b3 [root@node3 ~]#kubeadm join 192.168.29.143:6443 --token jt0aws.p9ni06om5c6vqc41 \ --discovery-token-ca-cert-hash sha256:dde3b1db5dec438df389776202476af779d69eb0b38c8a2a77c9afa8301a94b3
查看集群情况
[root@node1 ~]# kubectl get nodes
此时已完成集群的部署,但是各个node结点间并不能进行网络通信,因此状态都是NotReady
部署集群网络
在集群中安装部署flannel网络进行通信,拉取flannel镜像
[root@node1 ~]#docker pull quay.io/coreos/flannel [root@node2 ~]#docker pull quay.io/coreos/flannel [root@node3 ~]#docker pull quay.io/coreos/flannel
此时再次查看集群状态就可看到各个结点状态都是Ready了
此时k8s集群部署完成
部署Nginx应用
拉取镜像
在node2和node3结点上提前拉取Nginx镜像
[root@node2 ~]# docker pull nginx [root@node3 ~]# docker pull nginx
编写配置文件
[root@node1 ~]# vi nginx-rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: nginx-controller spec: replicas: 2 selector: name: nginx template: metadata: labels: name: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 [root@node1 ~]# vi nginx-service.yaml apiVersion: v1 kind: Service metadata: name: nginx-service-nodeport spec: ports: - port: 8000 targetPort: 80 protocol: TCP type: NodePort selector: name: nginx
部署Nginx
[root@node1 ~]# kubectl create -f nginx-rc.yaml [root@node1 ~]# kubectl create -f nginx-service.yaml # 查看部署情况 [root@node1 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-controller-d88nw 1/1 Running 0 44s nginx-controller-phkgw 1/1 Running 0 44s #详细情况 [root@node1 ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-controller-d88nw 1/1 Running 0 66s 10.244.2.11 node3 <none> <none> nginx-controller-phkgw 1/1 Running 0 66s 10.244.1.10 node2 <none> <none> #查看服务情况 [root@node1 ~]# kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 46d nginx-service-nodeport NodePort 10.103.127.253 <none> 8000:32765/TCP 84s
测试验证
#任意结点执行能返回index内容 curl 192.168.29.143:32765 curl 192.168.29.142:32765 curl 192.168.29.144:32765 #在宿主机访问成功则部署Nginx成功,同时可证明k8s集群部署成功 http://192.168.29.143:32765 http://192.168.29.143:32765 http://192.168.29.144:32765
相关文章推荐
- Kubernetes初探[1]:部署你的第一个ASP.NET Core应用到k8s集群
- Kubernetes初探[1]:部署你的第一个ASP.NET Core应用到k8s集群
- Centos7安装部署Kubernetes(K8s)集群
- Openshift通过k8s集群部署web应用
- 搭建及使用K8s集群 <k8s集群部署springcloud 单应用>
- k8s 集群部署springcloud 多应用
- CentOS7利用kubeadm快速部署k8s集群
- k8s集群部署springcloud 单应用
- 搭建及使用K8s集群 <k8s 集群部署springcloud 多应用>
- centos7 k8s集群配置部署修正版
- centos7搭建k8s单机集群
- kubeadm(k8s)部署—单主集群
- Centos7 部署k8s集群
- rke高可用部署K8S集群及rancher server 高可用
- Tomcat集群应用部署的实现机制
- 革命性新特性 | 单一应用跨多Kubernetes集群的部署与管理
- 使用Helm 在容器服务k8s集群一键部署wordpress
- 在CentOS7上部署Kubernetes集群
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录
- 企业级应用WebLogic12c集群配置与项目实施_WebLogic部署培训教程