k8s集群搭建-个人学习使用
1、准备工作Docker18.09.0---kubeadm-1.14.0-0kubelet-1.14.0-0kubectl-1.14.0-0---k8s.gcr.io/kube-apiserver:v1.14.0k8s.gcr.io/kube-controller-manager:v1.14.0k8s.gcr.io/kube-scheduler:v1.14....
·
1、准备工作
Docker 18.09.0 --- kubeadm-1.14.0-0 kubelet-1.14.0-0 kubectl-1.14.0-0 --- k8s.gcr.io/kube-apiserver:v1.14.0 k8s.gcr.io/kube-controller-manager:v1.14.0 k8s.gcr.io/kube-scheduler:v1.14.0 k8s.gcr.io/kube-proxy:v1.14.0 k8s.gcr.io/pause:3.1 k8s.gcr.io/etcd:3.3.10 k8s.gcr.io/coredns:1.3.1 --- calico:v3.9.4
1) centos7 机器两台,服务器之间能ping通,能连外网
2)更新2台机器 yum源
yum -y update yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp
3)各个机器安装docker
#1、安装必要依赖: sudo yum install -y yum-utils device-mapper-persistent-data lvm2 #2、设置docker仓库,若能科学上网可忽略,此处以aliyun为例,可以设置其他或者个人仓库 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #3、若使用aliyun,可以添加一下镜像加速器(地址-登陆阿里云-容器管理可得到) sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["这边替换成自己的实际地址"] } EOF sudo systemctl daemon-reload #4、指定版本安装docker yum install -y docker-ce-18.09.0 docker-ce-cli-18.09.0 containerd.io #5、启动docker sudo systemctl start docker && sudo systemctl enable docker
4)修改各个机器的hosts,方便查看管理,也可忽略
#1、master节点 sudo hostnamectl set-hostname m vi /etc/hosts #添加以下解析 10.65.110.53 w 10.65.110.33 m #2、worker节点 sudo hostnamectl set-hostname w vi /etc/hosts #添加以下解析 10.65.110.53 w 10.65.110.33 m #3、设置完后,节点互相通过别名能ping通
5)各个服务器配置
# (1)关闭防火墙 systemctl stop firewalld && systemctl disable firewalld # (2)关闭selinux setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config # (3)关闭swap swapoff -a sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab # (4)配置iptables的ACCEPT规则 iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT # (5)设置系统参数 cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system
2、开始安装
1)安装kubeadm
yum install -y kubeadm-1.14.0-0 kubelet-1.14.0-0 kubectl-1.14.0-0
2) 设置docker和k8s在同一个cgroup
# 1)Docker修改以下文件,在docker启动参数中添加 --exec-opt native.cgroupdriver=systemd vim /usr/lib/systemd/system/docker.service # 修改以下行,添加上述命令 ExecStart=/usr/bin/dockerd --exec-opt native.cgroupdriver=systemd -H unix:// #重启docker systemctl restart docker # 2)修改kubedm sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf #修改后查看 Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --cgroup-driver=systemd" #重启服务 systemctl enable kubelet && systemctl start kubelet
3)下载kubeadm所需镜像(科学上网可跳过此步骤)
#查看所需镜像,个人下载的镜像版本和名称要和以下名字严格对应,可通过tag方式,因为kubeadm init时默认是以默认版本镜像部署 sudo kubeadm config images list #如下: k8s.gcr.io/kube-apiserver:v1.14.0 k8s.gcr.io/kube-controller-manager:v1.14.0 k8s.gcr.io/kube-scheduler:v1.14.0 k8s.gcr.io/kube-proxy:v1.14.0 k8s.gcr.io/pause:3.1 k8s.gcr.io/etcd:3.3.10 k8s.gcr.io/coredns:1.3.1. # 1、从国内镜像仓库拉取以上版本镜像,并打tag放入个人仓库,入aliyun等,方便其他worker机器获取, docker pull *** docker tag *** *** docker push *** docker login --username=*** ***.com
4)初始化master
# 初始化失败,需执行 kubeadm reset,排错后重新执行以下init kubeadm init --kubernetes-version=1.14.0 --apiserver-advertise-address=10.65.110.33 --pod-network-cidr=10.244.0.0/16
/* init流程解释 01-进行一系列检查,以确定这台机器可以部署kubernetes 02-生成kubernetes对外提供服务所需要的各种证书可对应目录 /etc/kubernetes/pki 03-为其他组件生成访问kube-ApiServer所需的配置文件 ls /etc/kubernetes/ admin.conf controller-manager.conf kubelet.conf scheduler.conf 04-为 Master组件生成Pod配置文件。 ls /etc/kubernetes/manifests/*.yaml kube-apiserver.yaml kube-controller-manager.yaml kube-scheduler.yaml 05-生成etcd的Pod YAML文件。 ls /etc/kubernetes/manifests/*.yaml kube-apiserver.yaml kube-controller-manager.yaml kube-scheduler.yaml etcd.yaml 06-一旦这些 YAML 文件出现在被 kubelet 监视的/etc/kubernetes/manifests/目录下,kubelet就会自动创建这些yaml文件定义的pod,即master组件的容器。master容器启动后,kubeadm会通过检查localhost:6443/healthz这个master组件的健康状态检查URL,等待master组件完全运行起来 07-为集群生成一个bootstrap token 08-将ca.crt等 Master节点的重要信息,通过ConfigMap的方式保存在etcd中,工后续部署node节点使用 09-最后一步是安装默认插件,kubernetes默认kube-proxy和DNS两个插件是必须安装的 */
5) 记录init输出日志,并保存join信息
# 1、以下命令会在init输入日志中,可以复制自己的并执行 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config # 2、join信息如下(在woker节点执行) kubeadm join 10.65.110.33:6443 --token stmaxc.wgvrl03db2ckuhh4 \ --discovery-token-ca-cert-hash sha256:4bc9f2c7c609699c1815cb69e11dca0b3ec041198f1b6c7637608504228a0fe5 # 3、 验证是否成功 kubectl cluster-info kubectl get pods -n kube-system curl -k https://localhost:6443/healthz # 4、corn-dns处于pending状态,需安装网络插件,以colico为例 kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml # 5、查看各个pod状态为running,若存在其他状态,可借助以下命令排错 kubectl -n kube-system get pod calico-node-9h6mj -o yaml #查看某一个pod的yaml状态 kubectl get pods --all-namespaces -w #查看所有命名空间的pods信息 kubectl -n kube-system log -f kube-scheduler-m #查看pod日志信息 kubectl describe pod nginx-7sv2t #默认命名空间下,查看pod详细信息
6)在worker节点执行
# 1、执行命令 kubeadm join 10.65.110.33:6443 --token stmaxc.wgvrl03db2ckuhh4 \ --discovery-token-ca-cert-hash sha256:4bc9f2c7c609699c1815cb69e11dca0b3ec041198f1b6c7637608504228a0fe5 # 2、在master查看节点状态 kubectl get nodes # 如下、即完成k8s集群成功 NAME STATUS ROLES AGE VERSION m Ready master 138m v1.14.0 w Ready <none> 87m v1.14.0
更多推荐
已为社区贡献1条内容
所有评论(0)