master 2C2G (centos7 内核V5.17.0) | 192.168.190.110 | k8s组件版本 v1.17.2 | docker 版本 20.10.14 |
---|---|---|---|
node | 192.168.190.111 | k8s组件版本 v1.17.2 | docker 版本 20.10.14 |
node | 192.168.190.112 | k8s组件版本 v1.17.2 | docker 版本 20.10.14 |
hrbor 1C2G | 192.168.190.113 | harbor 版本 v1.7.6 | docker-compose1.18.0 |
**组件名称 ** | 组件作用 | 组件所在节点 |
---|---|---|
ETCD | etcd是Kubernetes提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划 | master |
kube-apiserver | kube-apiserver用于暴露Kubernetes API。任何的资源请求/调用操作都是通过kube-apiserver提供的接口进行 | master |
kube-controller-manager | kube-controller-manager运行管理控制器,它们是集群中处理常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成单个二进制文件,并在单个进程中运行 | master |
kube-scheduler | 监视新创建没有分配到Node的Pod,为Pod选择一个Node | master |
kubelet | kubelet是主要的节点代理,它会监视已分配给节点的pod的状态,主机的资源情况 | node master |
kube-proxy | kube-proxy通过在主机上维护网络规则并执行连接转发来实现Kubernetes服务抽象 | node |
docker 引擎 | 运行容器 | node master |
升级内核的官方操作流程:http://elrepo.org/tiki/HomePage
1.保证内核版本在3.10及以上:uname -a
2.删除旧版本:yum remove -y docker docker-common docker-selinux docker-engine #这一步骤在初次安装docker也最好执行一次,否则后面安装docker可能会报错
3.安装需要的软件包:yum install -y yum-utils device-mapper-persistent-data lvm2
4.设置Docker yum源:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5.查看所有仓库中所有docker版本:yum list docker-ce --showduplicates | sort -r
--showduplicates 列出所有版本
6.安装docker:yum install docker-ce -y #由于repo中默认只开启stable仓库,故这里一般会默认安装最新版本.如果要安装特定版本:yum install docker-ce-18.06.0.ce-3.el7 -y
7.设置为开机启动:systemctl enable docker
8.启动:systemctl start docker
9.查看启动状态:systemctl status docker
10.查看版本:docker version
阿里镜像站下载1.17版本的rpm包
https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/Packages/
bashwget https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/Packages/105d89f0607c7baf91305ba352e78000bd20aad5cdf706bffff3b31cd546dbf3-kubeadm-1.17.2-0.x86_64.rpm wget https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/Packages/b44630896c69cd411db53be1d5cb5ae899a40aba7c0766317ea904390fcfc45b-kubectl-1.17.2-0.x86_64.rpm wget https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/Packages/3ee7f2dff78e6fbb3ac3af8acb1a907f4bec1b1ef4cf627cbe02fa553707f2e9-kubelet-1.17.2-0.x86_64.rpm wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 下载后修改名字 kubectl-1.17.2.rpm kubeadm-1.17.2.rpm kubelet-1.17.2.rpm
说明:1·关闭 firewalld 2· 关闭 selinux 3· 关闭 swap 交换分区 4·最好用2G内存、2个cpu
bashvim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
[root@master-90 /etc/yum.repos.d]# sysctl -p
bash[root@master-90 /etc/yum.repos.d]# vim 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
##安装需要的依赖包,也可直接使用yum源的包安装k8s.各个节点都需要安装
basicyum install kubeadm-1.17.2.rpm kubectl-1.17.2.rpm kubelet-1.17.2.rpm #安装k8s组件 systemctl enable kubelet #自启动 kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.17.2 --apiserver-advertise-address 192.168.190.110 --pod-network-cidr=10.244.0.0/16 --token-ttl 0 #初始化集群 参数说明 --apiserver-advertise-address=192.168.190.110 这个参数就是master主机的IP地址,例如我的Master主机的IP是:192.168.181.131 --image-repository=registry.aliyuncs.com/google_containers 这个是镜像地址,由于国外地址无法访问,故使用的阿里云仓库地址:registry.aliyuncs.com/google_containers --kubernetes-version=v1.17.2 这个参数是下载的k8s软件版本号 --service-cidr=10.96.0.0/12 默认ip段。这个参数后的IP地址直接就套用10.96.0.0/12 ,以后安装时也套用即可,不要更改 --pod-network-cidr=10.244.0.0/16 k8s内部的pod节点之间网络可以使用的IP段,不能和service-cidr写一样,如果不知道怎么配,就先用这个10.244.0.0/16 kubeadm token create --print-join-command #显示加入集群的口令 ##安装flannel网络组件 使用官方的yml方式。国内可能无法访问 wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml kube-ctl apply -f kube-flannel.yml #安装网络组件,下附文件 ##node加入集群,执行该命令 kubeadm join 192.168.190.110:6443 --token pkh64n.8fereapfpjbadwm3 --discovery-token-ca-cert-hash sha256:1d0670edb3ffd88de2bd0f50143b2ab923723ee2f92c5e62bb7eff47bbdfe0eb 显示下方所示,node加入成功 [root@k8s-110 ~]# kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-110 Ready master 21h v1.17.2 192.168.190.110 <none> CentOS Linux 7 (Core) 5.17.0-1.el7.elrepo.x86_64 docker://20.10.14 k8s-111 Ready <none> 21h v1.17.2 192.168.190.111 <none> CentOS Linux 7 (Core) 5.17.0-1.el7.elrepo.x86_64 docker://20.10.14 ####安装harbor #下载链接:https://github.com/goharbor/harbor/releases #这里我用的是v1.7.6版本 #安装docker-compose yum install docker-compose -y #解压harbor压缩包 tar xf harbor-offline-installer-v1.7.6.tgz #修改harbor配置文件 ########################## [root@k8s-113 harbor]# vim harbor.cfg hostname = www.yytlinux.com ui_url_protocol = http #默认http,使用https需要自行生成证书 ########################## 执行安装脚本./install.sh ----Harbor has been installed and started successfully.---- 上述所示安装成功 启动服务 docker-compose up -d 配置主机hosts解析后可以本地打开harbor页面,节点需要先登录才可以上传下载镜像 docker login www.yytlinux.com 账户admin 密码Harbor12345 默认 标签严格按照harbor的规则 [root@docker-33 ~/.docker]# docker tag nginx:latest hub.uplooking.com/repo/nginx:v1 [root@docker-33 ~/.docker]# docker push hub.uplooking.com/repo/nginx:v1
kube-flannel.doc
配置阿里云镜像加速,配置harbor仓库的信任。每个节点都需要
[root@k8s-113 harbor]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://qtlj897j.mirror.aliyuncs.com"] ,
"insecure-registries":"[http://www.yytlinux.com","https://quay-mirror.qiniu.com"]
}
[root@k8s-112 ~]# kubeadm join 192.168.190.110:6443 --token zv9sd7.y1sy2uy4gvvdqtfv --discovery-token-ca-cert-hash sha256:1d0670edb3ffd88de2bd0f50143b2ab923723ee2f92c5e62bb7eff47bbdfe0eb
W0331 17:03:34.740262 122749 join.go:346] [preflight] WARNING: JoinControlPane.controlPlane settings will be ignored when control-plane flag is not set.
[preflight] Running pre-flight checks
[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists
[ERROR Port-10250]: Port 10250 is in use
[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=...
To see the stack trace of this error execute with --v=5 or higher
[kubelet-check] It seems like the kubelet isn't running or healthy.
[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get http://localhost:10248/healthz: dial tcp [::1]:10248: connect: connection refused.
两类报错 解决方法:kubeadm reset
残留的上个集群数据,可以根据报错直接删除,也可以
kubeadm reset #重置,需要干净的环境,最好是这样
解决办法 rm -rf /var/lib/etcd
本文作者:碳水教父
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!