kubernetes 部署

kubernetes 部署(Centos 7)

一個或者多個兼容 deb 或者 rpm 軟件包的操做系統,好比 Ubuntu 或者 CentOShtml

每臺機器 2 GB 以上的內存,內存不足時應用會受限制node

主節點上 2 CPU 以上linux

集羣裏全部的機器有徹底的網絡鏈接,公有網絡或者私有網絡均可以git

  • 關閉防火牆
sudo systemctl stop firewalld.service       #中止firewall
sudo systemctl disable firewalld.service    #禁止firewall開機啓動
sudo firewall-cmd --state                   #查看防火牆狀態
  • 開啓數據包轉發
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 

生效命令sysctl -pgithub

  • 配置iptables參數,使得流經網橋的流量也通過iptables/netfilter防火牆
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
  • swap關閉 
swapoff -a

修改 /etc/fstab 文件,註釋掉 SWAP 的自動掛載,使用free -m確認swap已經關閉。 docker

  • 主機名配置

修改主機名hostnamectl set-hostname <主機名> --staticjson

每臺主機/etc/hosts指明vim

 

一、docker ce安裝centos

https://docs.docker.com/install/linux/docker-ce/centos/api

https://kubernetes.io/docs/setup/cri/

# Install Docker CE
## Set up the repository
### Install required packages.
yum install yum-utils device-mapper-persistent-data lvm2

### Add Docker repository.
yum-config-manager \
  --add-repo \
  https://download.docker.com/linux/centos/docker-ce.repo

## Install Docker CE.
yum install -y --setopt=obsoletes=0 docker-ce-18.09.5-3.el7

## Create /etc/docker directory.
mkdir /etc/docker

# Setup daemon.
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
EOF

systemctl enable docker
systemctl restart docker

查看能夠安裝包

yum list docker-ce --showduplicates

二、kubelet kubeadm kubectl安裝(v1.14.1)

https://kubernetes.io/zh/docs/setup/independent/install-kubeadm/

  • 倉庫鏡像源選擇阿里
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
exclude=kube*
EOF
  • 將 SELinux 設置爲 permissive 模式(將其禁用)
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
  • yum安裝
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

或者指定版本

yum install -y kubelet-1.14.1 kubeadm-1.14.1 kubectl-1.14.1 --disableexcludes=kubernetes
  • 啓動kubelet
systemctl enable kubelet && systemctl start kubelet

從運行結果能夠看到kubelet處於按期重啓的狀態,只有當在master節點執行kubeadm init 或者在worker節點執行kubeadm join時候。kubelet所須要的配置才能被知足。這個時候kubelet纔會正常運行起來。

 

三、k8s主要組件安裝

kubeadm config images list --kubernetes-version=v1.14.1

鏡像源路徑 gcr.io/google_containers

因爲國內的網絡緣由,在搭建環境時,常常沒法pull到這些鏡像。能夠利用Docker Hub搭建本身的鏡像倉庫。

一、經過GitHub建立一個倉庫kubernetes

  • 在centos主機上執行
cd kubernetes
git init
git remote add origin git@github.com:shhnwangjian/kubernetes.git
mkdir kube-apiserver
cd kube-apiserver
  • vim Dockerfile
FROM gcr.io/google_containers/kube-apiserver:v1.14.1
MAINTAINER shhnwangjian

其它目錄和Dockerfile也須要建立

git add .
git commit -m "kubernetes Dockerfile v1.14.1"
git push origin master

二、訪問 https://hub.docker.com/

填寫的內容是kube-apiserver-amd64

 

點擊建立後,進入這個Repositories

 

 

輸入對應信息點擊 SAVE

點擊Trigger進行構建,構建成功後,

經過執行 docker login 命令交互式的輸入用戶名及密碼來完成在命令行界面登陸 Docker Hub

經過命令docker pull shhnwangjian/kube-apiserver:v1.14.1 下載到本地鏡像源

參考文章https://www.jianshu.com/p/11a804080230

下載列表

docker pull shhnwangjian/kube-apiserver:v1.14.1
docker pull shhnwangjian/kube-controller-manager:v1.14.1
docker pull shhnwangjian/kube-scheduler:v1.14.1
docker pull shhnwangjian/kube-proxy:v1.14.1
docker pull shhnwangjian/etcd:3.3.10
docker pull shhnwangjian/pause:3.1
docker pull shhnwangjian/coredns:1.3.1

從新打標籤

docker tag shhnwangjian/kube-apiserver:v1.14.1 k8s.gcr.io/kube-apiserver:v1.14.1
docker tag shhnwangjian/kube-controller-manager:v1.14.1 k8s.gcr.io/kube-controller-manager:v1.14.1
docker tag shhnwangjian/kube-scheduler:v1.14.1 k8s.gcr.io/kube-scheduler:v1.14.1
docker tag shhnwangjian/kube-proxy:v1.14.1 k8s.gcr.io/kube-proxy:v1.14.1
docker tag shhnwangjian/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag shhnwangjian/pause:3.1 k8s.gcr.io/pause:3.1
docker tag shhnwangjian/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

 

master節點部署

kubeadm init引導和初始化master

備註:https://k8smeetup.github.io/docs/admin/kubeadm/ (kubeadm 設置工具參考指南)

kubeadm init --apiserver-advertise-address=192.168.31.153 --pod-network-cidr=10.244.0.0/20 --kubernetes-version=v1.14.1

提示須要關閉swap

vim /etc/fstab

執行重啓命令reboot now,再次執行上面的init命令

kubeadm join 192.168.31.153:6443 --token zbp38a.gv1kdti4ycnjp2j4 \
    --discovery-token-ca-cert-hash sha256:0f447fa079d9db4242f2d3cb1edbe118e67b0935a8ba8dfd7501b8626d4b31be 

記下其中的token,加入node節點時會用到。

初始化若是遇到問題,可使用下面的命令進行清理再從新初始化:sudo kubeadm reset

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

查看一下集羣狀態,確認個組件都處於healthy狀態

kubectl get cs

 

安裝pod network(flannel)

mkdir -p ~/k8s/
cd ~/k8s
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

執行 kubectl apply -f  kube-flannel.yml

使用kubectl get pod --all-namespaces -o wide確保全部的Pod都處於Running狀態

 

node節點部署

注意:默認token的有效期爲24小時,當過時以後,該token就不可用了。此時能夠從新生成token:

kubeadm token generate
kubeadm token create <generated-token> --print-join-command --ttl=0

 在每臺node節點執行

若是遇到問題,可使用命令kubeadm reset進行清理再從新初始化

在master節點執行命令成功以下圖

  • 配置node節點也可使用kubectl

將master節點的admin.conf同步到node節點

scp /etc/kubernetes/admin.conf root@192.168.31.144:/etc/kubernetes

在node節點執行

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

此時能夠在node節點執行kubectl命令

 

 

參考文章:

https://blog.frognew.com/2019/04/kubeadm-install-kubernetes-1.14.html

https://blog.csdn.net/liukuan73/article/details/83090350

https://draveness.me/understanding-kubernetes

相關文章
相關標籤/搜索