目前已经搭建好k8s集群,一个Master节点,4个Node节点。内存资源总共约600G,需要进行虚拟化,资源的隔离与限制方便使用。
使用Centos基础镜像虚拟出若干linux镜像,方便服务部署等使用。
Centos基础镜像位置:
https://hub.docker.com/_/centos/
拉取镜像:
docker pull centos
基础镜像的使用:
基础镜像安装ssh服务:
启动sshd服务:
生成ssh验证文件:
[root@46506dfd57bb /]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""
Generating public/private rsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_rsa_key.
Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub.
The key fingerprint is:
SHA256:C+AfCEsdndDOzDBYCLZsgKfIp+zQ6Rppude+pCC14mc root@46506dfd57bb
The key's randomart image is:
+---[RSA 2048]----+
|+o +++ . |
|= =.o.+ |
|o*o oB |
|+o = o= |
|..=.o o S |
|.=+. . o . |
|B=. ... . |
|+++Eo. |
|.++..o. |
+----[SHA256]-----+
[root@46506dfd57bb /]# ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ""
Generating public/private ecdsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_ecdsa_key.
Your public key has been saved in /etc/ssh/ssh_host_ecdsa_key.pub.
The key fingerprint is:
SHA256:qu+Qlnr6gSAyr/9A+NBAd53ZvHXoGjIq76ot8I51rKg root@46506dfd57bb
The key's randomart image is:
+---[ECDSA 256]---+
| . . .. = . |
|. . . + o o . |
|. + . |
| + o o . |
|B o . S o |
|+B + + . . |
|..* @ . |
| *o*.= |
|E+OB*+o |
+----[SHA256]-----+
[root@46506dfd57bb /]# ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
Generating public/private ed25519 key pair.
Your identification has been saved in /etc/ssh/ssh_host_ed25519_key.
Your public key has been saved in /etc/ssh/ssh_host_ed25519_key.pub.
The key fingerprint is:
SHA256:gwRq6UtfORwQ1Rb2YtBYngD/v7AhmYoZNtuN6ZdGoLQ root@46506dfd57bb
The key's randomart image is:
+--[ED25519 256]--+
| =++=+. |
| o +.=+o |
| + +.= . |
| o. .o * . |
| .oo .* S |
| .Eo ..+ o |
| = ..+.o . |
| . B =+. + . |
| +.*o. . . |
+----[SHA256]-----+
修改/etc/ssh/sshd_config 中:
将配置文件中原本UsePAM yes
换成UsePAM no
允许远程root登录
[root@46506dfd57bb ssh]# vi sshd_config
[root@46506dfd57bb ssh]# passwd root
Changing password for user root.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
退出容器,将容器提交为新基础镜像:
[root@xjs-dn04 ~]# docker commit 465 docker.io/chenwenkai123456/centos_ssh
sha256:119bc03d6dc591a65455bbfe62d5a05452f76ba8486ca7be130c24cb67f44f2d
[root@xjs-dn04 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/chenwenkai123456/centos_ssh latest 119bc03d6dc5 3 seconds ago 305 MB
在docker hub中申请一个账号,用来存储镜像,也可以搭建自己的私有仓库。https://hub.docker.com/
[root@xjs-dn04 ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: chenwenkai123456
Password:
Login Succeeded
镜像上传到docker hub中:
[root@xjs-dn04 ~]# docker push docker.io/chenwenkai123456/centos_ssh:latest
The push refers to a repository [docker.io/chenwenkai123456/centos_ssh]
ae1efa863646: Pushed
f972d139738d: Pushed
latest: digest: sha256:2716209fc110e41460a0377673c0c495041294ccc386b8cd7baf00a077feb0d6 size: 741
此时可以使用docker pull命令来拉取刚才的镜像。
启动新容器:
[root@xjs-dn04 ~]# docker run -d -p 2222:22 docker.io/chenwenkai123456/centos_ssh:latest /usr/sbin/sshd -D
4aa4b16063de1074a4d9c875a9b35511d91de3cefec173251fa6b4b694a4520f
[root@xjs-dn04 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4aa4b16063de docker.io/chenwenkai123456/centos_ssh:latest "/usr/sbin/sshd -D" 3 seconds ago Up 3 seconds 0.0.0.0:2222->22/tcp peaceful_banach
登录测试ssh:
[root@xjs-dn04 ~]# ssh root@127.0.0.1 -p 2222
root@127.0.0.1's password:
[root@4aa4b16063de ~]# uname -r
3.10.0-327.el7.x86_64
[root@4aa4b16063de ~]# hostname
4aa4b16063de
服务器的内网ip为192.168.1.16 外网ip为10.3.10.149 通过防火墙NAT映射实现端口流量转发
10.3.10.149:2222-------192.168.1.16:2222
在16服务器使用ssh,结果出现内网可以ssh登录,外网不可以ssh登录,这里外网实际上也是公司的内网。
ssh root@10.3.10.149 -p 2222
ssh root@192.168.1.16 -p 2222
服务器的网络
内网到外网: 192.168.1.16---192.168.1.1--10.3.10.138(防火墙IP)---10.3.10.98(专线网关)---专线上网
外网到内网: 外网IP---公司网关---10.3.10.254----10.3.10.138(NAT映射)---192.168.1.16
在16服务器内部无法使用外网ip登录ssh,结果在自己电脑上可以登陆:
电脑IP 10.3.27.50 ---10.3.27.254----10.3.10. 254---10.3.10.138---192.168.1.16
现在由内向外以及由外向内使用两条不同线路,因此网络可能有点错乱。
docker run --name centos-ssh -d -p 2222:22 docker.io/chenwenkai123456/centos_ssh:latest /usr/sbin/sshd -D
docker run --name centos-ssh -d -p 2222:22 docker.io/chenwenkai123456/centos-ssh:v1 /usr/sbin/sshd -D
现在根据以上镜像来使用k8s部署启动:
定义Pod以及Service对象:
[root@Ac-private-1 centos]# cat centos-rc.yaml
---
kind: ReplicationController
apiVersion: v1
metadata:
name: centos-ssh
spec:
replicas: 1
template:
metadata:
labels:
name: centos-ssh
spec:
containers:
- name: centos-ssh
image: docker.io/chenwenkai123456/centos-ssh:v1
ports:
- containerPort: 22
protocol: TCP
command: ["/usr/sbin/sshd","-D"]
[root@Ac-private-1 centos]# cat centos-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: centos-svc
spec:
ports:
- name: centos-svc
port: 22
targetPort: 22
nodePort: 30005
selector:
app: centos-ssh
type: NodePort
结果发现ssh登录失败,好奇怪。
使用直接docker run centos镜像可以ssh成功,使用k8s yaml方式部署失败,可能是yaml配置有问题。
总感觉是公司网络ip产生冲突,内部IP使用dhcp来分配,但是服务器IP是static的,这样可能会冲突,当从外网访问内网时,可能会冲突。
更换镜像: 直接支持ssh登录
docker pull kinogmt/centos-ssh
启动容器:
docker run --name ct -p 22222:22 -d docker.io/kinogmt/centos-ssh
内网可以登陆,外网不可以:
[root@xjs-dn04 k8s]# ssh root@192.168.1.16 -p 22222
root@192.168.1.16's password:
[root@9f77646b277e ~]# exit
logout
Connection to 192.168.1.16 closed.
[root@xjs-dn04 k8s]# ssh root@10.3.10.149 -p 22222
ssh: connect to host 10.3.10.149 port 22222: Connection refused
感觉是IP冲突
使用k8s更换镜像来部署,发现内外网均不可以,k8s部署方式配置不正确。
仍要解决的问题:
ssh登录
内存,cpu,硬盘等资源的隔离与配额限制
nodeSelector将pod调度到指定node
使用deplyment来优化k8s部署方式
参考链接:
https://www.jianshu.com/p/e38c05cf076a?spm=a2c4e.11153940.blogcont508898.10.43bd25101X52jj