kubernetes 安装与搭建

kubernetes 安装与搭建

K8S 2014年6月由Google公司正式公布来并宣布开源

是容器集群管理系统,开源平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能

集群结构 核心角色

master(管理节点)-- 集群控制

node(计算节点)--具体应用运行环境

images(镜像仓库)

 

安装部署

 

两种方式

源码:下载源码或编译好的二进制,源码安装

容器 :官方镜像,直接下载

 

环境要求 (使用华为云centOS7.5版本满足要求)

内核版本 >=3.10

最低配置 2CPU,2G内存

禁用swap(华为云默认禁用),SELinux

卸载防火墙 firewalld-*

节点中主机名不重复,Mac地址或product_uuid

初始化镜像仓库

[root@registry ~]# yum makecache #下载仓库

[root@registry ~]# systemctl enable --now docker-distribution #开机自启

拷贝云盘 kubernetes/v1.17.6/registry/myos目录 到 仓库服务器

[root@registry ~]# ls busybox.tar.gz init-img.sh myos.tar.gz

[root@registry ~]# chmod 755 init-img.sh #给脚本加755权限

[root@registry ~]# ./init-img.sh #执行脚本

[root@registry ~]# curl http://192.168.1.100:5000/v2/myos/tags/list #查看镜像 {"name":"myos","tags":["php-fpm","httpd","nginx","v1804"]}

master

 

 

API server 是整个系统对外接口 存储于etcd中,

Scheduler 负责对集群内部的资源进行调度,相当于' 调度室'

Controller manger 负责管理控制器

etcd键值管理,基于Go语言实现

实际存放/key目录下

也可以指定目录结构 /dir1/dir2/key

etcd 有kubernetes集群自动管理,用户无需手动干预

ectdctl客户端管理程序

1、购买云主机 master IP为192.168.1.21 配置2CPU,2G内存

禁用SELinux,swap,卸载firewalld-*

2、配置yum (跳板机)

将k8s-install传到proxy跳板机上,解压缩

[root@ecs-proxy ~]# cp -a k8s-install /var/ftp/localrepo/ #拷贝到/var/ftp/localrepo/

[root@ecs-proxy ~]# cd /var/ftp/localrepo/ #进入目录

root@ecs-proxy localrepo]# createrepo --update . #更新仓库

3、在master上安装软件包

[root@master ~]# yum makecache #刷新缓存

[root@master ~]# mkdir -p /etc/docker

[root@master ~]# vim /etc/docker/daemon.json

[root@master ~]# systemctl enable --now docker kubelet 

[root@master ~]# docker info |grep Cgroup Cgroup Driver: systemd

[root@master ~]# vim /etc/sysctl.d/k8s.conf

[root@master ~]# modprobe br_netfilter

[root@master ~]# sysctl --system

[root@ecs-proxy localrepo]# cd

[root@ecs-proxy ~]# ls 5

[root@ecs-proxy ~]# cd

[root@ecs-proxy ~]# cd 5

[root@ecs-proxy 5]# ls kubernetes public

[root@ecs-proxy 5]# cd kubernetes/

[root@ecs-proxy kubernetes]# cd v1.17.6/

[root@ecs-proxy v1.17.6]# ls base-images dashboard ingress metrics prometheus config flannel k8s-install node-install registry

[root@ecs-proxy v1.17.6]# cd base-images/

[root@ecs-proxy base-images]# scp -r * root@192.168.1.21:/root/ 

[root@ecs-proxy base-images]# ssh 192.168.1.21

[root@master ~]# ls coredns.tar.gz kube-apiserver.tar.gz kube-scheduler.tar.gz etcd.tar.gz kube-controller-manager.tar.gz pause.tar.gz k8s-install.tar.gz kube-proxy.tar.gz [root@master ~]# for i in *.tar.gz;do docker load -i ${i};done

[root@master ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE k8s.gcr.io/kube-proxy v1.17.6 92f9a31ce92a 14 months ago 117MB k8s.gcr.io/kube-apiserver v1.17.6 c5c678ed2546 14 months ago 171MB k8s.gcr.io/kube-controller-manager v1.17.6 abded685bb39 14 months ago 161MB k8s.gcr.io/kube-scheduler v1.17.6 63f08589ff5e 14 months ago 94.4MB k8s.gcr.io/coredns 1.6.5 70f311871ae1 21 months ago 41.6MB k8s.gcr.io/etcd 3.4.3-0 303ce5db0e90 21 months ago 288MB k8s.gcr.io/pause 3.1 da86e6ba6ca1 3 years ago 742kB [root@master ~]# docker images |awk '$2!="TAG"{print $1,$2}'|while read _f _v;do

docker tag ${f}:${v} 192.168.1.100:5000/${f##*/}:${v}; docker push 192.168.1.100:5000/${f##*/}:${v}; docker rmi ${f}:${v}; done

[root@master ~]# curl http://192.168.1.100:5000/v2/_catalog {"repositories":["coredns","etcd","kube-apiserver","kube-controller-manager","kube-proxy","kube-scheduler","myos","pause"]}

5、tab 键设置

[root@master ~]# kubectl completion bash >/etc/bash_completion.d/kubectl [root@master ~]# kubeadm completion bash >/etc/bash_completion.d/kubeadm [root@master ~]# exit

6、下载ipvs代理软件包

[root@master ~]# yum install -y ipvsadm ipset

7、配置主机名

[root@master ~]# vim /etc/hosts 192.168.1.21 master 192.168.1.31 node-0001 192.168.1.32 node-0002 192.168.1.33 node-0003 192.168.1.100 registry

***/etc/cloud/cloud.cfg中 # localhost此行注释,否则会自动添加127.0.0.1 master

manage_etc_hosts: localhost

8、使用kubeadm部署

应答文件在云盘的 kubernetes/v1.17.6/config 目录下

#拷贝 kubeadm-init.yaml 到 master 云主机 init 目录下

[root@master ~]# mkdir init;cd init #创建目录 [root@master ~]# cp -r kubeadm-init.yaml init/ [root@master ~]# cd init/ [root@master init]# ls kubeadm-init.yaml [root@master init]# kubeadm init --config=kubeadm-init.yaml |tee master-init.log #安装,tee不影响屏幕显示,做日志

验证安装结果

[root@master ~]# kubectl version #可以看到服务器和客户端版本

Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.6", GitCommit:"d32e40e20d167e103faf894261614c5b45c44198", GitTreeState:"clean", BuildDate:"2020-05-20T13:16:24Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}

Server Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.6", GitCommit:"d32e40e20d167e103faf894261614c5b45c44198", GitTreeState:"clean", BuildDate:"2020-05-20T13:08:34Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}

[root@master ~]# kubectl get componentstatuses #没有报错

NAME STATUS MESSAGE ERROR controller-manager Healthy ok scheduler Healthy ok etcd-0 Healthy {"health":"true"}

k8s配置文件

需要修改:

服务器地址

仓库地址

版本改成安装的版本

容器配置(添加podsubnet10.244.0.0/16)

添加:

apiversion:kubeproxy.config.k8s.io/vlalpha1 #资源版本号

kind:kubeproxyConfiguration #资源类型

mode :ipvs #运行模式

node节点配置

购买三台云主机

node-0001 192.168.1.31 2CPU,2G内存

node-0002 192.168.1.32 2CPU,2G内存

node-0003 192.168.1.33 2CPU,2G内存

加入集群 token 相当于证明文件

token-ca-cert-hash 验证文件

获取token

 

[root@master ~]# kubeadm token create --ttl=0 --print-join-command #创建加print-join-command 显示加入集群命令

[root@master ~]# kubeadm token list #获取

8v6k9v.ntidwhpa41hqlegb

[root@master ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt |openssl rsa -pubin -outform der |openssl dgst -sha256 -hex #获取token的hash,

writing RSA key (stdin)= cc265e435a54c0e8fecf48bd18169ef74bc1746650ef1506f5af04ad785e4e76             #根据随机生成的

日志中有加入集群命令

加入集群 禁用swap,SELinux,卸载防火墙firewalld-*,

[root@ecs-proxy ~]# cd node-install/

[root@ecs-proxy node-install]# vim files/hosts ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 192.168.1.21 master 192.168.1.31 node-0001 192.168.1.32 node-0002 192.168.1.33 node-0003 192.168.1.100 registry

[root@ecs-proxy node-install]# vim node_install.yaml ... ... vars: master: '192.168.1.21:6443' token: 'fm6kui.mp8rr3akn74a3nyn' token_hash: 'sha256:f46dd7ee29faa3c096cad189b0f9aedf59421d8a881f7623a543065fa6b0088c' ... ...

[root@ecs-proxy node-install]# ansible-playbook node_install.yaml

验证安装

[root@master ~]# kubectl get nodes

NAME STATUS ROLES AGE VERSION

master NotReady master 130m v1.17.6

node-0001 NotReady <none> 2m14s v1.17.6

node-0002 NotReady <none> 2m15s v1.17.6

node-0003 NotReady <none> 2m9s v1.17.6

拷贝云盘 kubernetes/v1.17.6/flannel 目录到 master 上

1、上传镜像到私有仓库

[root@master ~]# cd flannel
[root@master flannel]# docker load -i flannel.tar.gz
[root@master flannel]# docker tag quay.io/coreos/flannel:v0.12.0-amd64 192.168.1.100:5000/flannel:v0.12.0-amd64
[root@master flannel]# docker push 192.168.1.100:5000/flannel:v0.12.0-amd64

2、修改配置文件并安装

[root@master flannel]# vim kube-flannel.yml

128: "Network": "192.168.1.21/16",                                #此处填写master IP

172: image: 192.168.1.100:5000/flannel:v0.12.0-amd64

186: image: 192.168.1.100:5000/flannel:v0.12.0-amd64

227-结尾: 删除

[root@master flannel]# kubectl apply -f kube-flannel.yml

3、验证结果

[root@master flannel]# kubectl get nodes         #状态为Ready,集群搭建完成

NAME STATUS ROLES AGE VERSION

     master Ready master 26h v1.17.6

node-0001 Ready <none> 151m v1.17.6

node-0002 Ready <none> 152m v1.17.6

node-0003 Ready <none> 153m v1.17.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值