文章首發(fā)于 http://blog.yubangweb.com/k8sshi-jian-bi-ji/ 泛豪,力求最簡單快捷配置好kubernetes集群
配置背景介紹
為什么要用kubernetes這么復(fù)雜的docker集群管理工具呢稠诲?一開始接觸了docker內(nèi)置的swarm,這個(gè)工具非常簡單快捷的完成docker集群功能候址。但是在使用docker1.13內(nèi)置的swarm做集群的時(shí)候遇到vip負(fù)載均衡沒有正確映射端口到外網(wǎng)吕粹,或者出現(xiàn)地址被占用的情況种柑,這對(duì)高可用性的需求是不利的岗仑,然而又沒找到一個(gè)解決方案,只能轉(zhuǎn)投k8s聚请。
實(shí)驗(yàn)環(huán)境
- 騰訊云
- centos7.3 64位
安裝
yum-config-manager --add-repo https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo
yum makecache fast
yum -y install docker-engine-1.13.1
yum install epel-release -y
yum remove -y docker-engine*
yum install -y kubernetes etcd docker flannel
修改配置文件
注意下面的10.135.163.237換成自己服務(wù)器ip
sed -i "s/localhost:2379/10.135.163.237:2379/g" /etc/etcd/etcd.conf
sed -i "s/localhost:2380/10.135.163.237:2380/g" /etc/etcd/etcd.conf
sed -i "s/10.135.163.237:2379/10.135.163.237:2379,http:\/\/127.0.0.1:2379/g" /etc/etcd/etcd.conf
sed -i "s/127.0.0.1:2379/10.135.163.237:2379/g" /etc/kubernetes/apiserver
sed -i "s/--insecure-bind-address=127.0.0.1/--insecure-bind-address=0.0.0.0/g" /etc/kubernetes/apiserver
sed -i "s/--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota/--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota/g" /etc/kubernetes/apiserver
sed -i "s/--hostname-override=127.0.0.1/--hostname-override=10.135.163.237/g" /etc/kubernetes/kubelet
sed -i "s/127.0.0.1:8080/10.135.163.237:8080/g" /etc/kubernetes/kubelet
sed -i "s/--address=127.0.0.1/--address=0.0.0.0/g" /etc/kubernetes/kubelet
sed -i "s/127.0.0.1:8080/10.135.163.237:8080/g" /etc/kubernetes/config
sed -i "s/127.0.0.1:2379/10.135.163.237:2379/g" /etc/sysconfig/flanneld
修改host
vi /etc/hosts
10.135.163.237 k8s_master
添加網(wǎng)絡(luò)
systemctl enable etcd.service
systemctl start etcd.service
etcdctl mk //atomic.io/network/config '{"Network":"172.17.0.0/16"}'
啟動(dòng)服務(wù)
service docker start
for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler kube-proxy kubelet docker flanneld ; do systemctl restart $SERVICES; systemctl enable $SERVICES; systemctl status $SERVICES; done;
第一個(gè)demo
編寫文件a.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 2
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: registry.alauda.cn/yubang/paas_base_test
ports:
- containerPort: 80
command: ["/bin/bash", "/var/start.sh"]
resources:
limits:
cpu: 0.5
memory: 64Mi
編寫文件b.yaml
apiVersion: v1
kind: Service
metadata:
name: my-app-svc
labels:
app: my-app
spec:
ports:
- port: 80
targetPort: 80
nodePort: 30964
type: NodePort
selector:
app: my-app
創(chuàng)建服務(wù)
kubectl create -f a.yaml --validate
kubectl create -f b.yaml --validate
刪除服務(wù)
kubectl delete -f a.yaml
kubectl delete -f b.yaml
增加子節(jié)點(diǎn)
安裝軟件
yum-config-manager --add-repo https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo
yum makecache fast
yum -y install docker-engine-1.13.1
yum install epel-release -y
yum remove -y docker-engine*
yum install -y kubernetes docker flannel
修改配置文件(10.135.163.237為主節(jié)點(diǎn)ip荠雕,139.199.0.29為當(dāng)前節(jié)點(diǎn)ip)
sed -i "s/--hostname-override=127.0.0.1/--hostname-override=139.199.0.29/g" /etc/kubernetes/kubelet
sed -i "s/127.0.0.1:8080/10.135.163.237:8080/g" /etc/kubernetes/kubelet
sed -i "s/--address=127.0.0.1/--address=0.0.0.0/g" /etc/kubernetes/kubelet
sed -i "s/127.0.0.1:8080/10.135.163.237:8080/g" /etc/kubernetes/config
sed -i "s/127.0.0.1:2379/10.135.163.237:2379/g" /etc/sysconfig/flanneld
sed -i "s/--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota/--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota/g" /etc/kubernetes/apiserver
啟動(dòng)服務(wù)
service docker start
for SERVICES in kube-proxy kubelet docker flanneld; do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done;
在主服務(wù)器查看節(jié)點(diǎn)
kubectl get node
重啟服務(wù)(重新加入集群)
systemctl restart kube-apiserver.service
刪除節(jié)點(diǎn)
kubectl delete node 節(jié)點(diǎn)ip