运用kubeadm快速布置K8S V1.18

1、根底环境,至少1个Master和1个Worker;
2、根本装备

1) 服务器敞开硬件虚拟化支撑;
2) 操作系统版别大于CentOS7.5,Minimal形式,可update到最新版别;
3) 封闭SElinux和Firewalld服务;
#sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
#setenforce 0
#systemctl disable firewalld
#systemctl stop firewalld
4) 设置hostname并在/etc/hosts装备本地解析;
#hostnamectl set-hostname master1.lab.com
5) 封闭Swap服务
#swapoff -a
#sed -i '/swap/d' /etc/fstab
6) 修正sysctl.conf
#echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
#echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
#echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
#sysctl -p
若提示cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or directory
#modprobe net_brfilter
#sysctl -p

3、一切节点装置Docker服务

1) 假如已装置过旧版别需求删去:
#yum -y remove docker-client docker-client-latest docker-common docker-latest docker-logrotate docker-latest-logrotate  docker-selinux docker-engine-selinux docker-engine
2) 设置阿里云docker库房,并装置Docker服务;
#yum -y install yum-utils lvm2 device-mapper-persistent-data nfs-utils xfsprogs wget
#yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#yum -y install docker-ce docker-ce-cli containerd.io
#systemctl enable docker
#systemctl start docker

4、一切节点装置K8S服务

1) 假如已装置过旧版别,需求删去:
#yum -y remove kubelet kubadm kubctl
2) 设置阿里云的库房,并装置新版别
#cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
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
EOF
#yum -y install kubelet kubeadm kubectl
Node节点不需求依照kubectl
3) 修正Docker Cgroup Driver为systemd,假如不修正则在后续添加Worker节点时或许会遇到“detected cgroupfs as ths Docker driver.xx”的报错信息,并装备Docker本地镜像库;
cat > /etc/docker/daemon.json <<EOF
{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "log-driver": "json-file",
    "log-opts": {
    "max-size": "100m"
    },
    "storage-driver": "overlay2",
    "registry-mirrors":[
        "https://kfwkfulq.mirror.aliyuncs.com",
        "https://2lqq34jg.mirror.aliyuncs.com",
        "https://pee6w651.mirror.aliyuncs.com",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com"
    ]
}
4) 重启Docker,并发动Kubelet
#systemctl daemon-reload
#systemctl restart docker
#systemctl enable kubelet
#systemctl start kubelet

5、Master节点布置

1) 假如需求初始化Master节点,请履行#kubeadm reset;
2) 装备环境变量:
#echo export MASTER_IP=10.33.0.51 > k8s.env.sh
#echo export APISERVER_NAME=master1.lab.com >> k8s.env.sh
#sh k8s.env.sh
3) Master节点初始化:
#kubeadm init 
--apiserver-advertise-address 0.0.0.0 
--apiserver-bind-port 6443 
--cert-dir /etc/kubernetes/pki 
--control-plane-endpoint master1.lab.com 
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers 
--kubernetes-version 1.18.2 
--pod-network-cidr 10.11.0.0/16 
--service-cidr 10.20.0.0/16 
--service-dns-domain cluster.local 
--upload-certs
# 初始化 Control-plane/Master 节点,命名参数阐明

kubeadm init

