设为首页 收藏本站
查看: 901|回复: 0

[经验分享] Centos7部署Kubernetes

[复制链接]

尚未签到

发表于 2019-2-15 16:55:18 | 显示全部楼层 |阅读模式
  废话不多说,一把梭!开干!
  
实验环境:   
    master 192.168.1.5    (controller,etcd)
    node1  192.168.1.16
    node2  192.168.1.19
   
关闭每台主机的安全策略:(仅实验环境)
    systemctl stop firewalld
    iptables -F
    setenforce 0
   
   

Master运行组件:   

1、kube-apiserver
    API Server 提供HTTP/HTTPS ,即kubernetes API。各种客户端工具以及Kubernetes其他组件可以
通过它来管理Cluster的各种资源。

2、kube-scheduler
    Scheduler 负责决定将Pod放在哪个Node上运行,主要负责调度,根据当前Cluster的结构,满足负载、
高可用、性能等需求。

3、kube-controller-manager
   Controller Manager 负责管理Cluster各种资源,不同的controller管理不同的资源。

4、etcd
    etcd 负责保存kubernetes cluster 的配置信息和各种资源的状态信息。当信息发生改变时,etcd会立即通知kubernetes的各个组件。

5、Pod 网络
    Pod 要能够通信必须要部署Pod网络,flannel是其中的一种方案。

