[网络搭建]Centos8 + Docker-CE + K8S(kubeadm)
https://www.kubernetes.org.cn/7189.html
使用kubeadm在Centos8上部署kubernetes1.18(三台机)
https://www.jianshu.com/p/ceaba6a87086
k8s1.20.1 集群安装(三台机)
https://blog.csdn.net/weixin_38320674/article/details/105781372
k8s1.18高可用集群安装-超详细中文官方文档(两台机)
安装Centos
-
打开“编辑-虚拟网络编辑器”,桥接至真实网卡
-
在VMware上安装Centos
选稍后安装,避开VMware的执行简易安装 -
设置硬件(按需设置),载入ISO文件,选VMnet0网络
必须安装英文语言包(进入安装界面时会要求选语言,选了非英语时就不会安装英文包) -
进入系统,测试网络(可选)
查看本机ip addr(可以在真实主机上ping)ping外网测试
修改服务器配置(先配置master)
- 设置主机名
hostnamectl set-hostname k8s-master --static
-
vi /etc/sysconfig/network-scripts/ifcfg-ens33
PS:DNS是可选BOOTPROTO="static" ONBOOT="yes" IPADDR="192.168.0.80" NETMASK="255.255.255.0" GATEWAY="192.168.0.1" DNS1="119.29.29.29" # 腾讯DNS DNS2="180.76.76.76" # 百度DNS
- vi /etc/hosts
添加映射主机:
192.168.0.80 k8s-master
-
重启
shutdown -r now
准备
- 升级所有包
yum update -y
-
关闭防火墙(可选)
systemctl stop firewalld && systemctl disable firewalld
-
关闭 dnsmasq(可选)
service dnsmasq stop && systemctl disable dnsmasq
- 关闭/注释swap
swapoff -a
vi /etc/fstab
注释行:/dev/mapper/cl-swap
- 安装工具
yum install -y wget
安装docker-ce
-
删除冲突包(如有)
yum erase podman buildah
删除旧docker(如有)
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
-
下载/安装docker-ce
参考:https://docs.docker.com/engine/install/centos/yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce docker-ce-cli containerd.io systemctl enable --now docker docker run hello-world # 测试(可选)
-
配置内核参数,将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf <<EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF
sysctl --system
安装k8s
参考:https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
参考:https://www.kubernetes.org.cn/7189.html
- 添加阿里kubernetes源
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-\$basearch 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 exclude=kubelet kubeadm kubectl EOF
- 将 SELinux 设置为 permissive 模式(相当于将其禁用)
PS:如SELINUX=disabled可以跳过此步
setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
官方原话:
通过运行命令 setenforce 0 和 sed ... 将 SELinux 设置为 permissive 模式 可以有效地将其禁用。 这是允许容器访问主机文件系统所必需的,而这些操作时为了例如 Pod 网络工作正常。你必须这么做,直到 kubelet 做出对 SELinux 的支持进行升级为止。
如果你知道如何配置 SELinux 则可以将其保持启用状态,但可能需要设定 kubeadm 不支持的部分配置
- 安装 kubeadm、kubelet 和 kubectl
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes systemctl enable --now kubelet
PS:kubelet 现在每隔几秒就会重启,因为它陷入了一个等待 kubeadm 指令的死循环。
- 配置 Docker 守护程序,尤其是使用 systemd 来管理容器的 cgroup
参考:https://kubernetes.io/zh/docs/setup/production-environment/container-runtimes/#docker
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF systemctl daemon-reload systemctl restart docker
- 初始化k8s集群
yum install -y tc kubeadm init \ --apiserver-advertise-address=192.168.0.80 \ --image-repository registry.aliyuncs.com/google_containers \ --service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16
kubeadm init出错参考:https://stackoverflow.com/a/67610920
- 根据kubeadm init完成提示执行命令
mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config
vi /etc/profile
在底部添加:export KUBECONFIG=/etc/kubernetes/admin.confsource /etc/profile
- 执行下面命令,使kubectl可以自动补充
source <(kubectl completion bash)
安装kubernetes-dashboard
- 下载文件(去https://github.com/kubernetes/dashboard/releases找个版本下载,master就是最新版)
PS:可能要FQ
参考:https://segmentfault.com/a/1190000023130407
参考:https://computingforgeeks.com/how-to-install-kubernetes-dashboard-with-nodeport/
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml
- 在文件最底部添加nodeport
vi recommended.yaml
PS:官方部署dashboard的服务没使用nodeport,将yaml文件下载到本地,在service里添加nodeport
---kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: type: NodePort ports: - port: 443 targetPort: 8443 nodePort: 30000 selector: k8s-app: kubernetes-dashboard
保存,执行下面命令
kubectl apply -f recommended.yaml
kubectl delete -f recommended.yaml
安装calico
- 安装
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
在真实主机上打开kubernetes-dashboard
- 确认是否全部是Running
kubectl get pod --all-namespaces
- 获取登录token
# 查看凭证 kubectl -n kubernetes-dashboard get secret # 获取token(注意替换) kubectl describe secrets -n kubernetes-dashboard kubernetes-dashboard-token-t4hxz | grep token | awk 'NR==3{print $2}'
-
在真实主机打开浏览器:https://192.168.0.80:30000/,粘贴上面复制的token登录