CentOS7.6部署k8s环境

测试环境:

节点名称

节点IP

节点功能

K8s-master

10.10.1.10/24

Master、etcd、registry

K8s-node-1

10.10.1.20/24

node-1

K8s-node-2

10.10.1.30/24

node-2

步骤:

  1. 修改hosts文件

[root@Node-1 ~]# hostnamectl --static set-hostname  k8s-master

[root@Node-1 ~]# vi /etc/hosts

10.10.1.10    k8s-master

10.10.1.10   etcd

10.10.1.10   registry

10.10.1.20   k8s-node-1

10.10.1.30   k8s-node-2

  1. 部署etcd(注:本次只master节点安装etcd)

[root@node-1 ~]#  yum install etcd –y

[root@node-1 ~]# vi /etc/etcd/etcd.conf

#[Member]

#ETCD_CORS=""

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"

#ETCD_WAL_DIR=""

#ETCD_LISTEN_PEER_URLS="http://localhost:2380"

ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"

ETCD_NAME="master"

#[Clustering]

#ETCD_INITIAL_ADVERTISE_PEER_URLS="http://localhost:2380"

ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379,http://etcd:4001

启动服务

[root@node-1 ~]# systemctl start etcd.service

[root@node-1 ~]# systemctl enable etcd.service

验证集群状态

[root@node-1 ~]#  etcdctl -C http://etcd:4001 cluster-health

member 8e9e05c52164694d is healthy: got healthy result from http://etcd:2379

cluster is healthy

[root@node-1 ~]#

  1. 部署master

3.1.安裝docker

[root@node-1 ~]# yum install docker

[root@node-1 ~]# vi /etc/sysconfig/docker

# /etc/sysconfig/docker

# Modify these options if you want to change the way the docker daemon runs

OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'

if [ -z "${DOCKER_CERT_PATH}" ]; then

DOCKER_CERT_PATH=/etc/docker

fi

OPTIONS='--insecure-registry registry:5000'

3.2.启动docker服务并设置开机启动

[root@node-1 ~]# systemctl start docker.service

[root@node-1 ~]# systemctl enable docker.service

3.3.安裝kubernets

[root@node-1 ~]# yum install kubernetes

3.4. 配置并且启动kubernets服务(该步骤只在master节点)

Kubernets API Server

Kubernets Controller Manager

Kubernets Scheduler

[root@node-1 ~]# vi /etc/kubernetes/apiserver

# kubernetes system config

#

# The following values are used to configure the kube-apiserver

#

# The address on the local server to listen to.

KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"

# The port on the local server to listen on.

KUBE_API_PORT="--port=8080"

# Port minions listen on

# KUBELET_PORT="--kubelet-port=10250"

# Comma separated list of nodes in the etcd cluster

KUBE_ETCD_SERVERS="--etcd-servers=http://etcd:2379"

# Address range to use for services

KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"

# default admission control policies

#KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"

KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

# Add your own!

KUBE_API_ARGS=""

[root@node-1 ~]# vi /etc/kubernetes/config

# How the controller-manager, scheduler, and proxy find the apiserver

KUBE_MASTER="--master=http://k8s-master:8080"

3.5. 启动服务并设置开机启动

[root@k8s-master ~]# systemctl enable kube-apiserver.service

[root@k8s-master ~]# systemctl start kube-apiserver.service

[root@k8s-master ~]# systemctl enable kube-controller-manager.service

[root@k8s-master ~]# systemctl start kube-controller-manager.service

[root@k8s-master ~]# systemctl enable kube-scheduler.service

[root@k8s-master ~]# systemctl start kube-scheduler.service

  1. 部署节点

4.1.部署和3.1-3.3相同

4.2.修改配置文件

[root@Node-2 ~]# vi /etc/kubernetes/config

# How the controller-manager, scheduler, and proxy find the apiserver

KUBE_MASTER="--master=http://k8s-master:8080"

[root@Node-2 ~]# vi //etc/kubernetes/kubelet

KUBELET_ADDRESS="--address=0.0.0.0"

KUBELET_HOSTNAME="--hostname-override=k8s-node-1"

KUBELET_API_SERVER="--api-servers=http://etcd:8080"

