在CentOS 7+ 安裝Kubernetes入門(單Master)


TL;DR;

  科學上網,科學上網,科學上網,重要的事情說三次。如果不會科學上網,這篇文章就沒有看下去的意義。作為一個技術人員如果不願意折騰,很難有所作為。作為一個單純的技術人員,最好把心思放在技術上,做到真正的科學上網。這里不會教如何科學上網,請大家自行摸索。

 

服務器

名稱 操作系統 配置 IP
master CentOS 7 4核2G內存 192.168.132.132
node1 CentOS 7 2核2G內存 192.168.132.130

 

 

 

 

Master安裝

1. 修改主機名為master。

hostnamectl set-hostname master

 

2. 關閉防火牆和selinux

systemctl stop firewalld

systemctl disable firewalld

 

vi /etc/selinux/config,將SELINUX=enforcing改為SELINUX=disabled,重啟機器

 

 

3.安裝docker

yum install -y docker

systemctl enable docker && systemctl start docker

 

docker info查看docker信息,記錄docker的版本,以及cgroup信息:

 

Docker從1.13版本開始調整了默認的防火牆規則,禁用了iptables filter表中FOWARD鏈,這樣會引起Kubernetes集群中跨Node的Pod無法通信,需要執行以下指令:

systemctl stop docker 

iptables -P FORWARD ACCEPT

systemctl start docker 

 

4. 設置net.bridge.bridge-nf-call-iptables

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

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

 

5. 掛代理(科學上網)

export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
export no_proxy="localhost, 192.168.132.132"    #192.168.132.132為master主機IP

 

cat <<EOF >> /etc/sysconfig/docker
HTTP_PROXY='http://127.0.0.1:8118'
HTTPS_PROXY='http://127.0.0.1:8118'
EOF

systemctl restart docker 

 

6. 安裝kubeadm, kubelet, kubectl

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

 

yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

 

 7. 配置cgroup,使/etc/systemd/system/kubelet.service.d/10-kubeadm.conf中的cgroup的值和docker info中的cgroup一致。然后重啟kubelet:

systemctl daemon-reload
systemctl restart kubelet

 

8.更新yum獲取最新的kubeadm

yum update

 

9. 關閉系統的Swap:

swapoff -a

 

10. kubeadm init,這里選用Calico的網絡,因此設置--pod-network-cidr=192.168.0.0/16。

kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=192.168.132.132

 

漫長等待,下載鏡像會比較耗時,如果長時間沒反應,而且沒有下載鏡像的話,可以kubeadm reset,重啟kubelet,再kubeadm init 。直到成功,看到以下界面:

記錄下加入節點的指令:kubeadm join ...

 

11. 設置kubelet config

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

 

export KUBECONFIG=/etc/kubernetes/admin.conf

 

12. 安裝網絡,這里使用Calico。

kubectl apply -f https://docs.projectcalico.org/v3.0/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml

 

Node安裝

按照Master安裝的1-9步驟進行安裝。其中調整如下:

1. 修改主機名為nodex(這里是node1)。

hostnamectl set-hostname node1

 

5. 掛代理(科學上網)

export http_proxy=http://127.0.0.1:8118 
export https_proxy=http://127.0.0.1:8118
export no_proxy="localhost, 192.168.132.132, 192.168.132.130"    #192.168.132.132為master主機IP,192.168.132.130為node1主機IP

 

cat <<EOF >> /etc/sysconfig/docker
HTTP_PROXY='http://127.0.0.1:8118'
HTTPS_PROXY='http://127.0.0.1:8118'
EOF

systemctl restart docker 

 

10. 執行安裝Master時輸出的kubeadm join ...

 

在Master上執行kubectl get nodes查看添加結果:

 

11. 給node打標簽(可選)

kubectl label node node1 kubernetes.io/role=node

補充說明:拉取鏡像有時會比較耗時,請耐心等待,相同的鏡像可以考慮從master拷貝。

 

12. 部署一個nginx檢查一下(可選)

 nginx.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx
  labels:
    app: nginx
  namespace: default
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeSelector:
        kubernetes.io/role: node
      containers:
      - name: nginx
        image: nginx:1.13
        ports:
        - containerPort: 80

---

kind: Service
apiVersion: v1
metadata:
  name: nginx
  labels:
    app: nginx
  namespace: default
spec:
  selector:
    app: nginx
  type: NodePort
  ports:
  - name: nginx
    nodePort: 30000
    port: 80
    protocol: TCP
    targetPort: 80

 

使用Node1的地址http://192.168.132.130:30000/進行訪問:

 

參考資料

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

https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/

https://brickyang.github.io/2017/01/14/CentOS-7-%E5%AE%89%E8%A3%85-Shadowsocks-%E5%AE%A2%E6%88%B7%E7%AB%AF/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM