单机部署k8s,以及使用kuboard面板部署应用(详细版)

单机部署k8s以及kuboard部署nginx应用

单机部署k8s

一、系统配置修改

1.关闭selinux和防火墙

setenforce 0

systemctl stop firewdlld

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

systemctl disable firewalld

2.禁用swap

swapoff –a

打开/etc/fstab 注释掉swap

3.修改内核参数和模块

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

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

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

EOF

4.使内核参数和模块生效

sysctl --system

modprobe br_netfilter

lsmod | grep br_netfilter

5.关闭交换内存,否则kubelet将无法启动

swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

二、docker安装

安装docker一定要对应k8s的版本,可以上网查各个版本之间的对应关系

1.查询已经安装的版本,如果不对应将其卸载,安装指定版本

yum list installed | grep docker

yum remove docker-ce.x86_64 –y

2.选择当前仓库中可以安装的版本

yum list docker-ce --showduplicates | sort –r

yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7

systemctl start docker

systemctl enable docker

3.修改docker镜像仓库为国内仓库

mkdir /etc/docker

cat <<EOF > /etc/docker/daemon.json

{

  "registry-mirrors": [

    "https://3laho3y3.mirror.aliyuncs.com"

  ]

}

EOF

systemctl restart docker

4.设置阿里云yum仓库并安装k8s组件

cat <<EOF > /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

EOF

yum -y install kubelet-1.13* kubeadm-1.13* kubectl-1.13*

systemctl start kubelet

systemctl enable kubelet

5.下载k8s相关镜像并打标签

docker pull mirrorgooglecontainers/kube-apiserver:v1.13.3

docker pull mirrorgooglecontainers/kube-controller-manager:v1.13.3

docker pull mirrorgooglecontainers/kube-scheduler:v1.13.3

docker pull mirrorgooglecontainers/kube-proxy:v1.13.3

docker pull mirrorgooglecontainers/pause:3.1

docker pull mirrorgooglecontainers/etcd:3.2.24

docker pull coredns/coredns:1.2.6

    

docker tag mirrorgooglecontainers/kube-apiserver:v1.13.3 k8s.gcr.io/kube-apiserver:v1.13.3

docker tag mirrorgooglecontainers/kube-controller-manager:v1.13.3 k8s.gcr.io/kube-controller-manager:v1.13.3

docker tag mirrorgooglecontainers/kube-scheduler:v1.13.3 k8s.gcr.io/kube-scheduler:v1.13.3

docker tag mirrorgooglecontainers/kube-proxy:v1.13.3 k8s.gcr.io/kube-proxy:v1.13.3

docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1

docker tag mirrorgooglecontainers/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24

docker tag coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6

三、初始化k8s和网络

1.初始化k8s

 kubeadm init  --apiserver-advertise-address 119.91.218.139 --kubernetes-version=v1.13.3 --pod-network-cidr=10.100.0.0/16

初始化常见碰上的问题:超时  引起这个问题的其中一个原因是因为k8s在网络初始化的时候是不能指定公网ip,需要指定内网ip

解决办法一:kubeadm init --kubernetes-version=v1.13.3 --pod-network-cidr=10.100.0.0/16   不要指定ip

解决办法二:初始化的时候快速打开另一个终端窗口,打开文件 vim /etc/kubernetes/manifests/etcd.yaml 修改以下两条

这是因为k8s在初始化的时候默认指定etcd默认绑定的外网ip,初始化的时候会生成yaml文件,这时候快速修改,k8s会自动更新yaml文件并重新初始化

以上是我的解决办法,另外初始化常见错误请见以下链接:

kubeadm init初始化k8s集群时报错,[kubelet-check] Initial timeout of 40s passed._「已注销」的博客-CSDN博客_kubeadm init timeout

2.接着执行以下命令

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

3.安装容器网络插件

kubectl apply -f https://gitee.com/www.freeclub.com/blog-images/raw/master/source/kube-flannel.yml

如果上述安装失败则以下安装:

查看 /opt/cni/bin

发现缺少flannel文件

下载cni网络插件

wget https://github.com/containernetworking/plugins/releases/download/v0.8.6/cni-plugins-linux-amd64-v0.8.6.tgz

tar -zxvf cni-plugins-linux-amd64-v0.8.6.tgz

解压后的文件放在/opt/cni/bin中,替换其中没有的文件

4.因为是单机部署,这时候的master节点是有污点,不能作为部署节点部署使用的

去污点

kubectl get nodes 发现主节点 k8s-master是notready状态

查看污点策略 kubectl get no -o yaml | grep taint -A 5

发现master节点都是NoSchedule

5.去除污点,使主节点能部署pod

kubectl taint nodes --all node-role.kubernetes.io/master-  #去除所有的污点

kubectl taint nodes k8s-master(指定节点) node-role.kubernetes.io/master-   #去除指定节点污点

# 再次查看,如果没有任何输出则污点去除成功

kubectl get no -o yaml | grep taint -A 5

6.查看pod节点是否成功启动,所有节点都是running

kubectl get pods --all-namespaces

四、kuboard部署简单的应用nginx

1.kuboard安装

docker run -d \

  --restart=unless-stopped \

  --name=kuboard \

  -p 80:80/tcp \

  -p 10081:10081/tcp \

  -e KUBOARD_ENDPOINT="http://119.91.218.139:80" \

  -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \

  -v /root/kuboard-data:/data \

  eipwork/kuboard:v3

2.访问登录kuboard

http://your-host-ip:80

用户名:admin

密码:kuboard123

3.添加导入集群

选择添加集群

选择 使用 ServiceAccount kuboard-admin 并 点击 default 名称空间 将切换到 default 名称空间首页,如下所示:

创建工作负载

并填写表单如下:

字段名

填写内容

备注

服务类型

Deployment

服务分层

展现层

Kuboard使用这个字段确定将部署显示在微服务架构的哪个分层

服务名称

nginx

服务分层的前缀 + 服务名 组成最终的 K8S Deployment name

副本数

1

replicas

点击 容器信息 Tab 页,在 容器信息 Tab 页中点击 添加工作容器 按钮,如下图所示:

并填写表单如下:

字段名

填写内容

备注

容器名称

nginx

镜像

nginx:1.7.9

抓取策略

Always

每次创建 Pod 都尝试抓取镜像

Ports

TCP : 80

该容器组监听 TCP 80 端口

保存、应用,点击访问

猜你喜欢

转载自blog.csdn.net/love_THL/article/details/128332247
今日推荐