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











 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章