4.3.启动服务并设置开机启动

[root@k8s-node-1 ~]# systemctl enable kubelet.service

[root@k8s-node-1 ~]# systemctl start kubelet.service

[root@k8s-node-1 ~]# systemctl enable kube-proxy.service

[root@k8s-node-1~]# systemctl start kube-proxy.service

  1. 查看群集状态

[root@k8s-master ~]# kubectl get node

NAME         STATUS     AGE

k8s-node-1   Ready      14h

k8s-node-2   Ready      14h

  1. 安装Flannel(所有节点)

[root@node-1 ~]# yum install flannel

[root@node-1 ~]# vi /etc/sysconfig/flannel

# Flanneld configuration options

# etcd url location.  Point this to the server where etcd runs

FLANNEL_ETCD_ENDPOINTS="http://etcd:2379"

# etcd config key.  This is the configuration key that flannel queries

# For address range assignment

FLANNEL_ETCD_PREFIX="/atomic.io/network"

  1. 配置etcd中关于flannel的key

[root@node-1 ~]#  etcdctl mk /atomic.io/network/config '{ "Network": "10.0.0.0/16" }'

设置flannel服务启动和开机启动:

[root@node-1 ~]# systemctl enable flanneld.service

[root@node-1 ~]# systemctl start flanneld.serivice

管理节点执行:

service docker restart

systemctl restart kube-apiserver.service

systemctl restart kube-controller-manager.service

systemctl restart kube-scheduler.service

业务节点执行

service docker restart

systemctl restart kubelet.service

systemctl restart kube-proxy.service

业务节点拉取image

[root@Node-2 ~]# docker pull winstonpro/lnmp

[root@Node-2 ~]# docker pull tomcat

[root@Node-2 ~]# docker pull httpd

管理节点创建实例

kubectl run web --image=winstonpro/lnmp --port=80

管理节点做svc映射

kubectl expose deployment web --port=80 --target-port=80 --external-ip=10.10.1.30

常用命令:

[root@node-1 ~]# kubectl get node -o wide

NAME         STATUS     AGE       EXTERNAL-IP

k8s-node-1   Ready      14h       <none>

k8s-node-2   Ready      14h       <none>

[root@node-1 ~]# kubectl get pod -o wide

NAME                      READY     STATUS    RESTARTS   AGE       IP          NODE

app-556711052-ps9kr       1/1       Running   3          7h        10.0.53.2   k8s-node-1

tomcat-3343039334-0z187   1/1       Running   0          2h        10.0.74.3   k8s-node-2

web-3818241055-g11q8      1/1       Running   3          8h        10.0.74.2   k8s-node-2

[root@node-1 ~]# kubectl get svc -o wide

NAME         CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE       SELECTOR

kubernetes   10.254.0.1      <none>        443/TCP    15h       <none>

tomcat       10.254.69.86    10.10.1.30    7777/TCP   2h        run=tomcat

web          10.254.76.251   10.10.1.30    80/TCP     6h        run=web

[root@node-1 ~]# kubectl get  deployments

NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE

app       1         1         1            1           7h

tomcat    1         1         1            1           2h

web       1         1         1            1           8h

关于外网无法访问:

[root@Node-2 ~]# vi /etc/sysctl.conf

net.ipv4.ip_forward = 1

[root@Node-2 ~]# sysctl -p

iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -F

