k8s1.5.2的安裝

  • 2019 年 10 月 29 日
  • 筆記

一、環境要求

1、linux 內核3.10以上

2、64位系統

3、記憶體4G

4、安裝docker

設定集群

master = 192.168.206.130

minion1 = 192.168.206.131

minion2 = 192.168.206.132

二、安裝master

yum install -y kubernetes etcd flannel

三、修改/etc/kubernetes/apiserver

KUBE_API_ADDRESS="–insecure-bind-address=172.16.138.101" 也可改成0.0.0.0比較危險

KUBE_ADMISSION_CONTROL 欄位中去掉ServiceAccount  不要這個准入機制

配置文件

vim /etc/kubernetes/config

KUBE_LOGTOSTDERR="–logtostderr=true"

KUBE_LOG_LEVEL="–v=0"

KUBE_ALLOW_PRIV="–allow-privileged=false"

KUBE_MASTER="–master=http://master:8080"  (也可寫成IP)

修改/etc/hosts

192.168.206.130 master

192.168.206.131 node01

192.168.206.132 node02

六、配置etcd

在master:

vim /etc/etcd/etcd.conf

ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"  (自己的指定ip也可)

ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"

vim /etc/kubernetes/apiserver

KUBE_API_ADDRESS="–insecure-bind-address=0.0.0.0"

KUBE_API_PORT="–port=8080"

KUBELET_PORT="–kubelet-port=10250"

KUBE_ETCD_SERVERS="–etcd-servers=http://127.0.0.1:2379"

KUBE_SERVICE_ADDRESSES="–service-cluster-ip-range=10.254.0.0/16"

KUBE_ADMISSION_CONTROL="–admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

KUBE_API_ARGS=""

七、註冊FLANNEL 

在master:

service etcd start

etcdctl mkdir /kube-centos/network

etcdctl mk /kube-centos/network/config "{ "Network": "172.30.0.0/16", "SubnetLen": 24, "Backend": { "Type": "vxlan" } }"

172.30是自己定義的B類的,後面它自己會分配C類的地址,以172.30開頭

配置flannel

vim /etc/sysconfig/flanneld

FLANNEL_ETCD="http://master:2379"

FLANNEL_ETCD_KEY="/kube-centos/network"

FLANNEL_OPTIONS=""

註:#FLANNEL_ETCD_PREFIX="/atomic.io/network" 這句注釋掉,用這句

FLANNEL_ETCD_KEY="/kube-centos/network"

五、關閉所有防火牆和selinux

systemctl disable iptables.services firewalld

systemctl stop iptables.services firewalld

重啟服務:

for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler flanneld; do

systemctl restart $SERVICES

systemctl enable $SERVICES

systemctl status $SERVICES

done

可選

kubectl config set-cluster default-cluster –server=http://master:8080

kubectl config set-context default-context –cluster=default-cluster –user=default-admin

kubectl config use-context default-context

二、配置節點

1、yum install -y kubernetes-node flannel

echo "

192.168.206.130master

192.168.206.131node01

192.168.206.132 node02" >> /etc/hosts

配置文件

vim /etc/kubernetes/config

KUBE_LOGTOSTDERR="–logtostderr=true"

KUBE_LOG_LEVEL="–v=0"

KUBE_ALLOW_PRIV="–allow-privileged=false"

KUBE_MASTER="–master=http://master:8080"

vim /etc/kubernetes/kubelet

KUBELET_ADDRESS="–address=0.0.0.0"

KUBELET_HOSTNAME="–hostname-override=minion2"

KUBELET_API_SERVER="–api-servers=http://master:8080"

#把pause地址改為自己下載的pause-amd64:3.0 在harbor中的地址

KUBELET_POD_INFRA_CONTAINER="–pod-infra-container-p_w_picpath=docker.io/kubernetes/pause:2.0"

KUBELET_ARGS=""

其實注意KUBELET_POD_INFRA_CONTAINER="–pod-infra-container-p_w_picpath=192.168.206.153/myproject/pause:2.0"

配置flannel

vim /etc/sysconfig/flanneld

FLANNEL_ETCD="http://master:2379"

FLANNEL_ETCD_KEY="/kube-centos/network"

FLANNEL_OPTIONS=""

重啟相關服務

for SERVICES in kube-proxy kubelet flanneld docker; do

    systemctl restart $SERVICES

    systemctl enable $SERVICES

    systemctl status $SERVICES

done

看節點註冊上來沒有

kubectl get node

kubectl get node -w

三、配置DASHBOARD

注意所有master和node節點

/etc/sysconfig/docker

ADD_REGISTRY='–insecure-registry 192.168.206.129' (HABOR的地址)

下載yaml文件,文件位置/root/kubernetes-dashboard.yaml(在harbor里有)

修改如下欄位:

p_w_picpath: 192.168.206.129/kube/k8s-dashboard:1.6.0

p_w_picpathPullPolicy: IfNotPresent

– –apiserver-host=http://master:8080

安裝資源 kubectl create -f kubernetes-dashboard.yaml

        獲得狀態kubectl get pod –namespace=kube-system

        查錯:kubectl describe pod –namespace=kube-system (排錯用)

成功後可看到K8S的介面

補充:其實K8S的網路組件選擇很多,默認是flannel,但可以根據自己的需要選擇calico、weave、RR,calico性能最好,weave和flannel差不多。Addons中有配置好的yaml,部署環境使用的阿里雲的VPC,官方提供的flannel.yaml創建的flannel網路有點小問題。

    還有kubeadm是Kubernetes官方推出的快速部署Kubernetes集群工具,其思路是將Kubernetes相關服務容器化(Kubernetes靜態Pod)以簡化部署。但kubeadm當前處於beta階段,不建議生產環境使用(比如etcd單點)。使用kubeadm部署Kubernetes集群非常簡單方便,部署過程與之類似。