记一次k8s单机部署

记一次k8s单机部署

目录

  • [环境]
  • [基本安装]
  • [k8s集群初始化]
  • [安装过程中遇到的问题]
  • [安装完成后的配置]
  • [配置tomcat RC]
  • [配置tomcat service]
  • [查看战果]
  • [总结]

版本记录

编号 时间 备注
v1.0.0 2019.02.21 文章创建
v1.0.1 2019.03.18 目录整改
#基本安装 (补全缺失内容)

开始

在开始之前,说一下本次记录的目的 部署kubernetes单机集群
在理解k8s之前,先不管啥情况,把东西跑起来,与我最熟悉的东西关联起来,这样我个人觉得有助于各种理解,至少比上来接触一堆“奇奇怪怪的概念”要强。

// todo docker 详细文章(待完成。。。)
// todo k8s 其他相关内容(待完成。。。)
// todo 概念还是要懂的,回头在补上 (待完成。。。)

环境

基本配置

内容 参数
操作系统 centos7
机器环境 VMware虚拟机
部署目标 tomcat任意版本

虚拟机配置

内容 参数
网卡模式 NAT
CPU核心数 2
内存 2G

基本安装

安装docker

// 安装docker
$ yum install -y docker-ce
// 开机启动 && 启动服务
$ systemctl enable docker && systemctl start docker

安装必要命令

# 在/etc/yum.repos.d 下创建k8s.repos, 并添加如下内容

name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
// 安装
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet  && systemctl start kubelet

拉取镜像

google 镜像并不在docker库中,因此要防止墙的问题,需要找代替镜像

// 查看kubeadm镜像
$ kubeadm config images list

// 结果
k8s.gcr.io/kube-apiserver:v1.13.3
k8s.gcr.io/kube-controller-manager:v1.13.3
k8s.gcr.io/kube-scheduler:v1.13.3
k8s.gcr.io/kube-proxy:v1.13.3
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.6

// 执行如下脚本(没有翻墙的同学只能通过阿里云镜像或者其他镜像)
$ for i in `kubeadm config images list`; do 
  imageName=${i#k8s.gcr.io/}
  docker pull registry.aliyuncs.com/google_containers/$imageName
  docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
  docker rmi registry.aliyuncs.com/google_containers/$imageName
done;

// 开机启动 && 启动服务
$ systemctl enable kubelet && systemctl start kubelet

k8s集群初始化

开通必要端口号 防止不必要的问题出现

// 6443
firewall-cmd --zone=public --add-port=6443/tcp --permanent && firewall-cmd --reload
// 10250
firewall-cmd --zone=public --add-port=10250/tcp --permanent && firewall-cmd --reload
// 安装命令
$ kubeadm init

安装过程中遇到的问题

[ERROR NumCPU]: the number of available CPUs 1 is less than the required 2

// 解决:
// 虚拟机修改配置
image.png
[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1

// 解决:
// 编辑配置
$ vi /etc/sysctl.conf
// 添加如下内容
net.bridge.bridge-nf-call-iptables = 1
[ERROR Swap]: running with swap on is not supported. Please disable swap

// 解决:
// 禁用swap功能
$ swapoff -a

// 修改配置
$ vi /etc/fstab
# 注释如下内容
# k8s need disabled
# /dev/mapper/centos-swap swap                    swap    defaults        0 0

安装成功

Your Kubernetes master has initialized successfully!

安装完成后的配置

// 安装成功后根据提示配置
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
// master 参与工作(单机模式必备)
kubectl taint nodes --all node-role.kubernetes.io/master-

这边有一个BUG遇到,实际服务器可能不存在,但是虚拟机使用NAT模式,并且网卡配置为dhcp模式,动态获取ip
导致一些里问题
eg:coredns 启动失败
eg:kube-apiserver-localhost.localdomain 启动失败
解决改为静态配置

BOOTPROTO=static

// ...省略...

# ip 为自己实际环境ip
IPADDR=192.168.228.128
GATEWAY=192.168.228.2
NETMASK=255.255.255.0
# DNS酌情处理但是必须要加
DNS1=8.8.8.8
DNS2=114.114.114.114

查看k8s集群情况(现在只有system pod)

$ kubectl get pods --all-namespaces

// 结果如下
kube-system   coredns-86c58d9df4-48pxx                        1/1     Running   0          6m10s
kube-system   coredns-86c58d9df4-wdlmr                        1/1     Running   0          6m10s
kube-system   etcd-localhost.localdomain                      1/1     Running   0          5m22s
kube-system   kube-apiserver-localhost.localdomain            1/1     Running   0          5m18s
kube-system   kube-controller-manager-localhost.localdomain   1/1     Running   0          5m4s
kube-system   kube-proxy-56m56                                1/1     Running   0          6m10s
kube-system   kube-scheduler-localhost.localdomain            1/1     Running   0          5m18s
kube-system   weave-net-585s5                                 2/2     Running   0          60s

开启单机模式

$kubectl taint nodes --all node-role.kubernetes.io/master-

查看master节点情况

不要慌,这里NotReady 完全正常
安装网卡插件后,查询即可变为Ready

$ kubectl get nodes
// 结果
localhost.localdomain   NotReady    master   144m   v1.13.3

安装网络插件

// 这边有很多选择,本次使用`weave`
// 配置地址 https://kubernetes.io/docs/concepts/cluster-administration/addons/

$ kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

配置tomcat RC

配置docker镜像

// 查看所需要镜像
docker search tomcat
// 下载tag为tomcat的images(默认版本为lasted)
docker pull tomcat

replicas: 1 pod实例个数为1
image: tomcat docker镜像
name: tomcat-demo rc名称
spec:template: 当运行实例个数小于replicas时候,rc会根据spec:template: 自动生成对应个数pod

apiVersion: v1
kind: ReplicationController
metadata:
  name: tomcat-demo
spec:
  replicas: 1
  selector:
    app: tomcat-demo
  template:
    metadata:
      labels:
        app: tomcat-demo
    spec:
      containers:
      - name: tomcat-demo
        image: tomcat
        ports:
        - containerPort: 8080

运行配置并查看结果

// 运行yaml
$ kubectl create -f tomcat-demo-rc.yaml
// 结果如下
tomcat-demo   NodePort    10.105.57.5   <none>        8080:30001/TCP   14s

配置tomcat service

nodePort: 30001 映射端口8080:30001
name: tomcat-demo 服务名

tomcat-demo-svc.yaml配置文件内容

apiVersion: v1
kind: Service
metadata:
  name: tomcat-demo
spec:
  type: NodePort
  ports:
   - port: 8080
     nodePort: 30001
  selector:
    app: tomcat-demo

运行配置并查看结果

// 运行yaml
$ kubectl create -f tomcat-demo-svc.yaml
// 结果如下
tomcat-demo   NodePort    10.105.57.5   <none>        8080:30001/TCP   14s

注意 svc与rc文件可以写在同一个yaml中
开通端口号

$ firewall-cmd --zone=public --add-port=30001/tcp --permanent && firewall-cmd --reload

查看战果

浏览器中查看结果 http://${ip地址}:30001/

image.png

总结

安装过生中遇到不少坑,但是都都克服了,最后加入tomcat环节我觉得很有必要,作为初学者,很多文章,都在讲“k8s集群”, 各种集群部署文章,跟着流程安装了一圈,对错与否都模棱两可,还是需要一个“可视化的结果”

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容