天天看點

Linux日常小技巧kubernetes安裝

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           

整理不易歡迎點贊收藏,轉發,關注我,每天分享運維小知識。

繼續閱讀