34 【kubernetes】安装手册

全文参考了两篇中文文档:

1,https://www.cnblogs.com/RainingNight/p/using-kubeadm-to-create-a-cluster.html

2,http://running.iteye.com/blog/2322634

注意:

运行命令是一定要区分是在master节点还是在pods节点上运行的,有些命令只能在master节点执行,有些命令只能在pods节点执行。这个要区分。

运行命令一定要区分清用户是谁,是root还是普通用户。

大步骤:

1,在master节点和pods节点上安装软件;

2,在master节点上启动kubernetes软件,并初始化master节点;

3,在从节点上启动kubernetes软件,并连接到master节点进行注册;

4,通过master启动一个pods,执行一个应用程序(nginx为例);

5,通过master启动一个服务,将刚才的应用程序关联到这个服务项上;

6,测试master的scale能力,根据服务名瞬间启动一个相同的pods;

1,在master节点和pods节点上安装软件

sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s http://packages.faasx.com/google/apt/doc/apt-key.gpg | sudo apt-key add -
sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.ustc.edu.cn/kubernetes/apt/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl

2,在master节点上启动kubernetes软件,并初始化master节点;

2.1,在master节点初始化一个cluster

由于网络原因,我们需要提前拉取k8s初始化需要用到的Images,并添加对应的k8s.gcr.io标签:

## 拉取镜像
docker pull reg.qiniu.com/k8s/kube-apiserver-amd64:v1.10.2
docker pull reg.qiniu.com/k8s/kube-controller-manager-amd64:v1.10.2
docker pull reg.qiniu.com/k8s/kube-scheduler-amd64:v1.10.2
docker pull reg.qiniu.com/k8s/kube-proxy-amd64:v1.10.2
docker pull reg.qiniu.com/k8s/etcd-amd64:3.1.12
docker pull reg.qiniu.com/k8s/pause-amd64:3.1

## 添加Tag
docker tag reg.qiniu.com/k8s/kube-apiserver-amd64:v1.10.2 k8s.gcr.io/kube-apiserver-amd64:v1.10.2
docker tag reg.qiniu.com/k8s/kube-scheduler-amd64:v1.10.2 k8s.gcr.io/kube-scheduler-amd64:v1.10.2
docker tag reg.qiniu.com/k8s/kube-controller-manager-amd64:v1.10.2 k8s.gcr.io/kube-controller-manager-amd64:v1.10.2
docker tag reg.qiniu.com/k8s/kube-proxy-amd64:v1.10.2 k8s.gcr.io/kube-proxy-amd64:v1.10.2
docker tag reg.qiniu.com/k8s/etcd-amd64:3.1.12 k8s.gcr.io/etcd-amd64:3.1.12
docker tag reg.qiniu.com/k8s/pause-amd64:3.1 k8s.gcr.io/pause-amd64:3.1

## 在Kubernetes 1.10 中,增加了CoreDNS,如果使用CoreDNS(默认关闭),则不需要下面三个镜像。
docker pull reg.qiniu.com/k8s/k8s-dns-sidecar-amd64:1.14.10
docker pull reg.qiniu.com/k8s/k8s-dns-kube-dns-amd64:1.14.10
docker pull reg.qiniu.com/k8s/k8s-dns-dnsmasq-nanny-amd64:1.14.10

docker tag reg.qiniu.com/k8s/k8s-dns-sidecar-amd64:1.14.10 k8s.gcr.io/k8s-dns-sidecar-amd64:1.14.10
docker tag reg.qiniu.com/k8s/k8s-dns-kube-dns-amd64:1.14.10 k8s.gcr.io/k8s-dns-kube-dns-amd64:1.14.10
docker tag reg.qiniu.com/k8s/k8s-dns-dnsmasq-nanny-amd64:1.14.10 k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64:1.14.10

2.2,初始化cluster

<master-node>: sudo kubeadm init --pod-network-cidr=192.168.0.0/16注意这里的输出最好能记录在text中,因为后面会用到

2.3,将kubernetes的配置项放到普通用户目录下

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

这样kubectl会自动寻址到config文件,不用依赖一个严格的root可读的config

