容器雲架構實踐-07

Kubernetes安裝填坑手冊

Kubernetes 是現在行業中一致認可的容器編排調度工具。工欲善其事必先利其器,現在讓我們開始為安裝Kubernetes填坑吧。

SElinux

我們為了容器能夠與本機文件系統交互, 需要關閉宿主機的 SELinux。

# 臨時關閉selinux
setenforce 0
# 設置selinux策略為開機不啟動
sed -i "s/^SELINUX=.*/SELINUX=disabled/" /etc/selinux/config

橋接網絡

centos7系統中我們需要打開橋接網絡支持,不然部署之後你的K8S橋接網絡是無法連通的。

# 配置k8s.conf文件,打開橋接網絡支持
cat < /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 使之生效
sysctl --system
# 修改當前內核狀態
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

SWAP

kubernetes要求必須關閉swap,所以我們還是默默關閉swap把,注意如果你是在生產環境中,裝系統的時候就不要弄swap!!!

swapoff -a
cat >> /swap.sh << EOF
#!/bin/bash
swapoff -a
EOF
echo "/swap.sh" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
chmod +x /swap.sh

google源

我們安裝kubeadm的時候,官方推薦的源是google的源,我們實際部署的時候千萬記得修改源,不然一天都裝不上的。

# 修改google源為阿里源
cat >> /etc/yum.repos.d/kubernetes.repo <[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
priority=2
EOF

k8s 基礎鏡像

我們安裝kubernetes的時候,會用到一些基礎鏡像,這裡我們要提前準備好,防止無法獲取鏡像從而安裝失敗。

# 獲取指定版本的kubeadm所需的所有鏡像
kubeadm config images list --kubernetes-version v1.11.2
# 通過第三方下載所需鏡像,最後改成原先的鏡像名

docker pull anjia0532/google-containers.kube-controller-manager-amd64:v1.12.0
docker pull anjia0532/google-containers.kube-apiserver-amd64:v1.12.0
docker pull anjia0532/google-containers.kube-scheduler-amd64:v1.12.0
docker pull anjia0532/google-containers.kube-proxy-amd64:v1.12.0
docker pull anjia0532/google-containers.pause:3.1
docker pull anjia0532/google-containers.etcd-amd64:3.2.24
docker pull anjia0532/google-containers.coredns:1.2.2

docker tag anjia0532/google-containers.kube-controller-manager-amd64:v1.12.0 k8s.gcr.io/kube-controller-manager:v1.12.0
docker tag anjia0532/google-containers.kube-apiserver-amd64:v1.12.0 k8s.gcr.io/kube-apiserver:v1.12.0
docker tag anjia0532/google-containers.kube-scheduler-amd64:v1.12.0 k8s.gcr.io/kube-scheduler:v1.12.0
docker tag anjia0532/google-containers.kube-proxy-amd64:v1.12.0 k8s.gcr.io/kube-proxy:v1.12.0
docker tag anjia0532/google-containers.pause:3.1 k8s.gcr.io/pause:3.1
docker tag anjia0532/google-containers.etcd-amd64:3.2.24 k8s.gcr.io/etcd:3.2.24
docker tag anjia0532/google-containers.coredns:1.2.2 k8s.gcr.io/coredns:1.2.2

docker rmi anjia0532/google-containers.kube-controller-manager-amd64:v1.12.0
docker rmi anjia0532/google-containers.kube-apiserver-amd64:v1.12.0
docker rmi anjia0532/google-containers.kube-scheduler-amd64:v1.12.0
docker rmi anjia0532/google-containers.kube-proxy-amd64:v1.12.0
docker rmi anjia0532/google-containers.pause:3.1
docker rmi anjia0532/google-containers.etcd-amd64:3.2.24
docker rmi anjia0532/google-containers.coredns:1.2.2

# 現在默認推薦的是13.1版本
kubeadm config images list --kubernetes-version v1.13.1
# 通過第三方下載所需鏡像,最後改成原先的鏡像名
docker pull mirrorgooglecontainers/kube-controller-manager-amd64:v1.13.1
docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.13.1
docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.13.1
docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.13.1
docker pull anjia0532/google-containers.pause:3.1
docker pull anjia0532/google-containers.etcd-amd64:3.2.24
docker pull anjia0532/google-containers.coredns:1.2.2

docker tag mirrorgooglecontainers/kube-controller-manager-amd64:v1.13.1 k8s.gcr.io/kube-controller-manager:v1.12.0
docker tag mirrorgooglecontainers/kube-apiserver-amd64:v1.13.1 k8s.gcr.io/kube-apiserver:v1.12.0
docker tag mirrorgooglecontainers/kube-scheduler-amd64:v1.13.1 k8s.gcr.io/kube-scheduler:v1.12.0
docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.13.1 k8s.gcr.io/kube-proxy:v1.12.0
docker tag anjia0532/google-containers.pause:3.1 k8s.gcr.io/pause:3.1
docker tag anjia0532/google-containers.etcd-amd64:3.2.24 k8s.gcr.io/etcd:3.2.24
docker tag anjia0532/google-containers.coredns:1.2.2 k8s.gcr.io/coredns:1.2.2

docker rmi mirrorgooglecontainers/kube-controller-manager-amd64:v1.13.1
docker rmi mirrorgooglecontainers/kube-apiserver-amd64:v1.13.1
docker rmi mirrorgooglecontainers/kube-scheduler-amd64:v1.13.1
docker rmi mirrorgooglecontainers/kube-proxy-amd64:v1.13.1

docker rmi anjia0532/google-containers.pause:3.1
docker rmi anjia0532/google-containers.etcd-amd64:3.2.24
docker rmi anjia0532/google-containers.coredns:1.2.2

防火牆

K8S需要打開防火牆,內部用的是橋接網絡通過iptable管理,不開防火牆通信也是不通的。

主節點

協議方向端口範圍目的使用TCP入站6443Kubernetes API服務器所有TCP入站2379-2380etcd服務器客戶端APIkube-apiserver,etcdTCP入站10250Kubelet API自己,控制平面TCP入站10251KUBE-調度自己TCP入站10252KUBE-控制器經理自己

工做節點

協議方向港口範圍目的使用TCP入站10250Kubelet API自己,控制平面TCP入站30000-32767NodePort服務所有

# 主節點上開放端口
firewall-cmd --permanent --zone=public --add-port=6443/tcp --add-port=10250/tcp --add-port=10251/tcp --add-port=10252/tcp --add-port=2379-2380/tcp
firewall-cmd --reload
firewall-cmd --permanent --zone=public --list-ports
# 工作節點上開放端口
firewall-cmd --permanent --zone=public --add-port=10250/tcp --add-port=30000-32767/tcp
firewall-cmd --reload
firewall-cmd --permanent --zone=public --list-ports

docker mirror

創建/etc/docker/daemon.json。如果你不修改下載鏡像會很慢的。

cat << EOF > /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
systemctl restart docker
容器雲架構實踐-07


分享到:


相關文章: