环境介绍

1.单masrer节点 (安装下面图中介绍的四个组件)

2.俩个node节点(安装kubelet和docker)

3.为了支持master与node之前的通信,我们还需要在master上安装flannel来实现maste与node之间的网络通信

这里建议通过yum来安装,手动安装需要网络规划和证书安装,后期可以自己研究下

安装要求:

系统版本:CentOS7.x版本

硬件配置:内存2GB以上  cpu2核以上  硬盘大于30G

集群网络配置:集群中所有服务器内网必须互通,并且需要访问外网来拉取镜像

禁用swap分区

学习环境:

学习目标:

1.在所有节点安装Docker和kubeadm

2.部署kubernetes Master

3.部署容器网络插件

4.部署kubernetes node,并将节点添加到kubernetes集群

5.部署dashboard web页面,可视化kubernetes资源

================================================

k8s基础环境操作:

关闭防火墙:

$ systemctl stop firewalld

$ systemctl disable firewalld

关闭selinux:

$ sed -i 's/enforcing/disabled/' /etc/selinux/config

$ setenforce 0

关闭swap分许

临时关闭:swapoff -a

永久关闭:注释掉/etc/fstab文件中的swap行

编辑hosts文件,将所有节点的ip和主机名一一对应

172.16.204.130     k8s-master
172.16.204.131      k8s-node1
172.16.204.132     k8s-node2

将桥接的IPv4流量传递到iptables的链

$ cat > /etc/sysctl.d/k8s.conf << EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

$ sysctl --system

开启IP转发功能

echo "1" > /proc/sys/net/ipv4/ip_forward

NTP时间服务同步 *****

=================================================

所有节点安装docker、kubeadm、kubelet

安装docker

  1. #卸载旧版本docker
  2.  
  3. [root@localhost ~]#  yum remove docker docker-common docker-selinux docker-engine
  4.  
  5. 安装必要的一些系统工具
  6.  
  7. #yum-utils提供yum的配置管理
  8.  
  9. #device-mapper-persistent-data 与 lvm2 是devicemapper存储驱动所需要的
  10.  
  11. [root@localhost ~]#  yum install -y yum-utils device-mapper-persistent-data lvm2
  12.  
  13. 配置Docker的稳定版本仓库
  14.  
  15. [root@localhost ~]#  yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  16.  
  17. 更新安装包索引
  18.  
  19. [root@localhost ~]#  yum makecache fast
  20.  
  21. 安装Docker CE
  22.  
  23.  [root@localhost ~]#  yum -y install docker-ce-18.06.1.ce-3.el7

$ systemctl enable docker && systemctl start docker

$ docker --version

Docker version 18.06.1-ce, build e68fc7a

添加阿里云YUM软件源

$ vim /etc/yum.repos.d/kubernetes.repo

[Kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

yum clean all

yum makecache

安装kubeadm,kubelet和kubectl

由于版本更新频繁,这里指定版本号部署:

$ yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0

$ systemctl enable kubelet

=========================================================================

部署Kubernetes Master

$ kubeadm init \

--apiserver-advertise-address=172.16.204.130 \       #master组件监听的api地址,这里写masterIP地址即可或者多网卡选择另一个IP地址

--image-repository registry.aliyuncs.com/google_containers \

--kubernetes-version v1.15.0 \

--service-cidr=10.1.0.0/16 \

--pod-network-cidr=10.244.0.0/16

  1. [bootstrap-token] Creating the "cluster-info" ConfigMap in the "kube-public" namespace
  2. [addons] Applied essential addon: CoreDNS
  3. [addons] Applied essential addon: kube-proxy
  4.  
  5. Your Kubernetes control-plane has initialized successfully!
  6.  
  7. To start using your cluster, you need to run the following as a regular user:
  8.  
  9. mkdir -p $HOME/.kube
  10. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  11. sudo chown $(id -u):$(id -g) $HOME/.kube/config
  12.  
  13. You should now deploy a pod network to the cluster.
  14. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  15. https://kubernetes.io/docs/concepts/cluster-administration/addons/
  16.  
  17. Then you can join any number of worker nodes by running the following on each as root:
  18.  
  19. kubeadm join 172.16.204.130:6443 --token 44basl.nx5l92iyq91a1fjw \
  20. --discovery-token-ca-cert-hash sha256:2b317de2bc21973b245ceaa6570352172a16a6a4ac59a47fb7ef82bc036bb120 #此koken有效期为一天,如果tokey过期,可以使用如下命令
    生成永久不过期的tokeykubeadm token create --ttl 0 --print-join-command
    #kubeadm join 172.16.204.130:6443 --token 65xvux.v693lnz6ts7pm030     --discovery-token-ca-cert-hash sha256:2b317de2bc21973b245ceaa6570352172a16a6a4ac59a47fb7ef82bc036bb120

  

===========================================================

配置常规用户如何使用kubectl访问集群

  1. mkdir -p $HOME/.kube
  2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  3. sudo chown $(id -u):$(id -g) $HOME/.kube/config
  4.  

master安装Flannel

  1. kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

查看所有pod

  1. [root@k8s-master ~]# kubectl get pod -n kube-system
  2. NAME READY STATUS RESTARTS AGE
  3. coredns-bccdc95cf-6tx8r 1/1 Running 0 52m
  4. coredns-bccdc95cf-l7lv9 1/1 Running 0 52m
  5. etcd-k8s-master 1/1 Running 0 51m
  6. kube-apiserver-k8s-master 1/1 Running 0 51m
  7. kube-controller-manager-k8s-master 1/1 Running 0 51m
  8. kube-flannel-ds-amd64-sx7r9 1/1 Running 0 16m
  9. kube-proxy-xb6cc 1/1 Running 0 52m
  10. kube-scheduler-k8s-master 1/1 Running 0 51m

  

查看节点

  1. [root@k8s-master ~]# kubectl get node
  2. NAME STATUS ROLES AGE VERSION
  3. k8s-master Ready master 53m v1.15.0

  

加入node节点

在node节点上执行加入集群的命令

  1. kubeadm join 172.16.204.130:6443 --token 44basl.nx5l92iyq91a1fjw --discovery-token-ca-cert-hash sha256:2b317de2bc21973b245ceaa6570352172a16a6a4ac59a47fb7ef82bc
    036bb120

  

查看node1节点加入是否成功

在node1上执行docker ps 查看k8s组件是否已安装

在master上执行kubectl get nodes 查看节点信息

==========================================================================================================

部署 Dashboard

wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

vim   kubernetes-dashboard.yaml

安装Dashboard

kubectl apply -f kubernetes-dashboard.yaml

使用master节点ip地址+端口来访问,协议是https的

查看Dashboard端口信息:kubectl --namespace=kube-system get service kubernetes-dashboard

以我自己的服务器为访问对象,使用https://172.16.204.130:30310即可访问

登陆方式分为俩种:

1.kubeconfig

2.token

在master上执行

kubectl create serviceaccount dashboard-admin -n kube-system

kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

kubectl  get secret -n kube-system #查看token

查看token的具体信息

kubectl describe secret dashboard-admin-token-9s4zl -n kube-system

登陆成功的页面:

***dashboard无法访问排查

1.查看dashboard被k8s分配到了哪一台机器上

  1. [root@k8s-master log]# kubectl get pods --all-namespaces -o wide
  2. NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
  3. kube-system coredns-bccdc95cf-6tx8r / Running 3d14h 10.244.0.7 k8s-master <none> <none>
  4. kube-system coredns-bccdc95cf-l7lv9 / Running 3d14h 10.244.0.6 k8s-master <none> <none>
  5. kube-system etcd-k8s-master / Running 3d14h 172.16.204.130 k8s-master <none> <none>
  6. kube-system kube-apiserver-k8s-master / Running 3d14h 172.16.204.130 k8s-master <none> <none>
  7. kube-system kube-controller-manager-k8s-master / Running 3d14h 172.16.204.130 k8s-master <none> <none>
  8. kube-system kube-flannel-ds-amd64-qqglk / Running 11h 172.16.204.132 k8s-node2 <none> <none>
  9. kube-system kube-flannel-ds-amd64-sx7r9 / Running 3d13h 172.16.204.130 k8s-master <none> <none>
  10. kube-system kube-flannel-ds-amd64-sxt6x / Running 12h 172.16.204.131 k8s-node1 <none> <none>
  11. kube-system kube-proxy-h8mdt / Running 12h 172.16.204.131 k8s-node1 <none> <none>
  12. kube-system kube-proxy-jjdjp / Running 11h 172.16.204.132 k8s-node2 <none> <none>
  13. kube-system kube-proxy-xb6cc / Running 3d14h 172.16.204.130 k8s-master <none> <none>
  14. kube-system kube-scheduler-k8s-master / Running 3d14h 172.16.204.130 k8s-master <none> <none>
  15. kube-system kubernetes-dashboard-5dc4c54b55-nkrrs / Running 11h 10.244.1.5 k8s-node1 <none> <none>

2.查看dashboard的集群内部IP

  1. [root@k8s-master log]# kubectl get services --all-namespaces
  2. NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  3. default kubernetes ClusterIP 10.1.0.1 <none> /TCP 3d14h
  4. kube-system kube-dns ClusterIP 10.1.0.10 <none> /UDP,/TCP,/TCP 3d14h
  5. kube-system kubernetes-dashboard NodePort 10.1.179.144 <none> :/TCP 11h

3.通过curl集群IP来确认访问是否正常

  1. [root@k8s-master log]# curl -I -k https://10.1.179.144
  2. HTTP/1.1 OK
  3. Accept-Ranges: bytes
  4. Cache-Control: no-store
  5. Content-Length:
  6. Content-Type: text/html; charset=utf-
  7. Last-Modified: Mon, Dec :: GMT
  8. Date: Tue, Jul :: GMT

4.如果访问出现被防火墙拦截

vim /etc/systemd/system/multi-user.target.wants/docker.service

  1. #在server字段中添加
  2. ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/ -j ACCEPT
  3. #重启docker服务
  4. systemctl daemon-reload
  5. systemctl restart docker

k8s环境部署(一)的更多相关文章

  1. k8s环境部署本地.net core web项目

    上一篇文章,我们部署了docker+k8s环境,简单测试通过,但是,还没能将我们自己的项目部署上去,继续记录部署踩坑过程. 一.准备工作 1.当然是docker+k8s环境了,详情请看上一篇文档 ht ...

  2. k8s环境部署.net core web项目(docker本地仓库)

    在之前的文档中,我们部署了.net core web在k8s环境下,达成了集群管理项目的目的.但是,由于是本地部署,需要在所有的node节点都拉取好镜像,这是非常麻烦的,为了只维护一份代码,同步更新. ...

  3. K8S环境快速部署Kafka(K8S外部可访问)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. CentOS7.6部署k8s环境

    CentOS7.6部署k8s环境 测试环境: 节点名称 节点IP 节点功能 K8s-master 10.10.1.10/24 Master.etcd.registry K8s-node-1 10.10 ...

  5. 持续集成之应用k8s自动部署

    持续集成之应用k8s自动部署 Intro 上次我们提到了docker容器化及自动化部署,这仅仅适合个人项目或者开发环境部署,如果要部署到生产环境,必然就需要考虑很多因素,比如访问量大了如何调整部署,如 ...

  6. kubernetes学习与实践篇(二) kubernetes1.5 的安装和集群环境部署

    kubernetes 1.5 的安装和集群环境部署 文章转载自:http://www.cnblogs.com/tynia/p/k8s-cluster.html 简介: Docker:是一个开源的应用容 ...

  7. k8s二进制部署

    k8s二进制部署 1.环境准备 主机名 ip地址 角色 k8s-master01 10.0.0.10 master k8s-master02 10.0.0.11 master k8s-node01 1 ...

  8. spring-cloud-kubernetes服务发现之在k8s环境下开发spring cloud应用

    通常情况下,我们的线上的服务在迁移到k8s环境下的时候,都是采用平滑迁移的方案.服务治理与注册中心等都是采用原先的组件.比如spring cloud应用,在k8s环境下还是用原来的一套注册中心(如eu ...

  9. 记录一次k8s环境尝试过程(初始方案,现在已经做过很多完善,例如普罗米修斯)

    记录一次Team k8s环境搭建过程(初始方案,现在已经做过很多完善,例如普罗米修斯) span::selection, .CodeMirror-line > span > span::s ...

随机推荐

  1. vue实现吸顶

    data(){ return{ list:[], swiperOption:"", xiding : "", // 轮播高度 SwiperHeight:'' } ...

  2. Idea格式化快捷键无效,没反应

    Idea格式化快捷键无效,没反应 1,关闭网易云音乐快捷键 2,修改搜狗输入法快捷键 目前本人只遇到过这两种

  3. 什么是NoSQL,为什么要使用NoSQL?

    详见: https://blog.csdn.net/a909301740/article/details/80149552 https://baike.so.com/doc/5569749-57849 ...

  4. Kubernetes介绍与核心组件

    Kubernetes是什么? Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署.自动扩缩容.维护等功能. Kubernetes 特点 可移植: 支持公有云,私有云 ...

  5. Nginx负载均衡和HTTPS配置及集群搭建

    Nginx的高可用(HA)配置 1.高可用配置结构(画图说明) 2.KeepAlived的安装和配置 1.安装 yum install keepalived 2.keepalived.conf配置文件 ...

  6. Jmeter (一) 安装

    https://blog.csdn.net/ls1792304830/article/details/52718177 一.准备工具 1.Windows 操作系统 2.jmeter 3.JDk 依赖环 ...

  7. java-集合学习-底层实现

    集合分为两大类: Collection集合: 单个存储 Map集合: 按<键,值>对的形式存储,  <员工姓名,工资> Collection类关系图 Collection常见方 ...

  8. 第11章 Spring Boot使用Actuator

    在生产环境中,需要实时或定期监控服务的可用性,spring-Boot的Actuator 功能提供了很多监控所需的接口. Actuator是Spring Boot提供的对应用系统的自省和监控的集成功能, ...

  9. 生产者消费者问题--BlockingQueue

    # 代码: public class App { public static void main(String[] args) { BlockingQueue<Integer> queue ...

  10. 《编译原理》控制流语句 if 和 while 语句的翻译 - 例题解析

    <编译原理>控制流语句 if 和 while 语句的翻译 - 例题解析 将 if 和 while 语句翻译成四元式 注:不同教材会有小差异,使用 _ 或者 - ,如果是 -,请注意区分 - ...