2.4,安装各种软件(https://docs.projectcalico.org/v3.3/getting-started/kubernetes/)

2.4.1 安装etcd
kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/etcd.yaml

2.4.2 安装rbac
kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/rbac.yaml

2.4.3 安装calico
kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/calico.yaml

2.4.4 确认安装成功
watch kubectl get pods --all-namespaces
结束后Ctrl + C

2.4.5 再次确认
kubectl get nodes -o wide

2.5 在从节点启动kubernetes软件

在从节点上执行:sudo kubeadm join 192.168.0.8:6443 --token vtyk9m.g4afak37myq3rsdi --discovery-token-ca-cert-hash sha256:19246ce11ba3fc633fe0b21f2f8aaaebd7df9103ae47138dc0dd615f61a32d99 
这里的命令要和2.2的输出保持一致(几个参数可能不一致,按照自己的输出自行修改即可)

如果2.2的输出已经没法找到,可以用以下命令再次得到join语句。
在主节点上执行:
kubeadm token create --print-join-command

然后再在从节点上执行以上得到的join语句
2.6,确认主从节点已经完成启动,需要等几分钟:
主节点上执行
kubectl get nodes
3,创建可用的pod3.1,创建一个nginx的镜像当做pod内的应用程序
主节点上执行:kubectl run my-nginx --image=nginx --replicas=1 --port=80 
3.2,确认pod已经生成
主节点上执行:

kubectl get pods
3.3,将该pods发布到kubernetes上,作为一个服务
[email protected]:~/download/k8s$ kubectl expose deployment my-nginx --port=8080 --target-port=80
service/my-nginx exposed

 3.4,查看服务是否已经生成

[email protected]:~$ kubectl get services
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
kubernetes   ClusterIP   10.96.0.1     <none>        443/TCP    108m
my-nginx     ClusterIP   10.98.38.80   <none>        8080/TCP   91m
3.5,访问该服务
[email protected]:~$ kubectl describe service/my-nginx
Name:              my-nginx
Namespace:         default
Labels:            run=my-nginx
Annotations:       <none>
Selector:          run=my-nginx
Type:              ClusterIP
IP:                10.98.38.80
Port:              <unset>  8080/TCP
TargetPort:        80/TCP
Endpoints:         192.168.244.65:80
Session Affinity:  None
Events:            <none>
获取到IP和port
从节点上执行:[email protected]:~$ curl 10.98.38.80:8080

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

4,扩容该service的pods数4.1,查看扩容前的pods数
[email protected]:~$ kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
my-nginx-756f645cd7-mg45n   1/1     Running   0          98m

4.2,执行扩容

[email protected]:~$ kubectl scale deployment my-nginx --replicas=2
deployment.extensions/my-nginx scaled

4.3,查看扩容后的pods信息

[email protected]:~$ kubectl get pods
NAME                        READY   STATUS              RESTARTS   AGE
my-nginx-756f645cd7-dww7g   0/1     ContainerCreating   0          6s
my-nginx-756f645cd7-mg45n   1/1     Running             0          98m

4.4,查看service的信息

[email protected]:~$ kubectl describe service/my-nginx
Name:              my-nginx
Namespace:         default
Labels:            run=my-nginx
Annotations:       <none>
Selector:          run=my-nginx
Type:              ClusterIP
IP:                10.98.38.80
Port:              <unset>  8080/TCP
TargetPort:        80/TCP
Endpoints:         192.168.244.65:80,192.168.244.66:80
Session Affinity:  None
Events:            <none>

4.4,反向验证pods和service的对应

[email protected]:~$ kubectl describe pods | grep IP
IP:                 192.168.244.66
IP:                 192.168.244.65

4.5,访问新的service

[email protected]:~$ curl 10.98.38.80:8080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

5,使用完毕后清理cluster信息

5.1,清除node数据

主节点上执行kubectl drain <node name> --delete-local-data --force --ignore-daemonsets

5.2,删除node节点

主节点上执行kubectl delete node <node name>

5.3,收回cluster信息

在要移除的节点上,执行:
sudo kubeadm reset
输出结果:
[email protected]:~$ sudo kubeadm reset
[sudo] password for luwenwei:
[reset] WARNING: changes made to this host by ‘kubeadm init‘ or ‘kubeadm join‘ will be reverted.
[reset] are you sure you want to proceed? [y/N]: y
[preflight] running pre-flight checks
[reset] stopping the kubelet service
[reset] unmounting mounted directories in "/var/lib/kubelet"
[reset] no etcd manifest found in "/etc/kubernetes/manifests/etcd.yaml". Assuming external etcd
[reset] please manually reset etcd to prevent further issues
[reset] deleting contents of stateful directories: [/var/lib/kubelet /etc/cni/net.d /var/lib/dockershim /var/run/kubernetes]
[reset] deleting contents of config directories: [/etc/kubernetes/manifests /etc/kubernetes/pki]
[reset] deleting files: [/etc/kubernetes/admin.conf /etc/kubernetes/kubelet.conf /etc/kubernetes/bootstrap-kubelet.conf /etc/kubernetes/controller-manager.conf /etc/kubernetes/scheduler.conf



原文地址:https://www.cnblogs.com/helww/p/10040819.html

时间: 2024-10-10 19:00:44

34 【kubernetes】安装手册的相关文章

centos7 kubernetes安装手册

安装之前,将三台centos7服务器禁止防火墙,同时需要启动的镜像2台node机器都要保持时间一致,否则pod不能启动 1 有三台centos7服务器:10.1.1.170(master),10.1.1.169 node1,10.1.1.171 node2 2 在三台机器上安装ntp服务,以保证所有时间可以同步 #yum -y install ntp #systemctl start ntpd #systemctl enable ntpd 3 在10.1.1.170上安装kubernetes m

kubernetes 安装手册(成功版)

管理组件采用staticPod或者daemonSet形式跑的,宿主机os能跑docker应该本篇教程能大多适用安装完成仅供学习和实验 本次安裝的版本: Kubernetes v1.10.0 (1.10.0和1.10.3亲测成功) CNI v0.6.0 Etcd v3.1.13 Calico v3.0.4 Docker CE latest version(18.03) 节点信息本教学将以下列节点数与规格来进行部署Kubernetes集群,系统可采用Ubuntu 16.x与CentOS 7.x IP

友推-为应用集成分享功能安装手册

友推SDK是一款是面向移动应用的SDK组件,提供给开发者集成使用. 通过友推,开发者几行代码就可以为应用添加分享送积分功能,并提供详尽的统计报表,除了本身具备的分享功能 外,开发者也可将积分功能单独集成在已有分享组件的app上,让您的应用更好地通过用户的主动推荐触达新用户. 下载地址:http://youtui.mobi/download/index.htm 开发文档:http://youtui.mobi/doc/index.htm 功能: 1.支持微信,QQ,新浪微博,QQ空间,短信,邮件等多

1.Storm 安装手册和提交Topology

目录 (一)搭建单机storm集群 一.下载所需要的资源 二.资源解压 三.安装JDK 四.安装依赖的库文件 五.安装ZMQ 六.安装jzmq 七.启动zookeeper 八.启动storm 九.在UI端访问 十.编译storm-start jar包 十一.storm-starter源码导出 十二.提交Topology (二)搭建多机storm集群 一.基本设置 二.修改配置文件 三.启动集群 四.在UI端口访问 五.提交Topology 附一 Storm 安装手册 (一)搭建单机storm集群

Nginx安装手册以及图片服务器部署

1.      安装gcc yum install gcc 2.      安装pcre,pcre-devel 在zhoulh目录下建立source build目录 mkdir source build 进入build目录 创建pcre目录 cd pcre wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.35.zip pcre的版本随着时间可能会变动,可以进入 ftp://ftp.csx.cam.ac.uk/pu

为 Joomla 而生的 Kunena 论坛安装手册

查看并下载最新版本Kunena论坛,或直接下载Kunena1.7.2.如果你打算在Joomla网站中安装一个论坛,可以考虑一下Kunena论坛组件,一个为Joomla而生的免费的开源论坛组件. 安装:使用Joomla的扩展管理,浏览到下载下来的Kunena论坛组件,上传并安装,看到安装界面,点击“安装Kunena 1.7.2”,稍等一会儿,一切都OK以后完成安装. 创建菜单:使用Joomla的菜单管理,创建一个Kunena论坛“入口页面”类型的菜单项,用户可以通过这个菜单项打开查看Kunena论

Nginx安装手册

前提是搭建yum安装环境,见前面的教程资料 Nginx安装手册1 nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境.? gcc 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++ ? PCRE PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库.nginx的http

Oracle 11g R2安装手册(图文教程)For Windows

1.Oracle 11g R2安装手册(图文教程)For Windows 1.下载Oracle 11g R2 for Windows版本,下载地址如下 官方网站: http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2_database_1of2.zip http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2_database_2of2.zip 2.解压两个

zabbix2.2.2完美安装手册

安装环境:centos6.6 64bit 第一章 Zabbix简介 Zabbix是一个基于Web界面提供分布式系统监视以及网络监视功能的企业级的开源解决方案.它能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题. 基本功能 数据采集方式:zabbix agent,agent(active),SNMP,SSH等 数据存储方式:RDBMS,如MySQL,Pgsql等 数据展示方式:php,web,gui 报警功能:支持报警升级 第二章 Zab

funtoo 安装手册阅读 (博客第 100 篇文章纪念)

*/--> pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;}