0
点赞
收藏
分享

微信扫一扫

kubeadm k8s集群安装-kubeadm


准备:
系统信息:
hostnamectl set-hostname k8s-master1

更换yum源:参考地址:https://developer.aliyun.com/mirror/
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
yum makecache

关闭selinux和firewalld:
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

关闭swap分区:
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sysctl -p

设置内核参数: 配置内核参数,将桥接的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

安装一些依赖包:
yum install -y epel-release conntrack ipvsadm ipset jq sysstat curl iptables libseccomp
yum install -y yum-utils device-mapper-persistent-data lvm2


安装最新的docker之前安装需要安装最新的 containerd.io ,不然可能报错
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
yum install containerd.io-1.2.6-3.3.el7.x86_64.rpm

------------
修改docker repo 安装docker 参考链接:https://developer.aliyun.com/mirror/
wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce

systemctl start docker
systemctl enable docker
修改docker镜像源为阿里云:
登陆:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors安装提供的方法修改
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://qdsf52uj.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

---------------------------

安装kubernetes 参考链接:https://developer.aliyun.com/mirror/
cat <<EOF > /etc/yum.repos.d/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
EOF
setenforce 0
//yum install -y kubelet kubeadm kubectl
yum -y install kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
systemctl enable kubelet && systemctl start kubelet

-----------------------------
获取镜像列表
kubeadm config images list

W0629 10:12:30.134641 50835 version.go:102] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get https://dl.k8s.io/release/stable-1.txt: dial tcp: lookup dl.k8s.io on 192.168.1.1:53: no such host
W0629 10:12:30.137476 50835 version.go:103] falling back to the local client version: v1.18.5
W0629 10:12:30.150395 50835 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
k8s.gcr.io/kube-apiserver:v1.18.3
k8s.gcr.io/kube-controller-manager:v1.18.3
k8s.gcr.io/kube-scheduler:v1.18.3
k8s.gcr.io/kube-proxy:v1.18.3
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.7

拉取镜像:
方法一:
生成默认kubeadm.conf文件
kubeadm config print init-defaults > kubeadm.conf

默认为google的镜像仓库地址k8s.gcr.io,国内无法访问,需要把地址修改为国内的地址,这里使用阿里云的镜像仓库地址。
编辑kubeadm.conf,将imageRepository修改为registry.aliyuncs.com/google_containers 。并确认Kubernetes版本是v1.18.5,和上面的镜像列表的版本保持一致

将imageRepository: k8s.gcr.io 修改为

imageRepository: registry.aliyuncs.com/google_containers

下载镜像:
kubeadm config images pull --config kubeadm.conf

或者docker pull指定版本直接拉取:
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7

修改tag:
docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.18.3 k8s.gcr.io/kube-apiserver:v1.18.3
docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.18.3 k8s.gcr.io/kube-controller-manager:v1.18.3
docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.18.3 k8s.gcr.io/kube-scheduler:v1.18.3
docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.18.3 k8s.gcr.io/kube-proxy:v1.18.3
docker tag registry.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
docker tag registry.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
docker tag registry.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7

方法二: 脚本解决 上面一大堆操作 只需要写一个简单的脚本就可以一键操作了:

#! /bin/sh
for name in kube-controller-manager:v1.18.3 kube-scheduler:v1.18.3 kube-proxy:v1.18.3 pause:3.2 etcd:3.4.3-0 coredns:1.6.7 kube-apiserver:v1.18.3
do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$name
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$name k8s.gcr.io/$name
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$name
done

忽略swap错误:
kubernetes集群不允许开启swap,所以我们需要忽略这个错误
编辑文件 /etc/sysconfig/kubelet,将文件里的“KUBELET_EXTRA_ARGS=”改成这样:KUBELET_EXTRA_ARGS="–fail-swap-on=false"

cat /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"

好了 上面的准备工作都做好了 我们就可以初始化节点了:

这里定义先POD的网段为: 10.244.0.0/16,API Server地址为节点所在机器的IP地址 用 ip addr查看
kubeadm init --kubernetes-version=v1.18.3 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --apiserver-advertise-address=192.168.1.151
该命令也可以加入参数:
--image-repository registry.aliyuncs.com/google_containers
指定初始化的时候使用阿里源,因为上面2中方法手动拉取了镜像,所以我这里没有加这个参数。

kubeadm init --kubernetes-version=v1.18.3 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.1.151


mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

查看:
kubectl get componentstatus
kubectl get pods --all-namespaces
kubectl get cs

安装calico网络:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

也可以安装flannel: 参考地址:https://github.com/coreos/flannel
$ kubectl apply -f https://github.com/coreos/flannel/blob/v0.7.1/Documentation/kube-flannel-rbac.yml
$ kubectl apply -f https://github.com/coreos/flannel/blob/v0.7.1/Documentation/kube-flannel.yml



拉取dashboard镜像: 根据自己的需求修改版本
docker pull kubernetesui/dashboard:v2.0.0
docker pull kubernetesui/metrics-scraper:v1.0.4

去下载dashboard.yaml文件:自行百度
我这里提供一个是从google网站下载的原版文件,不过我修改了,修改的部分已经标出来,自己根据需要修改即可


开始安装k8s的dashboard:
参考:https://zhuanlan.zhihu.com/p/114010229
kubectl apply -f dashboard.yaml


kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')


安装 metrics-server 插件(cpu/memory信息)


git clone https://github.com/kubernetes-sigs/metrics-server
然后切换到指定的分支
git checkout -b 本地分支名 origin/远程分支名
或者 git clone -b 远程分支名 GitHub-URL
例如我:
git checkout -b 本地分支名 origin/远程分支名

cd /root/k8s3/metrics-server/deploy/1.8+
先修改:metrics-server-deployment.yaml 文件 下面部分内容

image: registry.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
imagePullPolicy: IfNotPresent
args:
- --cert-dir=/tmp
- --secure-port=4443
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname

修改完成之后执行: kubectl create -f .

如果出现错误你可能需要下面的命令来解决:k8s3 是我的机器hostname 修改成你的
kubectl taint node k8s3 node-role.kubernetes.io/master:NoSchedule-
kubectl taint nodes --all node-role.kubernetes.io/master-
kubectl taint nodes k8s3 node-role.kubernetes.io/master=true:NoSchedule










 

举报

相关推荐

0 条评论