Centos7部署k8s集群及应用

Centos7部署k8s集群及应用

大家好,又见面了,我是全栈君。

简介

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

关闭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

公众号里回复:20200713k8s

Centos7部署k8s集群及应用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111740.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月15日 下午3:00
下一篇 2022年2月15日 下午4:00


相关推荐

  • GridData

    GridDataGridLayout//容器下面元素的列数,makeColumnsEqualWidth是否相同大小单元格publicGridLayout(intnumColumns,booleanmakeColumnsEqualWidth);GridData类可以与GridLayout类配合使用,其中构造函数有:[code="java"]publicGridData();…

    2022年5月9日
    82
  • Javascript定时器案例

    Javascript定时器案例DOCTYPE tml html head metacharset utf 8 title title scripttype text javascript window onload function 使图片可以自动切换 获取 img 标签 varimg1 document get scripttype text metacharset utf 8 head html

    2026年3月17日
    1
  • 慧荣PT项目见疑「建议收藏」

    慧荣PT项目见疑「建议收藏」

    2022年6月3日
    35
  • 使用treesoft下的TreeNMS管理和监控redis服务器

    使用treesoft下的TreeNMS管理和监控redis服务器treesoft 是国产的用于管理和监控数据库的软件 其中的 TreeNMS 可以用来管理和监控 redis 服务器 是基于 javaweb 的环境运行 1 安装 jdk 参考安装配置流程 2 安装 tomcat 1 下载 2 解压 tar zxvfapache tomcat 7 0 96 tar gz 3 移动到 user local 并重命名为 tomcatmvapac tomca

    2026年3月16日
    2
  • java 异或加密_使用异或实现一个简单的加密或解密

    java 异或加密_使用异或实现一个简单的加密或解密/**Copyright(C)2017,MegatronKing**LicensedundertheApacheLicense,Version2.0(the”License”);youmaynotusethisfileexcept*incompliancewiththeLicense.YoumayobtainacopyoftheLicenseat**http://www.apache.org/licenses/.

    2022年10月4日
    5
  • 如何实现自定义类加载器_进阶课程

    如何实现自定义类加载器_进阶课程新建一个java文件,保存在相应的目录用cmd命令进入到world类的上级目录,运行javac命令,生成.class文件创建自己定义的classload类//继承ClassLoader类,重写findclass方法。publicclassMyClassloaderextendsClassLoader{privateStringpath;privateStringclassloaderName;publicMyClassloader(Str

    2025年9月22日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号