--apiserver-advertise-address 0.0.0.0 
# API 服务器所发布的其正在监听的 IP 地址,指定“0.0.0.0”以运用默许网络接口的地址
# 牢记只能够是内网IP,不能是外网IP,假如有多网卡,能够运用此选项指定某个网卡
--apiserver-bind-port 6443 
# API 服务器绑定的端口,默许 6443
--cert-dir /etc/kubernetes/pki 
# 保存和存储证书的途径,默许值:"/etc/kubernetes/pki"
--control-plane-endpoint kuber4s.api 
# 为操控平面指定一个安稳的 IP 地址或 DNS 称号,
# 这儿指定的 kuber4s.api 已经在 /etc/hosts 装备解析为本机IP
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers 
# 挑选用于拉取Control-plane的镜像的容器库房,默许值:"k8s.gcr.io"
# 因 Google被墙,这儿挑选国内库房
--kubernetes-version 1.17.3 
# 为Control-plane挑选一个特定的 Kubernetes 版别, 默许值:"stable-1"
--node-name master01 
#  指定节点的称号,不指定的话为主机hostname,默许能够不指定
--pod-network-cidr 10.10.0.0/16 
# 指定pod的IP地址规模
--service-cidr 10.20.0.0/16 
# 指定Service的VIP地址规模
--service-dns-domain cluster.local 
# 为Service别的指定域名,默许"cluster.local"
--upload-certs
# 将 Control-plane 证书上传到 kubeadm-certs Secret
4) 装备kubectl:
#rm -f .kube && mkdir .kube
#cp -i /etc/kubernets/admin.conf .kube/config
#chown $(id -u):$(id -g) $HOME/.kube/config   //可用于为普通用户分配kubectl权限

6、装置Calico网络插件:

    集群有必要装置网络插件以完成Pod间通讯,只需求在Master节点操作,其他Node节点会主动创立相关Pod;
#wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml
该装备文件默许选用的Pod的IP地址为192.168.0.0/16,需求修正为集群初始化参数中选用的值,本例中为10.10.0.0/16;
#sed -i "s#192.168.0.0/16#10.10.0.0/16#" calico.yaml
#kubectl apply -f calico.yaml
1) 等候一切容器状况处于Running状况:
#watch -n 2 kubectl get pods -n kube-system -o wide
#kubectl get nodes -o wide //检查一切node状况
2) 获取join指令参数,并保存输出成果:
#kubeadm token create --print-join-command > node.join.sh

7、Worker节点布置

1) 假如需求初始化Worker节点,请履行#kubeadm reset;
2) 从Master仿制环境变量和参加集群脚本:
#scp master:/root/k8s.env.sh master:/root/mode.join.sh .
#sh k8s.env.sh
#sh node.join.sh
或直接履行
#kubeadm join master1.lab.com:6443 --token e1xszv.7fa46uw7intwcbwi  
--discovery-token-ca-cert-hash sha256:2637022ef0928d0b390bf10b246ccf20e00f73966667bc711d683a8d71492e5a
3) 在Master节点检查Worker状况:
#kubectl get nodes -o wide
4) 移除Worker节点:
在Worker节点履行
#kubeadm reset -f
在Master节点履行
#kubectl delete node <worker节点主机名>

7、添加Master节点

1) 在待添加Master节点履行
#kubeadm join master1.lab.com:6443 --token e1xszv.7fa46uw7intwcbwi  
--discovery-token-ca-cert-hash sha256:2637022ef0928d0b390bf10b246ccf20e00f73966667bc711d683a8d71492e5a
--control-plane --certificate-key 5253fc7e9a4e6204d0683ed2d60db336b3ff64ddad30ba59b4c0bf40d8ccadcd

8、装置Ingress Controller

1) 在Master节点履行,详细能够参阅https://github.com/nginxinc/kubernetes-ingress/blob/v1.5.3/docs/installation.md
#kubectl apply -f https://kuboard.cn/install-script/v1.16.0/nginx-ingress.yaml

9、装置Kuboard图形化办理界面

1) 在Master节点履行
#kubectl apply -f https://kuboard.cn/install-script/kuboard.yaml
检查运转状况,或许需求几分钟才干成为Running状况:
#kubectl get pods -l k8s.eip.work/name=kuboard -n kube-system
2) 获取Token权限,用于界面登录
#kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d > admin-token.txt
#kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-viewer | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d > read-only-token.txt
3) 办理节目拜访
http://恣意一个Worker节点的IP地址:32567

补白:本文部分内容参阅 https://www.kubernetes.org.cn/7315.html,感谢原文作者!