CentOS7.6部署k8s环境的更多相关文章

  1. Centos7.6部署k8s v1.16.4高可用集群(主备模式)

    一.部署环境 主机列表: 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 master01 7.6. ...

  2. CentOS7.6部署ceph环境

    CentOS7.6部署ceph环境 测试环境: 节点名称 节点IP 磁盘 节点功能 Node-1 10.10.1.10/24 /dev/sdb 监控节点 Node-2 10.10.1.20/24 /d ...

  3. django2.0 + python3.6 在centos7 下部署生产环境的一些注意事项

    一:mysql 与环境选用的坑 目前, 在生产环境部署django有三种方式: 1. apache + mod_wsgi 2. nginx + uwsigi 3. nginx + supervisor ...

  4. centos7.2 部署k8s集群

    一.背景 二.使用范围 ♦ 测试环境及实验环境 三.安装前说明 ♦ k8s网络基本概念 ♦  集群规划图 ♦ 软件版本选取 Name Version Description docker-ce 18. ...

  5. centos7下部署iptables环境纪录(关闭默认的firewalle)

    CentOS7默认的防火墙不是iptables,而是firewall.由于习惯了用iptables作为防火墙,所以在安装好centos7系统后,会将默认的firewall关闭,并另安装iptables ...

  6. centos7下部署iptables环境纪录(关闭默认的firewalle)(转)

    下面介绍centos7关闭firewall安装iptables,并且开启80端口.3306端口的操作记录:[root@localhost ~]# cat /etc/redhat-release Cen ...

  7. CentOS7单机部署lamp环境和apache虚拟主机

    (1)apache介绍 apache : httpd.apache.org 软件包:httpd 端口服务:80/tcp(http) 443/tcp(https,http+ssl) 配置文件: /etc ...

  8. centos7.1部署java环境服务器

    1.检查操作系统自带java是jdk还是jre(否有javac,本例中没有javac) [root@bogon ~]# ls -l /usr/lib/jvm/总用量 0drwxr-xr-x. 3 ro ...

  9. ansible一键部署k8s单机环境

    一.虚拟机准备 干净的Centsot7.4.4G内存.2个CPU 最小化安装,最好带虚拟化 二.执行初始化脚本 注意:脚本中配置静态网卡根据实际网卡名称配置,我用的是ens33 可以用 sed -i ...

随机推荐

  1. 【调试】Visual Studio 调试小技巧(2)-从查看窗口得到更多信息(转载)

    在使用Visual Studio开发调试程序时,我们经常需要打开查看窗口(Watch)来分析变量.有时在查看窗口显示的内容不是很直观.为了能从查看窗口的变量中得到更多的信息,我们需要一些小的技巧.下面 ...

  2. uva 10739【基础(区间)dp】

    Uva 10739 题意:给定字符串,可以增加.删除.修改任意字符,问最少经过多少次操作使字符串回文. 题解:定义dp[l][r]表示把从l到r的子串Sl...Sr变成回文串需要操作的最少次数.字符可 ...

  3. 在哈尔滨的寒风中EOJ 3461【组合数学】

    http://acm.ecnu.edu.cn/problem/3461/ 还是能力不够,不能看出来棋盘足够大时,马是可以到达任何位置的.还是直接看题解怎么说的吧:(http://acm.ecnu.ed ...

  4. 利用idea构建hibernate

    1.创建项目 若勾选Use library,则点击右侧的Create,使用本地已下载的Hibernate 5.2.13框架(必须导入hibernate-release-5.2.13.Final\lib ...

  5. 从零学React Native之10Text

    在React Native开发中,所有需要显示的字符串文本都需要放置在Text或者Text的子组件中.虽然在之前的文章中多次使用了Text组件,但是Text组件还是值得专门学习的, 并没有想象中的那么 ...

  6. typeid, const_cast<Type>的使用

    #include <bits/stdc++.h> using namespace std; class A { public : void Show() { cout << & ...

  7. Redis源码解析:05跳跃表

    一:基本概念 跳跃表是一种随机化的数据结构,在查找.插入和删除这些字典操作上,其效率可比拟于平衡二叉树(如红黑树),大多数操作只需要O(log n)平均时间,但它的代码以及原理更简单.跳跃表的定义如下 ...

  8. @gym - 101137K@ Knights of the Old Republic

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 N 个点 M 条边的一张图. 每个点有两个属性 Ai, B ...

  9. 从零学React Native之06flexbox布局

    前面我们接触了好多React Native代码, 并没有介绍RN中的组件具体是如何布局的,这一篇文章,重点介绍下flexbox布局. 什么是flexbox布局 React中引入了flexbox概念,f ...

  10. 【MySQL基础】Mysql获得当前日期的所在月的第一天

    Mysql获得当前日期的所在月的第一天 尊重劳动成果,请访问CSDN著者原文链接 http://blog.csdn.net/zixiao217/article/details/51908506 Ste ...