[root@k8s-master ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.5  master
192.168.1.16 node1
192.168.1.19 node2


[root@k8s-master ~]# scp /etc/hosts root@192.168.1.16:/etc/hosts
[root@k8s-master ~]# scp /etc/hosts root@192.168.1.19:/etc/hosts


[root@k8s-master ~]# yum -y install kubernetes-master etcd
  etcd概述:

  etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。etcd是由CoreOS开发并维护的,灵感来
自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。Raft是
一个来自Stanford的新的一致性算法,适用于分布式系统的日志复制,Raft通过选举的方式来实现一致性,在Raft
中,任何一个节点都可能成为Leader。Google的容器集群管理系统Kubernetes、开源PaaS平台Cloud Foundry和
CoreOS的Fleet都广泛使用了etcd。




[root@k8s-master etcd]# cat /etc/etcd/etcd.conf
#[Member]
#ETCD_CORS=""
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"                 //数据库位置
#ETCD_WAL_DIR=""                                        //默认存放数据的位置/var/lib/etcd/
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"              //监听其他etcd的地址
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"   //监听etcd客户端地址
#ETCD_MAX_SNAPSHOTS="5"
#ETCD_MAX_WALS="5"
ETCD_NAME="master"                                        //节点名称
#ETCD_SNAPSHOT_COUNT="100000"
#ETCD_HEARTBEAT_INTERVAL="100"
#ETCD_ELECTION_TIMEOUT="1000"
#ETCD_QUOTA_BACKEND_BYTES="0"
#ETCD_MAX_REQUEST_BYTES="1572864"
#ETCD_GRPC_KEEPALIVE_MIN_TIME="5s"
#ETCD_GRPC_KEEPALIVE_INTERVAL="2h0m0s"
#ETCD_GRPC_KEEPALIVE_TIMEOUT="20s"
#
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://master:2380"      //通告其他etcd的地址
ETCD_ADVERTISE_CLIENT_URLS="http://master:2379,http://master:4001" //通告客户端的地址
#ETCD_DISCOVERY=""
#ETCD_DISCOVERY_FALLBACK="proxy"
#ETCD_DISCOVERY_PROXY=""
#ETCD_DISCOVERY_SRV=""
ETCD_INITIAL_CLUSTER="master=http://master:2380,node1=http://node1:2380,node2=http://node2:2380" //初始化集群内的地址
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" //初始化集群
ETCD_INITIAL_CLUSTER_STATE="new"          //新建集群
#ETCD_STRICT_RECONFIG_CHECK="true"
#ETCD_ENABLE_V2="true"
#
#[Proxy]
#ETCD_PROXY="off"
#ETCD_PROXY_FAILURE_WAIT="5000"
#ETCD_PROXY_REFRESH_INTERVAL="30000"
#ETCD_PROXY_DIAL_TIMEOUT="1000"
#ETCD_PROXY_WRITE_TIMEOUT="5000"
#ETCD_PROXY_READ_TIMEOUT="0"
#
#[Security]
#ETCD_CERT_FILE=""
#ETCD_KEY_FILE=""
#ETCD_CLIENT_CERT_AUTH="false"
#ETCD_TRUSTED_CA_FILE=""
#ETCD_AUTO_TLS="false"
#ETCD_PEER_CERT_FILE=""
#ETCD_PEER_KEY_FILE=""
#ETCD_PEER_CLIENT_CERT_AUTH="false"
#ETCD_PEER_TRUSTED_CA_FILE=""
#ETCD_PEER_AUTO_TLS="false"
#
#[Logging]
#ETCD_DEBUG="false"
#ETCD_LOG_PACKAGE_LEVELS=""
#ETCD_LOG_OUTPUT="default"
#
#[Unsafe]
#ETCD_FORCE_NEW_CLUSTER="false"
#
#[Version]
#ETCD_VERSION="false"
#ETCD_AUTO_COMPACTION_RETENTION="0"
#
#[Profiling]
#ETCD_ENABLE_PPROF="false"
#ETCD_METRICS="basic"
#
#[Auth]
#ETCD_AUTH_TOKEN="simple"




如果出现了request sent was ignored (cluster ID mismatch:)报错,解决方法如下:
    将etcd的数据目录删除,然后在重启etcd                   [/var/lib/etcd/default.etcd/]

   



etcd节点配置:   
[root@k8s-node1 ~]# yum -y install kubernetes-node etcd flannel docker
[root@k8s-node1 ~]# cat /etc/etcd/etcd.conf | grep -v "^#"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
ETCD_NAME="node1"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.1.16:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://node1:2379,http://node1:4001"
ETCD_INITIAL_CLUSTER="master=http://master:2380,node1=http://node1:2380,node2=http://node2:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"





查看集群状态:
[root@k8s-node1 etcd]# etcdctl cluster-health
member 43bb846a7344a01f is healthy: got healthy result from http://node2:2379
member 70192b54fb86c1a5 is healthy: got healthy result from http://master:2379
member a9aee06e6a14d468 is healthy: got healthy result from http://node1:2379
cluster is healthy

  



kubernetes控制端配置:

[root@k8s-master ~]# cat /etc/kubernetes/apiserver | grep -v "^#"
#在本地服务器上的地址进行侦听。
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
#在本地服务器上的端口侦听。
KUBE_API_PORT="--port=8080"
#端口管理员侦听
KUBELET_PORT="--kubelet-port=10250"
#ETCD集群中节点的逗号分隔列表
KUBE_ETCD_SERVERS="--etcd-servers=http://master:2379,http://=node1:2379,http://=node2:2379"
#集群地址范围
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
#默认接纳控制策略
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
#加上你自己的参数,默认为空
KUBE_API_ARGS=""


[root@k8s-master ~]# systemctl start kube-apiserver
[root@k8s-master ~]# systemctl start kube-controller-manager
[root@k8s-master ~]# systemctl start kube-scheduler




kubernetes节点配置:

[root@k8s-node1 ~]# cat /etc/kubernetes/config | egrep -v "^#|$^"
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://master:8080"     

  
kubelet配置:
[root@k8s-node1 ~]# cat /etc/kubernetes/kubelet | egrep -v "^#|$^"
KUBELET_ADDRESS="--address=127.0.0.1"
KUBELET_HOSTNAME="--hostname-override=192.168.1.16"
KUBELET_API_SERVER="--api-servers=http://master:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""

  
网络配置:
[root@k8s-node1 ~]# cat /etc/sysconfig/flanneld | egrep -v "^#|$^"
FLANNEL_ETCD_ENDPOINTS="http://master:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network"


开启kubelet服务:
[root@k8s-node1 ~]# systemctl start kubelet


查看集群状态:
[root@k8s-master ~]# kubectl get nodes
NAME           STATUS    AGE
192.168.1.16   Ready     14h
192.168.1.19   Ready     14h

  集群的使用:
  我已经在我节点上下载好docker镜像,关于docker部分可以参考我之前的文章。

  docker 和k8s的关系:

  docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。
  k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
  简单的来说,就是用kubernetes去管理Docker集群,即可以将Docker看成Kubernetes内部使用的低级别组件。另外,kubernetes不仅仅支持Docker,还支持其他的容器技术。
  如果不指定namespace会默认的在default中创建

  [root@k8s-master ~]# kubectl run 01nginx --image=docker.io/nginx  --replicas=2 --port=80
deployment "nginx" created


  [root@k8s-master ~]# kubectl get pods
NAME                       READY     STATUS             RESTARTS   AGE
01nginx-2977218101-509gt   1/1       Running            0          15h
01nginx-2977218101-x8057   1/1       Running            0          15h


  [root@k8s-master ~]# kubectl get pod  -o wide
nginx-2081865075-h175t     1/1       Running            0          16h       172.17.0.4   192.168.1.19
nginx-2081865075-rhspz     1/1       Running            0          16h       172.17.0.3   192.168.1.19





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-672691-1-1.html 上篇帖子: CentOS7下安装配置vncserver/vncviewer 下篇帖子: linux (centos)安装EMCPower多路径软件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表