Kubernetes是一個非常強大和靈活的容器編排系統,今天給大家簡單介紹一下kubernetes的安裝過程基于kubeadm,是日常安裝k8s的一種方式,
前期準備工作:
1.cat cat /etc/redhat-release 檢查系統版本必須在centos7.5以上
2.域名解析添加hosts檔案中添加各個叢集的IP和主機名稱。
vim /etc/hosts
192.168.221.* master
192.168.221.* node1
192.168.221.* node2
3.時間同步
systemctl start chronyd
4.關閉firewalld和iptables
[root@master /]# systemctl stop firewalld
[root@master /]# systemctl disable firewalld
[root@master /]# systemctl stop iptables
[root@master /]# systemctl disable iptables
systemctl disable firewalld
5關閉seliunx
getenforce 提示Enforcing 說明已經開啟了
vim /etc/selinux/config(需要重新啟動)
6.禁止swap分區。
vim /etc/fstab
注釋掉最後一行
7.修改liunx核心參數
将橋接的IPv4流量傳遞到iptables的鍊
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF
modprobe br_netfilter
lsmod | grep br_netfilter
sysctl --system
8.安裝docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
安裝指定版本的docker
yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7
mkdir /etc/docker cat <<EOF >/etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"], "registry-mirrors": ["https://du3ia00u.mirror.aliyuncs.com"] } EOF
systemctl enable docker && systemctl start docker
docker version
sudo systemctl daemon-reload
sudo systemctl restart docker
9.安裝 Kubernetes 元件
使用 kubeadm 工具可以非常友善地部署 Kubernetes 叢集。安裝流程如下:
- 安裝 kubeadm、kubelet 和 kubectl:
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
拉取元件:
yum install --setopt=obsoletes=0 kubelet-1.18.0-0 kubeadm-1.18.0 kubectl-1.18.0 -y
yum install --setopt=obsoletes=0 kubelet-1.18.0-0 kubeadm-1.18.0-0 kubectl-1.18.0-0 -y
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
systemctl enable kubelet systemctl start kubelet
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 --disableexcludes=kubernetes
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
拉取各個元件的插件
kube-apiserver:v1.18.20
kube-controller-manager:v1.18.20
kube-scheduler:v1.18.20
kube-proxy:v1.18.20
pause:3.2
etcd:3.4.3-0
coredns:1.6.7
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.20
打标簽
docker tag 27f8b8d51985 registry.aliyuncs.com/google_containers/kube-proxy:v1.18.20
docker tag 7d8d2960de69 registry.aliyuncs.com/google_containers/kube-apiserver:v1.18.20
docker tag e7c545a60706 registry.aliyuncs.com/google_containers/kube-controller-manager:v1.18.20
docker tag a05a1a79adaa registry.aliyuncs.com/google_containers/kube-scheduler:v1.18.20
docker tag 80d28bedfe5d registry.aliyuncs.com/google_containers/pause:3.2
docker tag 67da37a9a360 registry.aliyuncs.com/google_containers/coredns:1.6.7
docker tag 303ce5db0e90 registry.aliyuncs.com/google_containers/etcd:3.4.3-0
部署master節點
kubeadm init \
--apiserver-advertise-address=192.168.221.* \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.20 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
- 安裝完成後,可以使用下面的指令檢視 kubeadm 版本:
kubeadm version
- 加入節點
在其他節點上運作以下指令以加入主節點:
sudo kubeadm join [主節點 IP]:[端口] --token [token] --discovery-token-ca-cert-hash sha256:[hash]
- 安裝網絡插件
- Kubernetes 預設情況下使用容器網絡,需要安裝相關的網絡插件才能在不同節點之間通信。可以使用 Calico、Flannel 或者 Canal 等網絡插件。這裡以 Calico 為例:
kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
10.安裝完畢後,可以使用如下指令檢查叢集狀态:
kubectl get nodes
輸出類似以下資訊:
NAME STATUS ROLES AGE VERSION
master-node Ready master 36d v1.18.2
worker-node1 Ready <none> 36d v1.18.2
worker-node2 Ready <none> 36d v1.18.2
整理不易歡迎點贊收藏,轉發,關注我,每天分享運維小知識。