登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 658|回复: 0

测试情况搭建(k8s-1.13单节点)

[复制链接]

179

主题

179

帖子

0

现金

黑狼菜鸟

Rank: 1

积分
0
发表于 2019-2-25 22:47:00 | 显示全部楼层 |阅读模式 来自 江苏徐州
本系列文章已经全部开源到github:

http://github.com/farmer-hutao/k8s-source-code-analysis
接待各人到场这本开源电子书的编写
1. 概述

各人留意哦,不肯定要先搭建好情况再看源码,大可以先看一个组件,感觉差不多明白了,想要run一把,想要改几行试试的时间回过头来搭建k8s情况。
固然,各人开始看源码的时间,我信赖各位都是搭建过不少次k8s集群,敲过N多次kubectl下令了,以是下面我不会表明太底子的下令是做什么的。
本日我们要做的是搭建一个单机版的k8s情况,用于背面的学习。固然k8s的情况搭建没有openstack来的复杂,但是由于网络等七零八落的题目,在国内手动搭建一个五脏俱全的k8s也不算太轻易,一个不警惕就会被乱七八遭的停滞消逝爱好。本日看看我能不能让各人以为这个过程无痛吧~
2. kubeadm简介

选择一个好的工具很紧张!各人在刚开始学习k8s的时间应该都用二进制文件一步一步搭建过集群吧,谁人过程是不是很酸爽?手动一步一步搭建情况对于初学者来说确实大有裨益,可以相识各个组件的细节。我已经懒掉了,我决定从浩繁k8s主动化安装方案中选择一个来搭建这次的k8s情况。
kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,这不是一个单独的项目哦,我们在kubernetes源码里可以看到这个组件(kubernetes/cmd/kubeadm/):
khr188e5omU58S88.jpg
kubeadm这个工具可以通过简朴的kubeadm init和kubeadm join下令来创建一个kubernetes集群,kubeadm提供的其他下令都比力普通易懂:

  • kubeadm init 启动一个master节点;
  • kubeadm join 启动一个node节点,参加master;
  • kubeadm upgrade 更新集群版本;
  • kubeadm config 从1.8.0版本开始已经用处不大,可以用来view一下设置;
  • kubeadm token 管理kubeadm join的token;
  • kubeadm reset 把kubeadm init或kubeadm join做的更改规复原状;
  • kubeadm version打印版本信息;
  • kubeadm alpha预览一些alpha特性的下令。
关于kubeadm的成熟度官方有一个表格:
AreaMaturity LevelCommand line UXGAImplementationGAConfig file APIbetaCoreDNSGAkubeadm alpha subcommandsalphaHigh availabilityalphaDynamicKubeletConfigalphaSelf-hostingalpha重要特性实在都已经GA了,固然另有一些小特性仍处于活泼开辟中,但是团体已经靠近准生产级别了。对于我们的场景来说用起来已经绰绰有余!
3. 操纵体系预备

我们先利用一个机子来装,背面必要拓展可以增长节点,利用kubeadm join可以很轻松扩展集群。
3.1. 体系信息


  • 内存:2G
  • CPU:2
  • 磁盘:20G
体系版本和内核版本如下所示,各人不必要严酷和我保持同等,不要利用太旧的就行了。
# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
# uname -r
3.10.0-862.9.1.el7.x86_64
3.2. 设置selinux和firewalld

# Set SELinux in permissive modesetenforce 0sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config# Stop and disable firewalldsystemctl disable firewalld --now3.3. 体系参数与内核模块

# 修改内核参数cat /etc/sysctl.confsysctl -p4. 安装docker

先看一下有哪些可用版本:yum list docker-ce --showduplicates | sort -r
vBjvj26HvB2czCF7.jpg

  • 我们选择一个版本安装:
yum install docker-ce-<span class="token tag" style="box-sizing: border-box;-webkit-tap-highlight-color: transparent;text-size-adjust: none;-webkit-font-smoothing: antialiased;font-size: inherit;color: rgb(153, 0, 85);">

  • 这里我选择18.03.1,以是我用的下令是:
yum install docker-ce-18.06.3.ce

  • 可以用rpm下令看一下docker-ce这个rpm包带来了哪些文件:
btwafRprdF6ZVnVN.jpg

  • 启动docker:
systemctl enable docker --now

  • 检察服务状态:
systemctl status docker
5. 安装kubeadm、kubelet和kubectl

kubeadm不管kubelet和kubectl,以是我们必要手动安装kubelet和kubectl:
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
假如你看到这个教程的时间yum源里已经有了1.14版本的kubeadm,那么要么你装新版本,要么通过上面装docker同样的方式指定1.13版本安装,我这里利用的是1.13.3。
末了启动kubelet:
systemctl enable --now kubelet
6. 镜像预备

