在一台机器上搭建单节点k8s集群

  1. 做的前提需要把自己需要的rpm包提前放到app目录下!!!
  2. 设置hostname
    1. hostnamectl set-hostname 机器名
    2. 修改/etc/hosts,加入一行”本机ip 机器名”,例如

192.168.12.33 master

  1. 升级内核
    1. 进入app/rpm/kernel执行yum localinstall *.rpm将安装好4.17.11-1.el7.elrepo版本的内核,然后执行reboot重启
    2. 配置新内核为开机默认内核(此方法适配bios,uefi略有不同自行百度)
      1. awk -F\' /^menuentry/{print\$2} /etc/grub2.cfg列出已安装内核,从上到下为编号0开始的列表,编号可能不显示
      2. grub2-set-default 刚刚4.17内核的编号
      3. cat /boot/grub2/grubenv |grep saved查看saved_entry是否为刚刚设置的编号
      4. grub2-mkconfig -o /boot/grub2/grub.cfg重建grub2
      5. 重启后执行uname -a查看是否为想要的内核
  2. 配置内核参数
    1. 创建/etc/modules-load.d/k8s.conf文件内容为br_netfilter
    2. 创建/etc/sysctl.d/k8s.conf文件,内容为

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

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

    1. sysctl --system
  1. 关闭并禁用防火墙 systemctl stop firewalld&& systemctl disable firewalld
  2. 禁用selinux
    1. 先当场禁用setenforce 0
    2. 永久禁用(重启后生效)修改/etc/selinux/config将SELINUX=enforcing改为SELINUX=disabled
  3. 禁用swap
    1. (如果已挂载)卸载交换分区 swapoff -a
    2. 将/etc/fstab中的swap行注释掉

安装Docker

  1. 进入app/rpm/docker执行yum localinstall *.rpm将安装好20.10.12版本的docker
  2. 启动并设置docker开机启动systemctl start docker&&systemctl enable docker
  3. 修改docker的cgroup driver
    1. systemctl stop docker停止docker服务
    2. 创建/etc/docker/daemon.json文件,内容为

{   

"exec-opts": ["native.cgroupdriver=systemd"],   

"log-driver": "json-file",   

"log-opts": {     "max-size": "100m"   },   

"storage-driver": "overlay2"

}

    1. systemctl start docker重启docker

导入平台镜像

进入app/images使用docker load xxx.tar.gz命令一一导入

安装kubernetes

进入app/rpm/kubernetes执行yum localinstall *.rpm将安装好1.16.3版本的kubernetes

初始化节点

  1. 执行kubeadm init --kubernetes-version=v1.16.3 --apiserver-advertise-address=xxx.yyy.zzz.uuuu --pod-network-cidr=10.244.0.0/16

--apiserver-advertise-address内容为本机ip地址,pod-network-cidr不要变更,此为flannel的默认服务地址范围

初始化输出结果的三条命令一定要执行,不然初始化不会成功。

  1. 执行kubectl get pod -A -o wide检查容器状态,应该一共有七个容器,除了两个coredns是pending外其他容器都应为ready并且在running
  2. 为了使我们的master节点也能部署服务,执行kubectl taint nodes 主机名 node-role.kubernetes.io/master-
  3. 部署flannel
    1. 提前下载好容器,这里我忘记放进install包了,可以试下直接执行4.2,不成功再去下载
    2. 执行kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    3. 应出现类似以下结果

podsecuritypolicy.extensions/psp.flannel.unprivileged created clusterrole.rbac.authorization.k8s.io/flannel created clusterrolebinding.rbac.authorization.k8s.io/flannel created serviceaccount/flannel created configmap/kube-flannel-cfg created daemonset.extensions/kube-flannel-ds-amd64 created daemonset.extensions/kube-flannel-ds-arm64 created daemonset.extensions/kube-flannel-ds-arm created daemonset.extensions/kube-flannel-ds-ppc64le created daemonset.extensions/kube-flannel-ds-s390x created

    1. 执行kubectl get pod -A -o wide在kube-system明明空间内应有flannel容器

安装helm

  1. 在app内执行tar zxf helm-v3.7.2-linux-amd64.tar.gz
  2. 将helm添加进path, mv linux-amd64/helm /usr/local/bin/helm

拉取nginx

  1. 添加应用仓库,执行helm repo add bitnami https://charts.bitnami.com/bitnami
  2. helm install my-release bitnami/nginx

部署nginx

执行helm install my-release bitnami/nginx将刚刚拉取的nginx镜像部署为my-release

建立服务

  1. 执行kubectl expose deployment my-release-nginx  --type=NodePort --name=nginx-test,将my-release暴露为nodeport模式的nginx-test服务
  2. 执行kubectl describe services nginx-test可以检查刚刚部署的服务,其中的nodeport是我们可以从外部访问服务的端口,targetport是nodeport映射入容器的端口
  3. 访问ip:nodeport此时我们应该能看到nginx的欢迎页面

你可能感兴趣的:(linux,服务器,zookeeper)