为了办理国内广泛访问不到k8s.gcr.io的题目,我们从mirrorgooglecontainers下载image,然后打个tag来绕过网络限定:
docker pull docker.io/mirrorgooglecontainers/kube-apiserver-amd64:v1.13.3docker tag docker.io/mirrorgooglecontainers/kube-apiserver-amd64:v1.13.3 k8s.gcr.io/kube-apiserver:v1.13.3docker pull docker.io/mirrorgooglecontainers/kube-controller-manager-amd64:v1.13.3docker tag docker.io/mirrorgooglecontainers/kube-controller-manager-amd64:v1.13.3 k8s.gcr.io/kube-controller-manager:v1.13.3docker pull docker.io/mirrorgooglecontainers/kube-scheduler-amd64:v1.13.3docker tag docker.io/mirrorgooglecontainers/kube-scheduler-amd64:v1.13.3 k8s.gcr.io/kube-scheduler:v1.13.3docker pull docker.io/mirrorgooglecontainers/kube-proxy-amd64:v1.13.3docker tag docker.io/mirrorgooglecontainers/kube-proxy-amd64:v1.13.3 k8s.gcr.io/kube-proxy:v1.13.3docker pull docker.io/mirrorgooglecontainers/pause-amd64:3.1docker tag docker.io/mirrorgooglecontainers/pause-amd64:3.1 k8s.gcr.io/pause:3.1docker pull docker.io/mirrorgooglecontainers/etcd-amd64:3.2.24docker tag docker.io/mirrorgooglecontainers/etcd-amd64:3.2.24 k8s.gcr.io/etcd:3.2.24docker pull docker.io/coredns/coredns:1.2.6docker tag docker.io/coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.67. 安装k8s master

kubeadm init --pod-network-cidr=10.100.0.0/16
如上,跑kubeadm init下令后等几分钟。
假如碰到报错,对着错误信息修正一下。好比没有关闭swap会碰到error,体系cpu不敷会碰到error,网络不通等等都会堕落,细致看一下错误信息一样平常都好办理~
跑完上面的init下令后,会看到雷同如下的输出:
Your Kubernetes master has initialized successfully!To start using your cluster, you need to run the following as a regular user:  mkdir -p $HOME/.kube  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config  sudo chown $(id -u):$(id -g) $HOME/.kube/configYou should now deploy a pod network to the cluster.Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:  http://kubernetes.io/docs/concepts/cluster-administration/addons/You can now join any number of machines by running the following on each nodeas root:  kubeadm join 192.168.19.100:6443 --token i472cq.tr9a81qxnyqc5zj2 --discovery-token-ca-cert-hash sha256:acba957db29e0efbffe2cf4e484521b3b7e0f9d5c2ab7f9db68a5e31565d0d66上面输出告诉我们还必要做一些工作:
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config# flannelkubectl apply -f http://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml稍等一会,应该可以看到node状态酿成ready:
# kubectl get node
NAME STATUS ROLES AGE VERSION
kube-master Ready master 23m v1.13.3
假如你的情况迟迟都是NotReady状态,可以kubectl get pod -n kube-system看一下pod状态,一样平常可以发现题目,好比flannel的镜像下载失败啦~
当node Ready的时间,我们可以看到pod也全部ready了:
P77SzvESTxItVc96.jpg
再看一下焦点组件状态:
m0zVJvNJSS1yjq5A.jpg
末了留意到kube-master这个node上有一个Taint:
# kubectl describe node kube-master | grep Taints
Taints: node-role.kubernetes.io/master:NoSchedule
默认master节点是不跑业务pod的,我们临时只有一个node,以是先去掉这个Taint:
# kubectl taint node kube-master node-role.kubernetes.io/master-
node/kube-master untainted
# kubectl describe node kube-master | grep Taints
Taints:
8. 情况验证

我们来跑一个pod,证实情况正常可用了:
写一个yaml:
apiVersion: apps/v1
kind: Deployment
metadata:  name: mytomcatspec:  replicas: 1  selector:    matchLabels:      app: mytomcat
 template:    metadata:      name: mytomcat
       labels:        app: mytomcat
   spec:      containers:      - name: mytomcat        
       image: tomcat:8        ports:        - containerPort: 8080如上内容生存为tomcat-deploy.yaml,实行kubectl create -f tomcat-deploy.yaml,然后看pod状态:
WPo8Z1xmE18pwwIv.jpg
确认了,是认识的Running,哈哈,根本算大功告成了!末了我们看一下tomcat服务能不能访问到:
lsyR7LiMpaCyScyW.jpg
很完善,假如加个svc设置,就可以或许通过欣赏器访问到汤姆猫界面了!
DICfsj2ccR09bCPC.jpg




上一篇:磊哥测评之MongoDB篇
下一篇:Linux下设置JavaWeb情况
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-5-2 21:09 , Processed in 0.059114 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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